bash-explainer 0.1.1 → 0.2.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (3) hide show
  1. package/README.md +59 -2
  2. package/dist/cli.js +93 -82
  3. package/package.json +1 -1
package/dist/cli.js CHANGED
@@ -1,54 +1,54 @@
1
1
  #!/usr/bin/env node
2
- "use strict";var Oa=Object.create;var Ot=Object.defineProperty;var Pa=Object.getOwnPropertyDescriptor;var La=Object.getOwnPropertyNames;var ja=Object.getPrototypeOf,qa=Object.prototype.hasOwnProperty;var Ua=(s,e)=>()=>{try{return e||s((e={exports:{}}).exports,e),e.exports}catch(t){throw e=0,t}},Da=(s,e)=>{for(var t in e)Ot(s,t,{get:e[t],enumerable:!0})},Ps=(s,e,t,n)=>{if(e&&typeof e=="object"||typeof e=="function")for(let r of La(e))!qa.call(s,r)&&r!==t&&Ot(s,r,{get:()=>e[r],enumerable:!(n=Pa(e,r))||n.enumerable});return s};var Ls=(s,e,t)=>(t=s!=null?Oa(ja(s)):{},Ps(e||!s||!s.__esModule?Ot(t,"default",{value:s,enumerable:!0}):t,s)),za=s=>Ps(Ot({},"__esModule",{value:!0}),s);var Ea=Ua((exports,module)=>{var Module=Module!==void 0?Module:{},TreeSitter=(function(){var initPromise,document=typeof window=="object"?{currentScript:window.document.currentScript}:null;class Parser{constructor(){this.initialize()}initialize(){throw new Error("cannot construct a Parser before calling `init()`")}static init(moduleOptions){return initPromise||(Module=Object.assign({},Module,moduleOptions),initPromise=new Promise((resolveInitPromise=>{var moduleOverrides=Object.assign({},Module),arguments_=[],thisProgram="./this.program",quit_=(s,e)=>{throw e},ENVIRONMENT_IS_WEB=typeof window=="object",ENVIRONMENT_IS_WORKER=typeof importScripts=="function",ENVIRONMENT_IS_NODE=typeof process=="object"&&typeof process.versions=="object"&&typeof process.versions.node=="string",scriptDirectory="",read_,readAsync,readBinary;function locateFile(s){return Module.locateFile?Module.locateFile(s,scriptDirectory):scriptDirectory+s}if(ENVIRONMENT_IS_NODE){var fs=require("fs"),nodePath=require("path");scriptDirectory=ENVIRONMENT_IS_WORKER?nodePath.dirname(scriptDirectory)+"/":__dirname+"/",read_=(s,e)=>(s=isFileURI(s)?new URL(s):nodePath.normalize(s),fs.readFileSync(s,e?void 0:"utf8")),readBinary=s=>{var e=read_(s,!0);return e.buffer||(e=new Uint8Array(e)),e},readAsync=(s,e,t,n=!0)=>{s=isFileURI(s)?new URL(s):nodePath.normalize(s),fs.readFile(s,n?void 0:"utf8",((r,a)=>{r?t(r):e(n?a.buffer:a)}))},!Module.thisProgram&&process.argv.length>1&&(thisProgram=process.argv[1].replace(/\\/g,"/")),arguments_=process.argv.slice(2),typeof module<"u"&&(module.exports=Module),quit_=(s,e)=>{throw process.exitCode=s,e}}else(ENVIRONMENT_IS_WEB||ENVIRONMENT_IS_WORKER)&&(ENVIRONMENT_IS_WORKER?scriptDirectory=self.location.href:document!==void 0&&document.currentScript&&(scriptDirectory=document.currentScript.src),scriptDirectory=scriptDirectory.startsWith("blob:")?"":scriptDirectory.substr(0,scriptDirectory.replace(/[?#].*/,"").lastIndexOf("/")+1),read_=s=>{var e=new XMLHttpRequest;return e.open("GET",s,!1),e.send(null),e.responseText},ENVIRONMENT_IS_WORKER&&(readBinary=s=>{var e=new XMLHttpRequest;return e.open("GET",s,!1),e.responseType="arraybuffer",e.send(null),new Uint8Array(e.response)}),readAsync=(s,e,t)=>{var n=new XMLHttpRequest;n.open("GET",s,!0),n.responseType="arraybuffer",n.onload=()=>{n.status==200||n.status==0&&n.response?e(n.response):t()},n.onerror=t,n.send(null)});var out=Module.print||console.log.bind(console),err=Module.printErr||console.error.bind(console);Object.assign(Module,moduleOverrides),moduleOverrides=null,Module.arguments&&(arguments_=Module.arguments),Module.thisProgram&&(thisProgram=Module.thisProgram),Module.quit&&(quit_=Module.quit);var dynamicLibraries=Module.dynamicLibraries||[],wasmBinary,wasmMemory;Module.wasmBinary&&(wasmBinary=Module.wasmBinary),typeof WebAssembly!="object"&&abort("no native wasm support detected");var ABORT=!1,EXITSTATUS,HEAP8,HEAPU8,HEAP16,HEAPU16,HEAP32,HEAPU32,HEAPF32,HEAPF64;function updateMemoryViews(){var s=wasmMemory.buffer;Module.HEAP8=HEAP8=new Int8Array(s),Module.HEAP16=HEAP16=new Int16Array(s),Module.HEAPU8=HEAPU8=new Uint8Array(s),Module.HEAPU16=HEAPU16=new Uint16Array(s),Module.HEAP32=HEAP32=new Int32Array(s),Module.HEAPU32=HEAPU32=new Uint32Array(s),Module.HEAPF32=HEAPF32=new Float32Array(s),Module.HEAPF64=HEAPF64=new Float64Array(s)}var INITIAL_MEMORY=Module.INITIAL_MEMORY||33554432;wasmMemory=Module.wasmMemory?Module.wasmMemory:new WebAssembly.Memory({initial:INITIAL_MEMORY/65536,maximum:32768}),updateMemoryViews(),INITIAL_MEMORY=wasmMemory.buffer.byteLength;var __ATPRERUN__=[],__ATINIT__=[],__ATMAIN__=[],__ATPOSTRUN__=[],__RELOC_FUNCS__=[],runtimeInitialized=!1;function preRun(){if(Module.preRun)for(typeof Module.preRun=="function"&&(Module.preRun=[Module.preRun]);Module.preRun.length;)addOnPreRun(Module.preRun.shift());callRuntimeCallbacks(__ATPRERUN__)}function initRuntime(){runtimeInitialized=!0,callRuntimeCallbacks(__RELOC_FUNCS__),callRuntimeCallbacks(__ATINIT__)}function preMain(){callRuntimeCallbacks(__ATMAIN__)}function postRun(){if(Module.postRun)for(typeof Module.postRun=="function"&&(Module.postRun=[Module.postRun]);Module.postRun.length;)addOnPostRun(Module.postRun.shift());callRuntimeCallbacks(__ATPOSTRUN__)}function addOnPreRun(s){__ATPRERUN__.unshift(s)}function addOnInit(s){__ATINIT__.unshift(s)}function addOnPostRun(s){__ATPOSTRUN__.unshift(s)}var runDependencies=0,runDependencyWatcher=null,dependenciesFulfilled=null;function getUniqueRunDependency(s){return s}function addRunDependency(s){runDependencies++,Module.monitorRunDependencies?.(runDependencies)}function removeRunDependency(s){if(runDependencies--,Module.monitorRunDependencies?.(runDependencies),runDependencies==0&&(runDependencyWatcher!==null&&(clearInterval(runDependencyWatcher),runDependencyWatcher=null),dependenciesFulfilled)){var e=dependenciesFulfilled;dependenciesFulfilled=null,e()}}function abort(s){throw Module.onAbort?.(s),err(s="Aborted("+s+")"),ABORT=!0,EXITSTATUS=1,s+=". Build with -sASSERTIONS for more info.",new WebAssembly.RuntimeError(s)}var dataURIPrefix="data:application/octet-stream;base64,",isDataURI=s=>s.startsWith(dataURIPrefix),isFileURI=s=>s.startsWith("file://"),wasmBinaryFile;function getBinarySync(s){if(s==wasmBinaryFile&&wasmBinary)return new Uint8Array(wasmBinary);if(readBinary)return readBinary(s);throw"both async and sync fetching of the wasm failed"}function getBinaryPromise(s){if(!wasmBinary&&(ENVIRONMENT_IS_WEB||ENVIRONMENT_IS_WORKER)){if(typeof fetch=="function"&&!isFileURI(s))return fetch(s,{credentials:"same-origin"}).then((e=>{if(!e.ok)throw`failed to load wasm binary file at '${s}'`;return e.arrayBuffer()})).catch((()=>getBinarySync(s)));if(readAsync)return new Promise(((e,t)=>{readAsync(s,(n=>e(new Uint8Array(n))),t)}))}return Promise.resolve().then((()=>getBinarySync(s)))}function instantiateArrayBuffer(s,e,t){return getBinaryPromise(s).then((n=>WebAssembly.instantiate(n,e))).then(t,(n=>{err(`failed to asynchronously prepare wasm: ${n}`),abort(n)}))}function instantiateAsync(s,e,t,n){return s||typeof WebAssembly.instantiateStreaming!="function"||isDataURI(e)||isFileURI(e)||ENVIRONMENT_IS_NODE||typeof fetch!="function"?instantiateArrayBuffer(e,t,n):fetch(e,{credentials:"same-origin"}).then((r=>WebAssembly.instantiateStreaming(r,t).then(n,(function(a){return err(`wasm streaming compile failed: ${a}`),err("falling back to ArrayBuffer instantiation"),instantiateArrayBuffer(e,t,n)}))))}function createWasm(){var s={env:wasmImports,wasi_snapshot_preview1:wasmImports,"GOT.mem":new Proxy(wasmImports,GOTHandler),"GOT.func":new Proxy(wasmImports,GOTHandler)};function e(t,n){wasmExports=t.exports,wasmExports=relocateExports(wasmExports,1024);var r=getDylinkMetadata(n);return r.neededDynlibs&&(dynamicLibraries=r.neededDynlibs.concat(dynamicLibraries)),mergeLibSymbols(wasmExports,"main"),LDSO.init(),loadDylibs(),addOnInit(wasmExports.__wasm_call_ctors),__RELOC_FUNCS__.push(wasmExports.__wasm_apply_data_relocs),removeRunDependency("wasm-instantiate"),wasmExports}if(addRunDependency("wasm-instantiate"),Module.instantiateWasm)try{return Module.instantiateWasm(s,e)}catch(t){return err(`Module.instantiateWasm callback failed with error: ${t}`),!1}return instantiateAsync(wasmBinary,wasmBinaryFile,s,(function(t){e(t.instance,t.module)})),{}}wasmBinaryFile="tree-sitter.wasm",isDataURI(wasmBinaryFile)||(wasmBinaryFile=locateFile(wasmBinaryFile));var ASM_CONSTS={};function ExitStatus(s){this.name="ExitStatus",this.message=`Program terminated with exit(${s})`,this.status=s}var GOT={},currentModuleWeakSymbols=new Set([]),GOTHandler={get(s,e){var t=GOT[e];return t||(t=GOT[e]=new WebAssembly.Global({value:"i32",mutable:!0})),currentModuleWeakSymbols.has(e)||(t.required=!0),t}},callRuntimeCallbacks=s=>{for(;s.length>0;)s.shift()(Module)},UTF8Decoder=typeof TextDecoder<"u"?new TextDecoder("utf8"):void 0,UTF8ArrayToString=(s,e,t)=>{for(var n=e+t,r=e;s[r]&&!(r>=n);)++r;if(r-e>16&&s.buffer&&UTF8Decoder)return UTF8Decoder.decode(s.subarray(e,r));for(var a="";e<r;){var o=s[e++];if(128&o){var l=63&s[e++];if((224&o)!=192){var c=63&s[e++];if((o=(240&o)==224?(15&o)<<12|l<<6|c:(7&o)<<18|l<<12|c<<6|63&s[e++])<65536)a+=String.fromCharCode(o);else{var u=o-65536;a+=String.fromCharCode(55296|u>>10,56320|1023&u)}}else a+=String.fromCharCode((31&o)<<6|l)}else a+=String.fromCharCode(o)}return a},getDylinkMetadata=s=>{var e=0,t=0;function n(){for(var b=0,w=1;;){var k=s[e++];if(b+=(127&k)*w,w*=128,!(128&k))break}return b}function r(){var b=n();return UTF8ArrayToString(s,(e+=b)-b,b)}function a(b,w){if(b)throw new Error(w)}var o="dylink.0";if(s instanceof WebAssembly.Module){var l=WebAssembly.Module.customSections(s,o);l.length===0&&(o="dylink",l=WebAssembly.Module.customSections(s,o)),a(l.length===0,"need dylink section"),t=(s=new Uint8Array(l[0])).length}else{a(new Uint32Array(new Uint8Array(s.subarray(0,24)).buffer)[0]!=1836278016,"need to see wasm magic number"),a(s[8]!==0,"need the dylink section to be first"),e=9;var c=n();t=e+c,o=r()}var u={neededDynlibs:[],tlsExports:new Set,weakImports:new Set};if(o=="dylink"){u.memorySize=n(),u.memoryAlign=n(),u.tableSize=n(),u.tableAlign=n();for(var h=n(),d=0;d<h;++d){var p=r();u.neededDynlibs.push(p)}}else for(a(o!=="dylink.0");e<t;){var f=s[e++],m=n();if(f===1)u.memorySize=n(),u.memoryAlign=n(),u.tableSize=n(),u.tableAlign=n();else if(f===2)for(h=n(),d=0;d<h;++d)p=r(),u.neededDynlibs.push(p);else if(f===3)for(var g=n();g--;){var _=r();256&n()&&u.tlsExports.add(_)}else if(f===4)for(g=n();g--;)r(),_=r(),(3&n())==1&&u.weakImports.add(_);else e+=m}return u};function getValue(s,e="i8"){switch(e.endsWith("*")&&(e="*"),e){case"i1":case"i8":return HEAP8[s];case"i16":return HEAP16[s>>1];case"i32":return HEAP32[s>>2];case"i64":abort("to do getValue(i64) use WASM_BIGINT");case"float":return HEAPF32[s>>2];case"double":return HEAPF64[s>>3];case"*":return HEAPU32[s>>2];default:abort(`invalid type for getValue: ${e}`)}}var newDSO=(s,e,t)=>{var n={refcount:1/0,name:s,exports:t,global:!0};return LDSO.loadedLibsByName[s]=n,e!=null&&(LDSO.loadedLibsByHandle[e]=n),n},LDSO={loadedLibsByName:{},loadedLibsByHandle:{},init(){newDSO("__main__",0,wasmImports)}},___heap_base=78096,zeroMemory=(s,e)=>(HEAPU8.fill(0,s,s+e),s),alignMemory=(s,e)=>Math.ceil(s/e)*e,getMemory=s=>{if(runtimeInitialized)return zeroMemory(_malloc(s),s);var e=___heap_base,t=e+alignMemory(s,16);return ___heap_base=t,GOT.__heap_base.value=t,e},isInternalSym=s=>["__cpp_exception","__c_longjmp","__wasm_apply_data_relocs","__dso_handle","__tls_size","__tls_align","__set_stack_limits","_emscripten_tls_init","__wasm_init_tls","__wasm_call_ctors","__start_em_asm","__stop_em_asm","__start_em_js","__stop_em_js"].includes(s)||s.startsWith("__em_js__"),uleb128Encode=(s,e)=>{s<128?e.push(s):e.push(s%128|128,s>>7)},sigToWasmTypes=s=>{for(var e={i:"i32",j:"i64",f:"f32",d:"f64",e:"externref",p:"i32"},t={parameters:[],results:s[0]=="v"?[]:[e[s[0]]]},n=1;n<s.length;++n)t.parameters.push(e[s[n]]);return t},generateFuncType=(s,e)=>{var t=s.slice(0,1),n=s.slice(1),r={i:127,p:127,j:126,f:125,d:124,e:111};e.push(96),uleb128Encode(n.length,e);for(var a=0;a<n.length;++a)e.push(r[n[a]]);t=="v"?e.push(0):e.push(1,r[t])},convertJsFunctionToWasm=(s,e)=>{if(typeof WebAssembly.Function=="function")return new WebAssembly.Function(sigToWasmTypes(e),s);var t=[1];generateFuncType(e,t);var n=[0,97,115,109,1,0,0,0,1];uleb128Encode(t.length,n),n.push(...t),n.push(2,7,1,1,101,1,102,0,0,7,5,1,1,102,0,0);var r=new WebAssembly.Module(new Uint8Array(n));return new WebAssembly.Instance(r,{e:{f:s}}).exports.f},wasmTableMirror=[],wasmTable=new WebAssembly.Table({initial:27,element:"anyfunc"}),getWasmTableEntry=s=>{var e=wasmTableMirror[s];return e||(s>=wasmTableMirror.length&&(wasmTableMirror.length=s+1),wasmTableMirror[s]=e=wasmTable.get(s)),e},updateTableMap=(s,e)=>{if(functionsInTableMap)for(var t=s;t<s+e;t++){var n=getWasmTableEntry(t);n&&functionsInTableMap.set(n,t)}},functionsInTableMap,getFunctionAddress=s=>(functionsInTableMap||(functionsInTableMap=new WeakMap,updateTableMap(0,wasmTable.length)),functionsInTableMap.get(s)||0),freeTableIndexes=[],getEmptyTableSlot=()=>{if(freeTableIndexes.length)return freeTableIndexes.pop();try{wasmTable.grow(1)}catch(s){throw s instanceof RangeError?"Unable to grow wasm table. Set ALLOW_TABLE_GROWTH.":s}return wasmTable.length-1},setWasmTableEntry=(s,e)=>{wasmTable.set(s,e),wasmTableMirror[s]=wasmTable.get(s)},addFunction=(s,e)=>{var t=getFunctionAddress(s);if(t)return t;var n=getEmptyTableSlot();try{setWasmTableEntry(n,s)}catch(a){if(!(a instanceof TypeError))throw a;var r=convertJsFunctionToWasm(s,e);setWasmTableEntry(n,r)}return functionsInTableMap.set(s,n),n},updateGOT=(s,e)=>{for(var t in s)if(!isInternalSym(t)){var n=s[t];t.startsWith("orig$")&&(t=t.split("$")[1],e=!0),GOT[t]||=new WebAssembly.Global({value:"i32",mutable:!0}),(e||GOT[t].value==0)&&(typeof n=="function"?GOT[t].value=addFunction(n):typeof n=="number"?GOT[t].value=n:err(`unhandled export type for '${t}': ${typeof n}`))}},relocateExports=(s,e,t)=>{var n={};for(var r in s){var a=s[r];typeof a=="object"&&(a=a.value),typeof a=="number"&&(a+=e),n[r]=a}return updateGOT(n,t),n},isSymbolDefined=s=>{var e=wasmImports[s];return!(!e||e.stub)},dynCallLegacy=(s,e,t)=>(0,Module["dynCall_"+s])(e,...t),dynCall=(s,e,t=[])=>s.includes("j")?dynCallLegacy(s,e,t):getWasmTableEntry(e)(...t),createInvokeFunction=s=>function(){var e=stackSave();try{return dynCall(s,arguments[0],Array.prototype.slice.call(arguments,1))}catch(t){if(stackRestore(e),t!==t+0)throw t;_setThrew(1,0)}},resolveGlobalSymbol=(s,e=!1)=>{var t;return e&&"orig$"+s in wasmImports&&(s="orig$"+s),isSymbolDefined(s)?t=wasmImports[s]:s.startsWith("invoke_")&&(t=wasmImports[s]=createInvokeFunction(s.split("_")[1])),{sym:t,name:s}},UTF8ToString=(s,e)=>s?UTF8ArrayToString(HEAPU8,s,e):"",loadWebAssemblyModule=(binary,flags,libName,localScope,handle)=>{var metadata=getDylinkMetadata(binary);function loadModule(){var firstLoad=!handle||!HEAP8[handle+8];if(firstLoad){var memAlign=Math.pow(2,metadata.memoryAlign),memoryBase=metadata.memorySize?alignMemory(getMemory(metadata.memorySize+memAlign),memAlign):0,tableBase=metadata.tableSize?wasmTable.length:0;handle&&(HEAP8[handle+8]=1,HEAPU32[handle+12>>2]=memoryBase,HEAP32[handle+16>>2]=metadata.memorySize,HEAPU32[handle+20>>2]=tableBase,HEAP32[handle+24>>2]=metadata.tableSize)}else memoryBase=HEAPU32[handle+12>>2],tableBase=HEAPU32[handle+20>>2];var tableGrowthNeeded=tableBase+metadata.tableSize-wasmTable.length,moduleExports;function resolveSymbol(s){var e=resolveGlobalSymbol(s).sym;return!e&&localScope&&(e=localScope[s]),e||(e=moduleExports[s]),e}tableGrowthNeeded>0&&wasmTable.grow(tableGrowthNeeded);var proxyHandler={get(s,e){switch(e){case"__memory_base":return memoryBase;case"__table_base":return tableBase}if(e in wasmImports&&!wasmImports[e].stub)return wasmImports[e];var t;return e in s||(s[e]=(...n)=>(t||=resolveSymbol(e),t(...n))),s[e]}},proxy=new Proxy({},proxyHandler),info={"GOT.mem":new Proxy({},GOTHandler),"GOT.func":new Proxy({},GOTHandler),env:proxy,wasi_snapshot_preview1:proxy};function postInstantiation(module,instance){function addEmAsm(addr,body){for(var args=[],arity=0;arity<16&&body.indexOf("$"+arity)!=-1;arity++)args.push("$"+arity);args=args.join(",");var func=`(${args}) => { ${body} };`;ASM_CONSTS[start]=eval(func)}if(updateTableMap(tableBase,metadata.tableSize),moduleExports=relocateExports(instance.exports,memoryBase),flags.allowUndefined||reportUndefinedSymbols(),"__start_em_asm"in moduleExports)for(var start=moduleExports.__start_em_asm,stop=moduleExports.__stop_em_asm;start<stop;){var jsString=UTF8ToString(start);addEmAsm(start,jsString),start=HEAPU8.indexOf(0,start)+1}function addEmJs(name,cSig,body){var jsArgs=[];if(cSig=cSig.slice(1,-1),cSig!="void")for(var i in cSig=cSig.split(","),cSig){var jsArg=cSig[i].split(" ").pop();jsArgs.push(jsArg.replace("*",""))}var func=`(${jsArgs}) => ${body};`;moduleExports[name]=eval(func)}for(var name in moduleExports)if(name.startsWith("__em_js__")){var start=moduleExports[name],jsString=UTF8ToString(start),parts=jsString.split("<::>");addEmJs(name.replace("__em_js__",""),parts[0],parts[1]),delete moduleExports[name]}var applyRelocs=moduleExports.__wasm_apply_data_relocs;applyRelocs&&(runtimeInitialized?applyRelocs():__RELOC_FUNCS__.push(applyRelocs));var init=moduleExports.__wasm_call_ctors;return init&&(runtimeInitialized?init():__ATINIT__.push(init)),moduleExports}if(flags.loadAsync){if(binary instanceof WebAssembly.Module){var instance=new WebAssembly.Instance(binary,info);return Promise.resolve(postInstantiation(binary,instance))}return WebAssembly.instantiate(binary,info).then((s=>postInstantiation(s.module,s.instance)))}var module=binary instanceof WebAssembly.Module?binary:new WebAssembly.Module(binary),instance=new WebAssembly.Instance(module,info);return postInstantiation(module,instance)}return currentModuleWeakSymbols=metadata.weakImports,flags.loadAsync?metadata.neededDynlibs.reduce(((s,e)=>s.then((()=>loadDynamicLibrary(e,flags)))),Promise.resolve()).then(loadModule):(metadata.neededDynlibs.forEach((s=>loadDynamicLibrary(s,flags,localScope))),loadModule())},mergeLibSymbols=(s,e)=>{for(var[t,n]of Object.entries(s)){let r=o=>{isSymbolDefined(o)||(wasmImports[o]=n)};r(t);let a="__main_argc_argv";t=="main"&&r(a),t==a&&r("main"),t.startsWith("dynCall_")&&!Module.hasOwnProperty(t)&&(Module[t]=n)}},asyncLoad=(s,e,t,n)=>{var r=n?"":`al ${s}`;readAsync(s,(a=>{e(new Uint8Array(a)),r&&removeRunDependency(r)}),(a=>{if(!t)throw`Loading data file "${s}" failed.`;t()})),r&&addRunDependency(r)};function loadDynamicLibrary(s,e={global:!0,nodelete:!0},t,n){var r=LDSO.loadedLibsByName[s];if(r)return e.global?r.global||(r.global=!0,mergeLibSymbols(r.exports,s)):t&&Object.assign(t,r.exports),e.nodelete&&r.refcount!==1/0&&(r.refcount=1/0),r.refcount++,n&&(LDSO.loadedLibsByHandle[n]=r),!e.loadAsync||Promise.resolve(!0);function a(){if(n){var c=HEAPU32[n+28>>2],u=HEAPU32[n+32>>2];if(c&&u){var h=HEAP8.slice(c,c+u);return e.loadAsync?Promise.resolve(h):h}}var d=locateFile(s);if(e.loadAsync)return new Promise((function(p,f){asyncLoad(d,p,f)}));if(!readBinary)throw new Error(`${d}: file not found, and synchronous loading of external files is not available`);return readBinary(d)}function o(){return e.loadAsync?a().then((c=>loadWebAssemblyModule(c,e,s,t,n))):loadWebAssemblyModule(a(),e,s,t,n)}function l(c){r.global?mergeLibSymbols(c,s):t&&Object.assign(t,c),r.exports=c}return(r=newDSO(s,n,"loading")).refcount=e.nodelete?1/0:1,r.global=e.global,e.loadAsync?o().then((c=>(l(c),!0))):(l(o()),!0)}var reportUndefinedSymbols=()=>{for(var[s,e]of Object.entries(GOT))if(e.value==0){var t=resolveGlobalSymbol(s,!0).sym;if(!t&&!e.required)continue;if(typeof t=="function")e.value=addFunction(t,t.sig);else{if(typeof t!="number")throw new Error(`bad export type for '${s}': ${typeof t}`);e.value=t}}},loadDylibs=()=>{dynamicLibraries.length?(addRunDependency("loadDylibs"),dynamicLibraries.reduce(((s,e)=>s.then((()=>loadDynamicLibrary(e,{loadAsync:!0,global:!0,nodelete:!0,allowUndefined:!0})))),Promise.resolve()).then((()=>{reportUndefinedSymbols(),removeRunDependency("loadDylibs")}))):reportUndefinedSymbols()},noExitRuntime=Module.noExitRuntime||!0;function setValue(s,e,t="i8"){switch(t.endsWith("*")&&(t="*"),t){case"i1":case"i8":HEAP8[s]=e;break;case"i16":HEAP16[s>>1]=e;break;case"i32":HEAP32[s>>2]=e;break;case"i64":abort("to do setValue(i64) use WASM_BIGINT");case"float":HEAPF32[s>>2]=e;break;case"double":HEAPF64[s>>3]=e;break;case"*":HEAPU32[s>>2]=e;break;default:abort(`invalid type for setValue: ${t}`)}}var ___memory_base=new WebAssembly.Global({value:"i32",mutable:!1},1024),___stack_pointer=new WebAssembly.Global({value:"i32",mutable:!0},78096),___table_base=new WebAssembly.Global({value:"i32",mutable:!1},1),nowIsMonotonic=1,__emscripten_get_now_is_monotonic=()=>nowIsMonotonic;__emscripten_get_now_is_monotonic.sig="i";var _abort=()=>{abort("")};_abort.sig="v";var _emscripten_date_now=()=>Date.now(),_emscripten_get_now;_emscripten_date_now.sig="d",_emscripten_get_now=()=>performance.now(),_emscripten_get_now.sig="d";var _emscripten_memcpy_js=(s,e,t)=>HEAPU8.copyWithin(s,e,e+t);_emscripten_memcpy_js.sig="vppp";var getHeapMax=()=>2147483648,growMemory=s=>{var e=(s-wasmMemory.buffer.byteLength+65535)/65536;try{return wasmMemory.grow(e),updateMemoryViews(),1}catch{}},_emscripten_resize_heap=s=>{var e=HEAPU8.length;s>>>=0;var t=getHeapMax();if(s>t)return!1;for(var n,r,a=1;a<=4;a*=2){var o=e*(1+.2/a);o=Math.min(o,s+100663296);var l=Math.min(t,(n=Math.max(s,o))+((r=65536)-n%r)%r);if(growMemory(l))return!0}return!1};_emscripten_resize_heap.sig="ip";var _fd_close=s=>52;_fd_close.sig="ii";var convertI32PairToI53Checked=(s,e)=>e+2097152>>>0<4194305-!!s?(s>>>0)+4294967296*e:NaN;function _fd_seek(s,e,t,n,r){return convertI32PairToI53Checked(e,t),70}_fd_seek.sig="iiiiip";var printCharBuffers=[null,[],[]],printChar=(s,e)=>{var t=printCharBuffers[s];e===0||e===10?((s===1?out:err)(UTF8ArrayToString(t,0)),t.length=0):t.push(e)},SYSCALLS={varargs:void 0,get(){var s=HEAP32[+SYSCALLS.varargs>>2];return SYSCALLS.varargs+=4,s},getp:()=>SYSCALLS.get(),getStr:s=>UTF8ToString(s)},_fd_write=(s,e,t,n)=>{for(var r=0,a=0;a<t;a++){var o=HEAPU32[e>>2],l=HEAPU32[e+4>>2];e+=8;for(var c=0;c<l;c++)printChar(s,HEAPU8[o+c]);r+=l}return HEAPU32[n>>2]=r,0};function _tree_sitter_log_callback(s,e){if(currentLogCallback){let t=UTF8ToString(e);currentLogCallback(t,s!==0)}}function _tree_sitter_parse_callback(s,e,t,n,r){let a=currentParseCallback(e,{row:t,column:n});typeof a=="string"?(setValue(r,a.length,"i32"),stringToUTF16(a,s,10240)):setValue(r,0,"i32")}_fd_write.sig="iippp";var runtimeKeepaliveCounter=0,keepRuntimeAlive=()=>noExitRuntime||runtimeKeepaliveCounter>0,_proc_exit=s=>{EXITSTATUS=s,keepRuntimeAlive()||(Module.onExit?.(s),ABORT=!0),quit_(s,new ExitStatus(s))};_proc_exit.sig="vi";var exitJS=(s,e)=>{EXITSTATUS=s,_proc_exit(s)},handleException=s=>{if(s instanceof ExitStatus||s=="unwind")return EXITSTATUS;quit_(1,s)},lengthBytesUTF8=s=>{for(var e=0,t=0;t<s.length;++t){var n=s.charCodeAt(t);n<=127?e++:n<=2047?e+=2:n>=55296&&n<=57343?(e+=4,++t):e+=3}return e},stringToUTF8Array=(s,e,t,n)=>{if(!(n>0))return 0;for(var r=t,a=t+n-1,o=0;o<s.length;++o){var l=s.charCodeAt(o);if(l>=55296&&l<=57343&&(l=65536+((1023&l)<<10)|1023&s.charCodeAt(++o)),l<=127){if(t>=a)break;e[t++]=l}else if(l<=2047){if(t+1>=a)break;e[t++]=192|l>>6,e[t++]=128|63&l}else if(l<=65535){if(t+2>=a)break;e[t++]=224|l>>12,e[t++]=128|l>>6&63,e[t++]=128|63&l}else{if(t+3>=a)break;e[t++]=240|l>>18,e[t++]=128|l>>12&63,e[t++]=128|l>>6&63,e[t++]=128|63&l}}return e[t]=0,t-r},stringToUTF8=(s,e,t)=>stringToUTF8Array(s,HEAPU8,e,t),stringToUTF8OnStack=s=>{var e=lengthBytesUTF8(s)+1,t=stackAlloc(e);return stringToUTF8(s,t,e),t},stringToUTF16=(s,e,t)=>{if(t??=2147483647,t<2)return 0;for(var n=e,r=(t-=2)<2*s.length?t/2:s.length,a=0;a<r;++a){var o=s.charCodeAt(a);HEAP16[e>>1]=o,e+=2}return HEAP16[e>>1]=0,e-n},AsciiToString=s=>{for(var e="";;){var t=HEAPU8[s++];if(!t)return e;e+=String.fromCharCode(t)}},wasmImports={__heap_base:___heap_base,__indirect_function_table:wasmTable,__memory_base:___memory_base,__stack_pointer:___stack_pointer,__table_base:___table_base,_emscripten_get_now_is_monotonic:__emscripten_get_now_is_monotonic,abort:_abort,emscripten_get_now:_emscripten_get_now,emscripten_memcpy_js:_emscripten_memcpy_js,emscripten_resize_heap:_emscripten_resize_heap,fd_close:_fd_close,fd_seek:_fd_seek,fd_write:_fd_write,memory:wasmMemory,tree_sitter_log_callback:_tree_sitter_log_callback,tree_sitter_parse_callback:_tree_sitter_parse_callback},wasmExports=createWasm(),___wasm_call_ctors=()=>(___wasm_call_ctors=wasmExports.__wasm_call_ctors)(),___wasm_apply_data_relocs=()=>(___wasm_apply_data_relocs=wasmExports.__wasm_apply_data_relocs)(),_malloc=Module._malloc=s=>(_malloc=Module._malloc=wasmExports.malloc)(s),_calloc=Module._calloc=(s,e)=>(_calloc=Module._calloc=wasmExports.calloc)(s,e),_realloc=Module._realloc=(s,e)=>(_realloc=Module._realloc=wasmExports.realloc)(s,e),_free=Module._free=s=>(_free=Module._free=wasmExports.free)(s),_ts_language_symbol_count=Module._ts_language_symbol_count=s=>(_ts_language_symbol_count=Module._ts_language_symbol_count=wasmExports.ts_language_symbol_count)(s),_ts_language_state_count=Module._ts_language_state_count=s=>(_ts_language_state_count=Module._ts_language_state_count=wasmExports.ts_language_state_count)(s),_ts_language_version=Module._ts_language_version=s=>(_ts_language_version=Module._ts_language_version=wasmExports.ts_language_version)(s),_ts_language_field_count=Module._ts_language_field_count=s=>(_ts_language_field_count=Module._ts_language_field_count=wasmExports.ts_language_field_count)(s),_ts_language_next_state=Module._ts_language_next_state=(s,e,t)=>(_ts_language_next_state=Module._ts_language_next_state=wasmExports.ts_language_next_state)(s,e,t),_ts_language_symbol_name=Module._ts_language_symbol_name=(s,e)=>(_ts_language_symbol_name=Module._ts_language_symbol_name=wasmExports.ts_language_symbol_name)(s,e),_ts_language_symbol_for_name=Module._ts_language_symbol_for_name=(s,e,t,n)=>(_ts_language_symbol_for_name=Module._ts_language_symbol_for_name=wasmExports.ts_language_symbol_for_name)(s,e,t,n),_strncmp=Module._strncmp=(s,e,t)=>(_strncmp=Module._strncmp=wasmExports.strncmp)(s,e,t),_ts_language_symbol_type=Module._ts_language_symbol_type=(s,e)=>(_ts_language_symbol_type=Module._ts_language_symbol_type=wasmExports.ts_language_symbol_type)(s,e),_ts_language_field_name_for_id=Module._ts_language_field_name_for_id=(s,e)=>(_ts_language_field_name_for_id=Module._ts_language_field_name_for_id=wasmExports.ts_language_field_name_for_id)(s,e),_ts_lookahead_iterator_new=Module._ts_lookahead_iterator_new=(s,e)=>(_ts_lookahead_iterator_new=Module._ts_lookahead_iterator_new=wasmExports.ts_lookahead_iterator_new)(s,e),_ts_lookahead_iterator_delete=Module._ts_lookahead_iterator_delete=s=>(_ts_lookahead_iterator_delete=Module._ts_lookahead_iterator_delete=wasmExports.ts_lookahead_iterator_delete)(s),_ts_lookahead_iterator_reset_state=Module._ts_lookahead_iterator_reset_state=(s,e)=>(_ts_lookahead_iterator_reset_state=Module._ts_lookahead_iterator_reset_state=wasmExports.ts_lookahead_iterator_reset_state)(s,e),_ts_lookahead_iterator_reset=Module._ts_lookahead_iterator_reset=(s,e,t)=>(_ts_lookahead_iterator_reset=Module._ts_lookahead_iterator_reset=wasmExports.ts_lookahead_iterator_reset)(s,e,t),_ts_lookahead_iterator_next=Module._ts_lookahead_iterator_next=s=>(_ts_lookahead_iterator_next=Module._ts_lookahead_iterator_next=wasmExports.ts_lookahead_iterator_next)(s),_ts_lookahead_iterator_current_symbol=Module._ts_lookahead_iterator_current_symbol=s=>(_ts_lookahead_iterator_current_symbol=Module._ts_lookahead_iterator_current_symbol=wasmExports.ts_lookahead_iterator_current_symbol)(s),_memset=Module._memset=(s,e,t)=>(_memset=Module._memset=wasmExports.memset)(s,e,t),_memcpy=Module._memcpy=(s,e,t)=>(_memcpy=Module._memcpy=wasmExports.memcpy)(s,e,t),_ts_parser_delete=Module._ts_parser_delete=s=>(_ts_parser_delete=Module._ts_parser_delete=wasmExports.ts_parser_delete)(s),_ts_parser_reset=Module._ts_parser_reset=s=>(_ts_parser_reset=Module._ts_parser_reset=wasmExports.ts_parser_reset)(s),_ts_parser_set_language=Module._ts_parser_set_language=(s,e)=>(_ts_parser_set_language=Module._ts_parser_set_language=wasmExports.ts_parser_set_language)(s,e),_ts_parser_timeout_micros=Module._ts_parser_timeout_micros=s=>(_ts_parser_timeout_micros=Module._ts_parser_timeout_micros=wasmExports.ts_parser_timeout_micros)(s),_ts_parser_set_timeout_micros=Module._ts_parser_set_timeout_micros=(s,e,t)=>(_ts_parser_set_timeout_micros=Module._ts_parser_set_timeout_micros=wasmExports.ts_parser_set_timeout_micros)(s,e,t),_ts_parser_set_included_ranges=Module._ts_parser_set_included_ranges=(s,e,t)=>(_ts_parser_set_included_ranges=Module._ts_parser_set_included_ranges=wasmExports.ts_parser_set_included_ranges)(s,e,t),_memmove=Module._memmove=(s,e,t)=>(_memmove=Module._memmove=wasmExports.memmove)(s,e,t),_memcmp=Module._memcmp=(s,e,t)=>(_memcmp=Module._memcmp=wasmExports.memcmp)(s,e,t),_ts_query_new=Module._ts_query_new=(s,e,t,n,r)=>(_ts_query_new=Module._ts_query_new=wasmExports.ts_query_new)(s,e,t,n,r),_ts_query_delete=Module._ts_query_delete=s=>(_ts_query_delete=Module._ts_query_delete=wasmExports.ts_query_delete)(s),_iswspace=Module._iswspace=s=>(_iswspace=Module._iswspace=wasmExports.iswspace)(s),_iswalnum=Module._iswalnum=s=>(_iswalnum=Module._iswalnum=wasmExports.iswalnum)(s),_ts_query_pattern_count=Module._ts_query_pattern_count=s=>(_ts_query_pattern_count=Module._ts_query_pattern_count=wasmExports.ts_query_pattern_count)(s),_ts_query_capture_count=Module._ts_query_capture_count=s=>(_ts_query_capture_count=Module._ts_query_capture_count=wasmExports.ts_query_capture_count)(s),_ts_query_string_count=Module._ts_query_string_count=s=>(_ts_query_string_count=Module._ts_query_string_count=wasmExports.ts_query_string_count)(s),_ts_query_capture_name_for_id=Module._ts_query_capture_name_for_id=(s,e,t)=>(_ts_query_capture_name_for_id=Module._ts_query_capture_name_for_id=wasmExports.ts_query_capture_name_for_id)(s,e,t),_ts_query_string_value_for_id=Module._ts_query_string_value_for_id=(s,e,t)=>(_ts_query_string_value_for_id=Module._ts_query_string_value_for_id=wasmExports.ts_query_string_value_for_id)(s,e,t),_ts_query_predicates_for_pattern=Module._ts_query_predicates_for_pattern=(s,e,t)=>(_ts_query_predicates_for_pattern=Module._ts_query_predicates_for_pattern=wasmExports.ts_query_predicates_for_pattern)(s,e,t),_ts_query_disable_capture=Module._ts_query_disable_capture=(s,e,t)=>(_ts_query_disable_capture=Module._ts_query_disable_capture=wasmExports.ts_query_disable_capture)(s,e,t),_ts_tree_copy=Module._ts_tree_copy=s=>(_ts_tree_copy=Module._ts_tree_copy=wasmExports.ts_tree_copy)(s),_ts_tree_delete=Module._ts_tree_delete=s=>(_ts_tree_delete=Module._ts_tree_delete=wasmExports.ts_tree_delete)(s),_ts_init=Module._ts_init=()=>(_ts_init=Module._ts_init=wasmExports.ts_init)(),_ts_parser_new_wasm=Module._ts_parser_new_wasm=()=>(_ts_parser_new_wasm=Module._ts_parser_new_wasm=wasmExports.ts_parser_new_wasm)(),_ts_parser_enable_logger_wasm=Module._ts_parser_enable_logger_wasm=(s,e)=>(_ts_parser_enable_logger_wasm=Module._ts_parser_enable_logger_wasm=wasmExports.ts_parser_enable_logger_wasm)(s,e),_ts_parser_parse_wasm=Module._ts_parser_parse_wasm=(s,e,t,n,r)=>(_ts_parser_parse_wasm=Module._ts_parser_parse_wasm=wasmExports.ts_parser_parse_wasm)(s,e,t,n,r),_ts_parser_included_ranges_wasm=Module._ts_parser_included_ranges_wasm=s=>(_ts_parser_included_ranges_wasm=Module._ts_parser_included_ranges_wasm=wasmExports.ts_parser_included_ranges_wasm)(s),_ts_language_type_is_named_wasm=Module._ts_language_type_is_named_wasm=(s,e)=>(_ts_language_type_is_named_wasm=Module._ts_language_type_is_named_wasm=wasmExports.ts_language_type_is_named_wasm)(s,e),_ts_language_type_is_visible_wasm=Module._ts_language_type_is_visible_wasm=(s,e)=>(_ts_language_type_is_visible_wasm=Module._ts_language_type_is_visible_wasm=wasmExports.ts_language_type_is_visible_wasm)(s,e),_ts_tree_root_node_wasm=Module._ts_tree_root_node_wasm=s=>(_ts_tree_root_node_wasm=Module._ts_tree_root_node_wasm=wasmExports.ts_tree_root_node_wasm)(s),_ts_tree_root_node_with_offset_wasm=Module._ts_tree_root_node_with_offset_wasm=s=>(_ts_tree_root_node_with_offset_wasm=Module._ts_tree_root_node_with_offset_wasm=wasmExports.ts_tree_root_node_with_offset_wasm)(s),_ts_tree_edit_wasm=Module._ts_tree_edit_wasm=s=>(_ts_tree_edit_wasm=Module._ts_tree_edit_wasm=wasmExports.ts_tree_edit_wasm)(s),_ts_tree_included_ranges_wasm=Module._ts_tree_included_ranges_wasm=s=>(_ts_tree_included_ranges_wasm=Module._ts_tree_included_ranges_wasm=wasmExports.ts_tree_included_ranges_wasm)(s),_ts_tree_get_changed_ranges_wasm=Module._ts_tree_get_changed_ranges_wasm=(s,e)=>(_ts_tree_get_changed_ranges_wasm=Module._ts_tree_get_changed_ranges_wasm=wasmExports.ts_tree_get_changed_ranges_wasm)(s,e),_ts_tree_cursor_new_wasm=Module._ts_tree_cursor_new_wasm=s=>(_ts_tree_cursor_new_wasm=Module._ts_tree_cursor_new_wasm=wasmExports.ts_tree_cursor_new_wasm)(s),_ts_tree_cursor_delete_wasm=Module._ts_tree_cursor_delete_wasm=s=>(_ts_tree_cursor_delete_wasm=Module._ts_tree_cursor_delete_wasm=wasmExports.ts_tree_cursor_delete_wasm)(s),_ts_tree_cursor_reset_wasm=Module._ts_tree_cursor_reset_wasm=s=>(_ts_tree_cursor_reset_wasm=Module._ts_tree_cursor_reset_wasm=wasmExports.ts_tree_cursor_reset_wasm)(s),_ts_tree_cursor_reset_to_wasm=Module._ts_tree_cursor_reset_to_wasm=(s,e)=>(_ts_tree_cursor_reset_to_wasm=Module._ts_tree_cursor_reset_to_wasm=wasmExports.ts_tree_cursor_reset_to_wasm)(s,e),_ts_tree_cursor_goto_first_child_wasm=Module._ts_tree_cursor_goto_first_child_wasm=s=>(_ts_tree_cursor_goto_first_child_wasm=Module._ts_tree_cursor_goto_first_child_wasm=wasmExports.ts_tree_cursor_goto_first_child_wasm)(s),_ts_tree_cursor_goto_last_child_wasm=Module._ts_tree_cursor_goto_last_child_wasm=s=>(_ts_tree_cursor_goto_last_child_wasm=Module._ts_tree_cursor_goto_last_child_wasm=wasmExports.ts_tree_cursor_goto_last_child_wasm)(s),_ts_tree_cursor_goto_first_child_for_index_wasm=Module._ts_tree_cursor_goto_first_child_for_index_wasm=s=>(_ts_tree_cursor_goto_first_child_for_index_wasm=Module._ts_tree_cursor_goto_first_child_for_index_wasm=wasmExports.ts_tree_cursor_goto_first_child_for_index_wasm)(s),_ts_tree_cursor_goto_first_child_for_position_wasm=Module._ts_tree_cursor_goto_first_child_for_position_wasm=s=>(_ts_tree_cursor_goto_first_child_for_position_wasm=Module._ts_tree_cursor_goto_first_child_for_position_wasm=wasmExports.ts_tree_cursor_goto_first_child_for_position_wasm)(s),_ts_tree_cursor_goto_next_sibling_wasm=Module._ts_tree_cursor_goto_next_sibling_wasm=s=>(_ts_tree_cursor_goto_next_sibling_wasm=Module._ts_tree_cursor_goto_next_sibling_wasm=wasmExports.ts_tree_cursor_goto_next_sibling_wasm)(s),_ts_tree_cursor_goto_previous_sibling_wasm=Module._ts_tree_cursor_goto_previous_sibling_wasm=s=>(_ts_tree_cursor_goto_previous_sibling_wasm=Module._ts_tree_cursor_goto_previous_sibling_wasm=wasmExports.ts_tree_cursor_goto_previous_sibling_wasm)(s),_ts_tree_cursor_goto_descendant_wasm=Module._ts_tree_cursor_goto_descendant_wasm=(s,e)=>(_ts_tree_cursor_goto_descendant_wasm=Module._ts_tree_cursor_goto_descendant_wasm=wasmExports.ts_tree_cursor_goto_descendant_wasm)(s,e),_ts_tree_cursor_goto_parent_wasm=Module._ts_tree_cursor_goto_parent_wasm=s=>(_ts_tree_cursor_goto_parent_wasm=Module._ts_tree_cursor_goto_parent_wasm=wasmExports.ts_tree_cursor_goto_parent_wasm)(s),_ts_tree_cursor_current_node_type_id_wasm=Module._ts_tree_cursor_current_node_type_id_wasm=s=>(_ts_tree_cursor_current_node_type_id_wasm=Module._ts_tree_cursor_current_node_type_id_wasm=wasmExports.ts_tree_cursor_current_node_type_id_wasm)(s),_ts_tree_cursor_current_node_state_id_wasm=Module._ts_tree_cursor_current_node_state_id_wasm=s=>(_ts_tree_cursor_current_node_state_id_wasm=Module._ts_tree_cursor_current_node_state_id_wasm=wasmExports.ts_tree_cursor_current_node_state_id_wasm)(s),_ts_tree_cursor_current_node_is_named_wasm=Module._ts_tree_cursor_current_node_is_named_wasm=s=>(_ts_tree_cursor_current_node_is_named_wasm=Module._ts_tree_cursor_current_node_is_named_wasm=wasmExports.ts_tree_cursor_current_node_is_named_wasm)(s),_ts_tree_cursor_current_node_is_missing_wasm=Module._ts_tree_cursor_current_node_is_missing_wasm=s=>(_ts_tree_cursor_current_node_is_missing_wasm=Module._ts_tree_cursor_current_node_is_missing_wasm=wasmExports.ts_tree_cursor_current_node_is_missing_wasm)(s),_ts_tree_cursor_current_node_id_wasm=Module._ts_tree_cursor_current_node_id_wasm=s=>(_ts_tree_cursor_current_node_id_wasm=Module._ts_tree_cursor_current_node_id_wasm=wasmExports.ts_tree_cursor_current_node_id_wasm)(s),_ts_tree_cursor_start_position_wasm=Module._ts_tree_cursor_start_position_wasm=s=>(_ts_tree_cursor_start_position_wasm=Module._ts_tree_cursor_start_position_wasm=wasmExports.ts_tree_cursor_start_position_wasm)(s),_ts_tree_cursor_end_position_wasm=Module._ts_tree_cursor_end_position_wasm=s=>(_ts_tree_cursor_end_position_wasm=Module._ts_tree_cursor_end_position_wasm=wasmExports.ts_tree_cursor_end_position_wasm)(s),_ts_tree_cursor_start_index_wasm=Module._ts_tree_cursor_start_index_wasm=s=>(_ts_tree_cursor_start_index_wasm=Module._ts_tree_cursor_start_index_wasm=wasmExports.ts_tree_cursor_start_index_wasm)(s),_ts_tree_cursor_end_index_wasm=Module._ts_tree_cursor_end_index_wasm=s=>(_ts_tree_cursor_end_index_wasm=Module._ts_tree_cursor_end_index_wasm=wasmExports.ts_tree_cursor_end_index_wasm)(s),_ts_tree_cursor_current_field_id_wasm=Module._ts_tree_cursor_current_field_id_wasm=s=>(_ts_tree_cursor_current_field_id_wasm=Module._ts_tree_cursor_current_field_id_wasm=wasmExports.ts_tree_cursor_current_field_id_wasm)(s),_ts_tree_cursor_current_depth_wasm=Module._ts_tree_cursor_current_depth_wasm=s=>(_ts_tree_cursor_current_depth_wasm=Module._ts_tree_cursor_current_depth_wasm=wasmExports.ts_tree_cursor_current_depth_wasm)(s),_ts_tree_cursor_current_descendant_index_wasm=Module._ts_tree_cursor_current_descendant_index_wasm=s=>(_ts_tree_cursor_current_descendant_index_wasm=Module._ts_tree_cursor_current_descendant_index_wasm=wasmExports.ts_tree_cursor_current_descendant_index_wasm)(s),_ts_tree_cursor_current_node_wasm=Module._ts_tree_cursor_current_node_wasm=s=>(_ts_tree_cursor_current_node_wasm=Module._ts_tree_cursor_current_node_wasm=wasmExports.ts_tree_cursor_current_node_wasm)(s),_ts_node_symbol_wasm=Module._ts_node_symbol_wasm=s=>(_ts_node_symbol_wasm=Module._ts_node_symbol_wasm=wasmExports.ts_node_symbol_wasm)(s),_ts_node_field_name_for_child_wasm=Module._ts_node_field_name_for_child_wasm=(s,e)=>(_ts_node_field_name_for_child_wasm=Module._ts_node_field_name_for_child_wasm=wasmExports.ts_node_field_name_for_child_wasm)(s,e),_ts_node_children_by_field_id_wasm=Module._ts_node_children_by_field_id_wasm=(s,e)=>(_ts_node_children_by_field_id_wasm=Module._ts_node_children_by_field_id_wasm=wasmExports.ts_node_children_by_field_id_wasm)(s,e),_ts_node_first_child_for_byte_wasm=Module._ts_node_first_child_for_byte_wasm=s=>(_ts_node_first_child_for_byte_wasm=Module._ts_node_first_child_for_byte_wasm=wasmExports.ts_node_first_child_for_byte_wasm)(s),_ts_node_first_named_child_for_byte_wasm=Module._ts_node_first_named_child_for_byte_wasm=s=>(_ts_node_first_named_child_for_byte_wasm=Module._ts_node_first_named_child_for_byte_wasm=wasmExports.ts_node_first_named_child_for_byte_wasm)(s),_ts_node_grammar_symbol_wasm=Module._ts_node_grammar_symbol_wasm=s=>(_ts_node_grammar_symbol_wasm=Module._ts_node_grammar_symbol_wasm=wasmExports.ts_node_grammar_symbol_wasm)(s),_ts_node_child_count_wasm=Module._ts_node_child_count_wasm=s=>(_ts_node_child_count_wasm=Module._ts_node_child_count_wasm=wasmExports.ts_node_child_count_wasm)(s),_ts_node_named_child_count_wasm=Module._ts_node_named_child_count_wasm=s=>(_ts_node_named_child_count_wasm=Module._ts_node_named_child_count_wasm=wasmExports.ts_node_named_child_count_wasm)(s),_ts_node_child_wasm=Module._ts_node_child_wasm=(s,e)=>(_ts_node_child_wasm=Module._ts_node_child_wasm=wasmExports.ts_node_child_wasm)(s,e),_ts_node_named_child_wasm=Module._ts_node_named_child_wasm=(s,e)=>(_ts_node_named_child_wasm=Module._ts_node_named_child_wasm=wasmExports.ts_node_named_child_wasm)(s,e),_ts_node_child_by_field_id_wasm=Module._ts_node_child_by_field_id_wasm=(s,e)=>(_ts_node_child_by_field_id_wasm=Module._ts_node_child_by_field_id_wasm=wasmExports.ts_node_child_by_field_id_wasm)(s,e),_ts_node_next_sibling_wasm=Module._ts_node_next_sibling_wasm=s=>(_ts_node_next_sibling_wasm=Module._ts_node_next_sibling_wasm=wasmExports.ts_node_next_sibling_wasm)(s),_ts_node_prev_sibling_wasm=Module._ts_node_prev_sibling_wasm=s=>(_ts_node_prev_sibling_wasm=Module._ts_node_prev_sibling_wasm=wasmExports.ts_node_prev_sibling_wasm)(s),_ts_node_next_named_sibling_wasm=Module._ts_node_next_named_sibling_wasm=s=>(_ts_node_next_named_sibling_wasm=Module._ts_node_next_named_sibling_wasm=wasmExports.ts_node_next_named_sibling_wasm)(s),_ts_node_prev_named_sibling_wasm=Module._ts_node_prev_named_sibling_wasm=s=>(_ts_node_prev_named_sibling_wasm=Module._ts_node_prev_named_sibling_wasm=wasmExports.ts_node_prev_named_sibling_wasm)(s),_ts_node_descendant_count_wasm=Module._ts_node_descendant_count_wasm=s=>(_ts_node_descendant_count_wasm=Module._ts_node_descendant_count_wasm=wasmExports.ts_node_descendant_count_wasm)(s),_ts_node_parent_wasm=Module._ts_node_parent_wasm=s=>(_ts_node_parent_wasm=Module._ts_node_parent_wasm=wasmExports.ts_node_parent_wasm)(s),_ts_node_descendant_for_index_wasm=Module._ts_node_descendant_for_index_wasm=s=>(_ts_node_descendant_for_index_wasm=Module._ts_node_descendant_for_index_wasm=wasmExports.ts_node_descendant_for_index_wasm)(s),_ts_node_named_descendant_for_index_wasm=Module._ts_node_named_descendant_for_index_wasm=s=>(_ts_node_named_descendant_for_index_wasm=Module._ts_node_named_descendant_for_index_wasm=wasmExports.ts_node_named_descendant_for_index_wasm)(s),_ts_node_descendant_for_position_wasm=Module._ts_node_descendant_for_position_wasm=s=>(_ts_node_descendant_for_position_wasm=Module._ts_node_descendant_for_position_wasm=wasmExports.ts_node_descendant_for_position_wasm)(s),_ts_node_named_descendant_for_position_wasm=Module._ts_node_named_descendant_for_position_wasm=s=>(_ts_node_named_descendant_for_position_wasm=Module._ts_node_named_descendant_for_position_wasm=wasmExports.ts_node_named_descendant_for_position_wasm)(s),_ts_node_start_point_wasm=Module._ts_node_start_point_wasm=s=>(_ts_node_start_point_wasm=Module._ts_node_start_point_wasm=wasmExports.ts_node_start_point_wasm)(s),_ts_node_end_point_wasm=Module._ts_node_end_point_wasm=s=>(_ts_node_end_point_wasm=Module._ts_node_end_point_wasm=wasmExports.ts_node_end_point_wasm)(s),_ts_node_start_index_wasm=Module._ts_node_start_index_wasm=s=>(_ts_node_start_index_wasm=Module._ts_node_start_index_wasm=wasmExports.ts_node_start_index_wasm)(s),_ts_node_end_index_wasm=Module._ts_node_end_index_wasm=s=>(_ts_node_end_index_wasm=Module._ts_node_end_index_wasm=wasmExports.ts_node_end_index_wasm)(s),_ts_node_to_string_wasm=Module._ts_node_to_string_wasm=s=>(_ts_node_to_string_wasm=Module._ts_node_to_string_wasm=wasmExports.ts_node_to_string_wasm)(s),_ts_node_children_wasm=Module._ts_node_children_wasm=s=>(_ts_node_children_wasm=Module._ts_node_children_wasm=wasmExports.ts_node_children_wasm)(s),_ts_node_named_children_wasm=Module._ts_node_named_children_wasm=s=>(_ts_node_named_children_wasm=Module._ts_node_named_children_wasm=wasmExports.ts_node_named_children_wasm)(s),_ts_node_descendants_of_type_wasm=Module._ts_node_descendants_of_type_wasm=(s,e,t,n,r,a,o)=>(_ts_node_descendants_of_type_wasm=Module._ts_node_descendants_of_type_wasm=wasmExports.ts_node_descendants_of_type_wasm)(s,e,t,n,r,a,o),_ts_node_is_named_wasm=Module._ts_node_is_named_wasm=s=>(_ts_node_is_named_wasm=Module._ts_node_is_named_wasm=wasmExports.ts_node_is_named_wasm)(s),_ts_node_has_changes_wasm=Module._ts_node_has_changes_wasm=s=>(_ts_node_has_changes_wasm=Module._ts_node_has_changes_wasm=wasmExports.ts_node_has_changes_wasm)(s),_ts_node_has_error_wasm=Module._ts_node_has_error_wasm=s=>(_ts_node_has_error_wasm=Module._ts_node_has_error_wasm=wasmExports.ts_node_has_error_wasm)(s),_ts_node_is_error_wasm=Module._ts_node_is_error_wasm=s=>(_ts_node_is_error_wasm=Module._ts_node_is_error_wasm=wasmExports.ts_node_is_error_wasm)(s),_ts_node_is_missing_wasm=Module._ts_node_is_missing_wasm=s=>(_ts_node_is_missing_wasm=Module._ts_node_is_missing_wasm=wasmExports.ts_node_is_missing_wasm)(s),_ts_node_is_extra_wasm=Module._ts_node_is_extra_wasm=s=>(_ts_node_is_extra_wasm=Module._ts_node_is_extra_wasm=wasmExports.ts_node_is_extra_wasm)(s),_ts_node_parse_state_wasm=Module._ts_node_parse_state_wasm=s=>(_ts_node_parse_state_wasm=Module._ts_node_parse_state_wasm=wasmExports.ts_node_parse_state_wasm)(s),_ts_node_next_parse_state_wasm=Module._ts_node_next_parse_state_wasm=s=>(_ts_node_next_parse_state_wasm=Module._ts_node_next_parse_state_wasm=wasmExports.ts_node_next_parse_state_wasm)(s),_ts_query_matches_wasm=Module._ts_query_matches_wasm=(s,e,t,n,r,a,o,l,c,u)=>(_ts_query_matches_wasm=Module._ts_query_matches_wasm=wasmExports.ts_query_matches_wasm)(s,e,t,n,r,a,o,l,c,u),_ts_query_captures_wasm=Module._ts_query_captures_wasm=(s,e,t,n,r,a,o,l,c,u)=>(_ts_query_captures_wasm=Module._ts_query_captures_wasm=wasmExports.ts_query_captures_wasm)(s,e,t,n,r,a,o,l,c,u),_iswalpha=Module._iswalpha=s=>(_iswalpha=Module._iswalpha=wasmExports.iswalpha)(s),_iswblank=Module._iswblank=s=>(_iswblank=Module._iswblank=wasmExports.iswblank)(s),_iswdigit=Module._iswdigit=s=>(_iswdigit=Module._iswdigit=wasmExports.iswdigit)(s),_iswlower=Module._iswlower=s=>(_iswlower=Module._iswlower=wasmExports.iswlower)(s),_iswupper=Module._iswupper=s=>(_iswupper=Module._iswupper=wasmExports.iswupper)(s),_iswxdigit=Module._iswxdigit=s=>(_iswxdigit=Module._iswxdigit=wasmExports.iswxdigit)(s),_memchr=Module._memchr=(s,e,t)=>(_memchr=Module._memchr=wasmExports.memchr)(s,e,t),_strlen=Module._strlen=s=>(_strlen=Module._strlen=wasmExports.strlen)(s),_strcmp=Module._strcmp=(s,e)=>(_strcmp=Module._strcmp=wasmExports.strcmp)(s,e),_strncat=Module._strncat=(s,e,t)=>(_strncat=Module._strncat=wasmExports.strncat)(s,e,t),_strncpy=Module._strncpy=(s,e,t)=>(_strncpy=Module._strncpy=wasmExports.strncpy)(s,e,t),_towlower=Module._towlower=s=>(_towlower=Module._towlower=wasmExports.towlower)(s),_towupper=Module._towupper=s=>(_towupper=Module._towupper=wasmExports.towupper)(s),_setThrew=(s,e)=>(_setThrew=wasmExports.setThrew)(s,e),stackSave=()=>(stackSave=wasmExports.stackSave)(),stackRestore=s=>(stackRestore=wasmExports.stackRestore)(s),stackAlloc=s=>(stackAlloc=wasmExports.stackAlloc)(s),dynCall_jiji=Module.dynCall_jiji=(s,e,t,n,r)=>(dynCall_jiji=Module.dynCall_jiji=wasmExports.dynCall_jiji)(s,e,t,n,r),_orig$ts_parser_timeout_micros=Module._orig$ts_parser_timeout_micros=s=>(_orig$ts_parser_timeout_micros=Module._orig$ts_parser_timeout_micros=wasmExports.orig$ts_parser_timeout_micros)(s),_orig$ts_parser_set_timeout_micros=Module._orig$ts_parser_set_timeout_micros=(s,e)=>(_orig$ts_parser_set_timeout_micros=Module._orig$ts_parser_set_timeout_micros=wasmExports.orig$ts_parser_set_timeout_micros)(s,e),calledRun;function callMain(s=[]){var e=resolveGlobalSymbol("main").sym;if(e){s.unshift(thisProgram);var t=s.length,n=stackAlloc(4*(t+1)),r=n;s.forEach((o=>{HEAPU32[r>>2]=stringToUTF8OnStack(o),r+=4})),HEAPU32[r>>2]=0;try{var a=e(t,n);return exitJS(a,!0),a}catch(o){return handleException(o)}}}function run(s=arguments_){function e(){calledRun||(calledRun=!0,Module.calledRun=!0,ABORT||(initRuntime(),preMain(),Module.onRuntimeInitialized&&Module.onRuntimeInitialized(),shouldRunNow&&callMain(s),postRun()))}runDependencies>0||(preRun(),runDependencies>0||(Module.setStatus?(Module.setStatus("Running..."),setTimeout((function(){setTimeout((function(){Module.setStatus("")}),1),e()}),1)):e()))}if(Module.AsciiToString=AsciiToString,Module.stringToUTF16=stringToUTF16,dependenciesFulfilled=function s(){calledRun||run(),calledRun||(dependenciesFulfilled=s)},Module.preInit)for(typeof Module.preInit=="function"&&(Module.preInit=[Module.preInit]);Module.preInit.length>0;)Module.preInit.pop()();var shouldRunNow=!0;Module.noInitialRun&&(shouldRunNow=!1),run();let C=Module,INTERNAL={},SIZE_OF_INT=4,SIZE_OF_CURSOR=4*SIZE_OF_INT,SIZE_OF_NODE=5*SIZE_OF_INT,SIZE_OF_POINT=2*SIZE_OF_INT,SIZE_OF_RANGE=2*SIZE_OF_INT+2*SIZE_OF_POINT,ZERO_POINT={row:0,column:0},QUERY_WORD_REGEX=/[\w-.]*/g,PREDICATE_STEP_TYPE_CAPTURE=1,PREDICATE_STEP_TYPE_STRING=2,LANGUAGE_FUNCTION_REGEX=/^_?tree_sitter_\w+/,VERSION,MIN_COMPATIBLE_VERSION,TRANSFER_BUFFER,currentParseCallback,currentLogCallback;class ParserImpl{static init(){TRANSFER_BUFFER=C._ts_init(),VERSION=getValue(TRANSFER_BUFFER,"i32"),MIN_COMPATIBLE_VERSION=getValue(TRANSFER_BUFFER+SIZE_OF_INT,"i32")}initialize(){C._ts_parser_new_wasm(),this[0]=getValue(TRANSFER_BUFFER,"i32"),this[1]=getValue(TRANSFER_BUFFER+SIZE_OF_INT,"i32")}delete(){C._ts_parser_delete(this[0]),C._free(this[1]),this[0]=0,this[1]=0}setLanguage(e){let t;if(e){if(e.constructor!==Language)throw new Error("Argument must be a Language");{t=e[0];let n=C._ts_language_version(t);if(n<MIN_COMPATIBLE_VERSION||VERSION<n)throw new Error(`Incompatible language version ${n}. Compatibility range ${MIN_COMPATIBLE_VERSION} through ${VERSION}.`)}}else t=0,e=null;return this.language=e,C._ts_parser_set_language(this[0],t),this}getLanguage(){return this.language}parse(e,t,n){if(typeof e=="string")currentParseCallback=(c,u)=>e.slice(c);else{if(typeof e!="function")throw new Error("Argument must be a string or a function");currentParseCallback=e}this.logCallback?(currentLogCallback=this.logCallback,C._ts_parser_enable_logger_wasm(this[0],1)):(currentLogCallback=null,C._ts_parser_enable_logger_wasm(this[0],0));let r=0,a=0;if(n?.includedRanges){r=n.includedRanges.length,a=C._calloc(r,SIZE_OF_RANGE);let c=a;for(let u=0;u<r;u++)marshalRange(c,n.includedRanges[u]),c+=SIZE_OF_RANGE}let o=C._ts_parser_parse_wasm(this[0],this[1],t?t[0]:0,a,r);if(!o)throw currentParseCallback=null,currentLogCallback=null,new Error("Parsing failed");let l=new Tree(INTERNAL,o,this.language,currentParseCallback);return currentParseCallback=null,currentLogCallback=null,l}reset(){C._ts_parser_reset(this[0])}getIncludedRanges(){C._ts_parser_included_ranges_wasm(this[0]);let e=getValue(TRANSFER_BUFFER,"i32"),t=getValue(TRANSFER_BUFFER+SIZE_OF_INT,"i32"),n=new Array(e);if(e>0){let r=t;for(let a=0;a<e;a++)n[a]=unmarshalRange(r),r+=SIZE_OF_RANGE;C._free(t)}return n}getTimeoutMicros(){return C._ts_parser_timeout_micros(this[0])}setTimeoutMicros(e){C._ts_parser_set_timeout_micros(this[0],e)}setLogger(e){if(e){if(typeof e!="function")throw new Error("Logger callback must be a function")}else e=null;return this.logCallback=e,this}getLogger(){return this.logCallback}}class Tree{constructor(e,t,n,r){assertInternal(e),this[0]=t,this.language=n,this.textCallback=r}copy(){let e=C._ts_tree_copy(this[0]);return new Tree(INTERNAL,e,this.language,this.textCallback)}delete(){C._ts_tree_delete(this[0]),this[0]=0}edit(e){marshalEdit(e),C._ts_tree_edit_wasm(this[0])}get rootNode(){return C._ts_tree_root_node_wasm(this[0]),unmarshalNode(this)}rootNodeWithOffset(e,t){let n=TRANSFER_BUFFER+SIZE_OF_NODE;return setValue(n,e,"i32"),marshalPoint(n+SIZE_OF_INT,t),C._ts_tree_root_node_with_offset_wasm(this[0]),unmarshalNode(this)}getLanguage(){return this.language}walk(){return this.rootNode.walk()}getChangedRanges(e){if(e.constructor!==Tree)throw new TypeError("Argument must be a Tree");C._ts_tree_get_changed_ranges_wasm(this[0],e[0]);let t=getValue(TRANSFER_BUFFER,"i32"),n=getValue(TRANSFER_BUFFER+SIZE_OF_INT,"i32"),r=new Array(t);if(t>0){let a=n;for(let o=0;o<t;o++)r[o]=unmarshalRange(a),a+=SIZE_OF_RANGE;C._free(n)}return r}getIncludedRanges(){C._ts_tree_included_ranges_wasm(this[0]);let e=getValue(TRANSFER_BUFFER,"i32"),t=getValue(TRANSFER_BUFFER+SIZE_OF_INT,"i32"),n=new Array(e);if(e>0){let r=t;for(let a=0;a<e;a++)n[a]=unmarshalRange(r),r+=SIZE_OF_RANGE;C._free(t)}return n}}class Node{constructor(e,t){assertInternal(e),this.tree=t}get typeId(){return marshalNode(this),C._ts_node_symbol_wasm(this.tree[0])}get grammarId(){return marshalNode(this),C._ts_node_grammar_symbol_wasm(this.tree[0])}get type(){return this.tree.language.types[this.typeId]||"ERROR"}get grammarType(){return this.tree.language.types[this.grammarId]||"ERROR"}get endPosition(){return marshalNode(this),C._ts_node_end_point_wasm(this.tree[0]),unmarshalPoint(TRANSFER_BUFFER)}get endIndex(){return marshalNode(this),C._ts_node_end_index_wasm(this.tree[0])}get text(){return getText(this.tree,this.startIndex,this.endIndex)}get parseState(){return marshalNode(this),C._ts_node_parse_state_wasm(this.tree[0])}get nextParseState(){return marshalNode(this),C._ts_node_next_parse_state_wasm(this.tree[0])}get isNamed(){return marshalNode(this),C._ts_node_is_named_wasm(this.tree[0])===1}get hasError(){return marshalNode(this),C._ts_node_has_error_wasm(this.tree[0])===1}get hasChanges(){return marshalNode(this),C._ts_node_has_changes_wasm(this.tree[0])===1}get isError(){return marshalNode(this),C._ts_node_is_error_wasm(this.tree[0])===1}get isMissing(){return marshalNode(this),C._ts_node_is_missing_wasm(this.tree[0])===1}get isExtra(){return marshalNode(this),C._ts_node_is_extra_wasm(this.tree[0])===1}equals(e){return this.id===e.id}child(e){return marshalNode(this),C._ts_node_child_wasm(this.tree[0],e),unmarshalNode(this.tree)}namedChild(e){return marshalNode(this),C._ts_node_named_child_wasm(this.tree[0],e),unmarshalNode(this.tree)}childForFieldId(e){return marshalNode(this),C._ts_node_child_by_field_id_wasm(this.tree[0],e),unmarshalNode(this.tree)}childForFieldName(e){let t=this.tree.language.fields.indexOf(e);return t!==-1?this.childForFieldId(t):null}fieldNameForChild(e){marshalNode(this);let t=C._ts_node_field_name_for_child_wasm(this.tree[0],e);return t?AsciiToString(t):null}childrenForFieldName(e){let t=this.tree.language.fields.indexOf(e);return t!==-1&&t!==0?this.childrenForFieldId(t):[]}childrenForFieldId(e){marshalNode(this),C._ts_node_children_by_field_id_wasm(this.tree[0],e);let t=getValue(TRANSFER_BUFFER,"i32"),n=getValue(TRANSFER_BUFFER+SIZE_OF_INT,"i32"),r=new Array(t);if(t>0){let a=n;for(let o=0;o<t;o++)r[o]=unmarshalNode(this.tree,a),a+=SIZE_OF_NODE;C._free(n)}return r}firstChildForIndex(e){return marshalNode(this),setValue(TRANSFER_BUFFER+SIZE_OF_NODE,e,"i32"),C._ts_node_first_child_for_byte_wasm(this.tree[0]),unmarshalNode(this.tree)}firstNamedChildForIndex(e){return marshalNode(this),setValue(TRANSFER_BUFFER+SIZE_OF_NODE,e,"i32"),C._ts_node_first_named_child_for_byte_wasm(this.tree[0]),unmarshalNode(this.tree)}get childCount(){return marshalNode(this),C._ts_node_child_count_wasm(this.tree[0])}get namedChildCount(){return marshalNode(this),C._ts_node_named_child_count_wasm(this.tree[0])}get firstChild(){return this.child(0)}get firstNamedChild(){return this.namedChild(0)}get lastChild(){return this.child(this.childCount-1)}get lastNamedChild(){return this.namedChild(this.namedChildCount-1)}get children(){if(!this._children){marshalNode(this),C._ts_node_children_wasm(this.tree[0]);let e=getValue(TRANSFER_BUFFER,"i32"),t=getValue(TRANSFER_BUFFER+SIZE_OF_INT,"i32");if(this._children=new Array(e),e>0){let n=t;for(let r=0;r<e;r++)this._children[r]=unmarshalNode(this.tree,n),n+=SIZE_OF_NODE;C._free(t)}}return this._children}get namedChildren(){if(!this._namedChildren){marshalNode(this),C._ts_node_named_children_wasm(this.tree[0]);let e=getValue(TRANSFER_BUFFER,"i32"),t=getValue(TRANSFER_BUFFER+SIZE_OF_INT,"i32");if(this._namedChildren=new Array(e),e>0){let n=t;for(let r=0;r<e;r++)this._namedChildren[r]=unmarshalNode(this.tree,n),n+=SIZE_OF_NODE;C._free(t)}}return this._namedChildren}descendantsOfType(e,t,n){Array.isArray(e)||(e=[e]),t||(t=ZERO_POINT),n||(n=ZERO_POINT);let r=[],a=this.tree.language.types;for(let h=0,d=a.length;h<d;h++)e.includes(a[h])&&r.push(h);let o=C._malloc(SIZE_OF_INT*r.length);for(let h=0,d=r.length;h<d;h++)setValue(o+h*SIZE_OF_INT,r[h],"i32");marshalNode(this),C._ts_node_descendants_of_type_wasm(this.tree[0],o,r.length,t.row,t.column,n.row,n.column);let l=getValue(TRANSFER_BUFFER,"i32"),c=getValue(TRANSFER_BUFFER+SIZE_OF_INT,"i32"),u=new Array(l);if(l>0){let h=c;for(let d=0;d<l;d++)u[d]=unmarshalNode(this.tree,h),h+=SIZE_OF_NODE}return C._free(c),C._free(o),u}get nextSibling(){return marshalNode(this),C._ts_node_next_sibling_wasm(this.tree[0]),unmarshalNode(this.tree)}get previousSibling(){return marshalNode(this),C._ts_node_prev_sibling_wasm(this.tree[0]),unmarshalNode(this.tree)}get nextNamedSibling(){return marshalNode(this),C._ts_node_next_named_sibling_wasm(this.tree[0]),unmarshalNode(this.tree)}get previousNamedSibling(){return marshalNode(this),C._ts_node_prev_named_sibling_wasm(this.tree[0]),unmarshalNode(this.tree)}get descendantCount(){return marshalNode(this),C._ts_node_descendant_count_wasm(this.tree[0])}get parent(){return marshalNode(this),C._ts_node_parent_wasm(this.tree[0]),unmarshalNode(this.tree)}descendantForIndex(e,t=e){if(typeof e!="number"||typeof t!="number")throw new Error("Arguments must be numbers");marshalNode(this);let n=TRANSFER_BUFFER+SIZE_OF_NODE;return setValue(n,e,"i32"),setValue(n+SIZE_OF_INT,t,"i32"),C._ts_node_descendant_for_index_wasm(this.tree[0]),unmarshalNode(this.tree)}namedDescendantForIndex(e,t=e){if(typeof e!="number"||typeof t!="number")throw new Error("Arguments must be numbers");marshalNode(this);let n=TRANSFER_BUFFER+SIZE_OF_NODE;return setValue(n,e,"i32"),setValue(n+SIZE_OF_INT,t,"i32"),C._ts_node_named_descendant_for_index_wasm(this.tree[0]),unmarshalNode(this.tree)}descendantForPosition(e,t=e){if(!isPoint(e)||!isPoint(t))throw new Error("Arguments must be {row, column} objects");marshalNode(this);let n=TRANSFER_BUFFER+SIZE_OF_NODE;return marshalPoint(n,e),marshalPoint(n+SIZE_OF_POINT,t),C._ts_node_descendant_for_position_wasm(this.tree[0]),unmarshalNode(this.tree)}namedDescendantForPosition(e,t=e){if(!isPoint(e)||!isPoint(t))throw new Error("Arguments must be {row, column} objects");marshalNode(this);let n=TRANSFER_BUFFER+SIZE_OF_NODE;return marshalPoint(n,e),marshalPoint(n+SIZE_OF_POINT,t),C._ts_node_named_descendant_for_position_wasm(this.tree[0]),unmarshalNode(this.tree)}walk(){return marshalNode(this),C._ts_tree_cursor_new_wasm(this.tree[0]),new TreeCursor(INTERNAL,this.tree)}toString(){marshalNode(this);let e=C._ts_node_to_string_wasm(this.tree[0]),t=AsciiToString(e);return C._free(e),t}}class TreeCursor{constructor(e,t){assertInternal(e),this.tree=t,unmarshalTreeCursor(this)}delete(){marshalTreeCursor(this),C._ts_tree_cursor_delete_wasm(this.tree[0]),this[0]=this[1]=this[2]=0}reset(e){marshalNode(e),marshalTreeCursor(this,TRANSFER_BUFFER+SIZE_OF_NODE),C._ts_tree_cursor_reset_wasm(this.tree[0]),unmarshalTreeCursor(this)}resetTo(e){marshalTreeCursor(this,TRANSFER_BUFFER),marshalTreeCursor(e,TRANSFER_BUFFER+SIZE_OF_CURSOR),C._ts_tree_cursor_reset_to_wasm(this.tree[0],e.tree[0]),unmarshalTreeCursor(this)}get nodeType(){return this.tree.language.types[this.nodeTypeId]||"ERROR"}get nodeTypeId(){return marshalTreeCursor(this),C._ts_tree_cursor_current_node_type_id_wasm(this.tree[0])}get nodeStateId(){return marshalTreeCursor(this),C._ts_tree_cursor_current_node_state_id_wasm(this.tree[0])}get nodeId(){return marshalTreeCursor(this),C._ts_tree_cursor_current_node_id_wasm(this.tree[0])}get nodeIsNamed(){return marshalTreeCursor(this),C._ts_tree_cursor_current_node_is_named_wasm(this.tree[0])===1}get nodeIsMissing(){return marshalTreeCursor(this),C._ts_tree_cursor_current_node_is_missing_wasm(this.tree[0])===1}get nodeText(){marshalTreeCursor(this);let e=C._ts_tree_cursor_start_index_wasm(this.tree[0]),t=C._ts_tree_cursor_end_index_wasm(this.tree[0]);return getText(this.tree,e,t)}get startPosition(){return marshalTreeCursor(this),C._ts_tree_cursor_start_position_wasm(this.tree[0]),unmarshalPoint(TRANSFER_BUFFER)}get endPosition(){return marshalTreeCursor(this),C._ts_tree_cursor_end_position_wasm(this.tree[0]),unmarshalPoint(TRANSFER_BUFFER)}get startIndex(){return marshalTreeCursor(this),C._ts_tree_cursor_start_index_wasm(this.tree[0])}get endIndex(){return marshalTreeCursor(this),C._ts_tree_cursor_end_index_wasm(this.tree[0])}get currentNode(){return marshalTreeCursor(this),C._ts_tree_cursor_current_node_wasm(this.tree[0]),unmarshalNode(this.tree)}get currentFieldId(){return marshalTreeCursor(this),C._ts_tree_cursor_current_field_id_wasm(this.tree[0])}get currentFieldName(){return this.tree.language.fields[this.currentFieldId]}get currentDepth(){return marshalTreeCursor(this),C._ts_tree_cursor_current_depth_wasm(this.tree[0])}get currentDescendantIndex(){return marshalTreeCursor(this),C._ts_tree_cursor_current_descendant_index_wasm(this.tree[0])}gotoFirstChild(){marshalTreeCursor(this);let e=C._ts_tree_cursor_goto_first_child_wasm(this.tree[0]);return unmarshalTreeCursor(this),e===1}gotoLastChild(){marshalTreeCursor(this);let e=C._ts_tree_cursor_goto_last_child_wasm(this.tree[0]);return unmarshalTreeCursor(this),e===1}gotoFirstChildForIndex(e){marshalTreeCursor(this),setValue(TRANSFER_BUFFER+SIZE_OF_CURSOR,e,"i32");let t=C._ts_tree_cursor_goto_first_child_for_index_wasm(this.tree[0]);return unmarshalTreeCursor(this),t===1}gotoFirstChildForPosition(e){marshalTreeCursor(this),marshalPoint(TRANSFER_BUFFER+SIZE_OF_CURSOR,e);let t=C._ts_tree_cursor_goto_first_child_for_position_wasm(this.tree[0]);return unmarshalTreeCursor(this),t===1}gotoNextSibling(){marshalTreeCursor(this);let e=C._ts_tree_cursor_goto_next_sibling_wasm(this.tree[0]);return unmarshalTreeCursor(this),e===1}gotoPreviousSibling(){marshalTreeCursor(this);let e=C._ts_tree_cursor_goto_previous_sibling_wasm(this.tree[0]);return unmarshalTreeCursor(this),e===1}gotoDescendant(e){marshalTreeCursor(this),C._ts_tree_cursor_goto_descendant_wasm(this.tree[0],e),unmarshalTreeCursor(this)}gotoParent(){marshalTreeCursor(this);let e=C._ts_tree_cursor_goto_parent_wasm(this.tree[0]);return unmarshalTreeCursor(this),e===1}}class Language{constructor(e,t){assertInternal(e),this[0]=t,this.types=new Array(C._ts_language_symbol_count(this[0]));for(let n=0,r=this.types.length;n<r;n++)C._ts_language_symbol_type(this[0],n)<2&&(this.types[n]=UTF8ToString(C._ts_language_symbol_name(this[0],n)));this.fields=new Array(C._ts_language_field_count(this[0])+1);for(let n=0,r=this.fields.length;n<r;n++){let a=C._ts_language_field_name_for_id(this[0],n);this.fields[n]=a!==0?UTF8ToString(a):null}}get version(){return C._ts_language_version(this[0])}get fieldCount(){return this.fields.length-1}get stateCount(){return C._ts_language_state_count(this[0])}fieldIdForName(e){let t=this.fields.indexOf(e);return t!==-1?t:null}fieldNameForId(e){return this.fields[e]||null}idForNodeType(e,t){let n=lengthBytesUTF8(e),r=C._malloc(n+1);stringToUTF8(e,r,n+1);let a=C._ts_language_symbol_for_name(this[0],r,n,t);return C._free(r),a||null}get nodeTypeCount(){return C._ts_language_symbol_count(this[0])}nodeTypeForId(e){let t=C._ts_language_symbol_name(this[0],e);return t?UTF8ToString(t):null}nodeTypeIsNamed(e){return!!C._ts_language_type_is_named_wasm(this[0],e)}nodeTypeIsVisible(e){return!!C._ts_language_type_is_visible_wasm(this[0],e)}nextState(e,t){return C._ts_language_next_state(this[0],e,t)}lookaheadIterator(e){let t=C._ts_lookahead_iterator_new(this[0],e);return t?new LookaheadIterable(INTERNAL,t,this):null}query(e){let t=lengthBytesUTF8(e),n=C._malloc(t+1);stringToUTF8(e,n,t+1);let r=C._ts_query_new(this[0],n,t,TRANSFER_BUFFER,TRANSFER_BUFFER+SIZE_OF_INT);if(!r){let g=getValue(TRANSFER_BUFFER+SIZE_OF_INT,"i32"),_=getValue(TRANSFER_BUFFER,"i32"),b=UTF8ToString(n,_).length,w=e.substr(b,100).split(`
3
- `)[0],k,v=w.match(QUERY_WORD_REGEX)[0];switch(g){case 2:k=new RangeError(`Bad node name '${v}'`);break;case 3:k=new RangeError(`Bad field name '${v}'`);break;case 4:k=new RangeError(`Bad capture name @${v}`);break;case 5:k=new TypeError(`Bad pattern structure at offset ${b}: '${w}'...`),v="";break;default:k=new SyntaxError(`Bad syntax at offset ${b}: '${w}'...`),v=""}throw k.index=b,k.length=v.length,C._free(n),k}let a=C._ts_query_string_count(r),o=C._ts_query_capture_count(r),l=C._ts_query_pattern_count(r),c=new Array(o),u=new Array(a);for(let g=0;g<o;g++){let _=C._ts_query_capture_name_for_id(r,g,TRANSFER_BUFFER),b=getValue(TRANSFER_BUFFER,"i32");c[g]=UTF8ToString(_,b)}for(let g=0;g<a;g++){let _=C._ts_query_string_value_for_id(r,g,TRANSFER_BUFFER),b=getValue(TRANSFER_BUFFER,"i32");u[g]=UTF8ToString(_,b)}let h=new Array(l),d=new Array(l),p=new Array(l),f=new Array(l),m=new Array(l);for(let g=0;g<l;g++){let _=C._ts_query_predicates_for_pattern(r,g,TRANSFER_BUFFER),b=getValue(TRANSFER_BUFFER,"i32");f[g]=[],m[g]=[];let w=[],k=_;for(let v=0;v<b;v++){let R=getValue(k,"i32");k+=SIZE_OF_INT;let W=getValue(k,"i32");if(k+=SIZE_OF_INT,R===PREDICATE_STEP_TYPE_CAPTURE)w.push({type:"capture",name:c[W]});else if(R===PREDICATE_STEP_TYPE_STRING)w.push({type:"string",value:u[W]});else if(w.length>0){if(w[0].type!=="string")throw new Error("Predicates must begin with a literal value");let j=w[0].value,M,N=!0,P=!0;switch(j){case"any-not-eq?":case"not-eq?":N=!1;case"any-eq?":case"eq?":if(w.length!==3)throw new Error(`Wrong number of arguments to \`#${j}\` predicate. Expected 2, got ${w.length-1}`);if(w[1].type!=="capture")throw new Error(`First argument of \`#${j}\` predicate must be a capture. Got "${w[1].value}"`);if(P=!j.startsWith("any-"),w[2].type==="capture"){let q=w[1].name,G=w[2].name;m[g].push((ee=>{let re=[],Re=[];for(let pe of ee)pe.name===q&&re.push(pe.node),pe.name===G&&Re.push(pe.node);let ht=(pe,Ze,Ia)=>Ia?pe.text===Ze.text:pe.text!==Ze.text;return P?re.every((pe=>Re.some((Ze=>ht(pe,Ze,N))))):re.some((pe=>Re.some((Ze=>ht(pe,Ze,N)))))}))}else{M=w[1].name;let q=w[2].value,G=re=>re.text===q,ee=re=>re.text!==q;m[g].push((re=>{let Re=[];for(let pe of re)pe.name===M&&Re.push(pe.node);let ht=N?G:ee;return P?Re.every(ht):Re.some(ht)}))}break;case"any-not-match?":case"not-match?":N=!1;case"any-match?":case"match?":if(w.length!==3)throw new Error(`Wrong number of arguments to \`#${j}\` predicate. Expected 2, got ${w.length-1}.`);if(w[1].type!=="capture")throw new Error(`First argument of \`#${j}\` predicate must be a capture. Got "${w[1].value}".`);if(w[2].type!=="string")throw new Error(`Second argument of \`#${j}\` predicate must be a string. Got @${w[2].value}.`);M=w[1].name;let V=new RegExp(w[2].value);P=!j.startsWith("any-"),m[g].push((q=>{let G=[];for(let re of q)re.name===M&&G.push(re.node.text);let ee=(re,Re)=>Re?V.test(re):!V.test(re);return G.length===0?!N:P?G.every((re=>ee(re,N))):G.some((re=>ee(re,N)))}));break;case"set!":if(w.length<2||w.length>3)throw new Error(`Wrong number of arguments to \`#set!\` predicate. Expected 1 or 2. Got ${w.length-1}.`);if(w.some((q=>q.type!=="string")))throw new Error('Arguments to `#set!` predicate must be a strings.".');h[g]||(h[g]={}),h[g][w[1].value]=w[2]?w[2].value:null;break;case"is?":case"is-not?":if(w.length<2||w.length>3)throw new Error(`Wrong number of arguments to \`#${j}\` predicate. Expected 1 or 2. Got ${w.length-1}.`);if(w.some((q=>q.type!=="string")))throw new Error(`Arguments to \`#${j}\` predicate must be a strings.".`);let I=j==="is?"?d:p;I[g]||(I[g]={}),I[g][w[1].value]=w[2]?w[2].value:null;break;case"not-any-of?":N=!1;case"any-of?":if(w.length<2)throw new Error(`Wrong number of arguments to \`#${j}\` predicate. Expected at least 1. Got ${w.length-1}.`);if(w[1].type!=="capture")throw new Error(`First argument of \`#${j}\` predicate must be a capture. Got "${w[1].value}".`);for(let q=2;q<w.length;q++)if(w[q].type!=="string")throw new Error(`Arguments to \`#${j}\` predicate must be a strings.".`);M=w[1].name;let H=w.slice(2).map((q=>q.value));m[g].push((q=>{let G=[];for(let ee of q)ee.name===M&&G.push(ee.node.text);return G.length===0?!N:G.every((ee=>H.includes(ee)))===N}));break;default:f[g].push({operator:j,operands:w.slice(1)})}w.length=0}}Object.freeze(h[g]),Object.freeze(d[g]),Object.freeze(p[g])}return C._free(n),new Query(INTERNAL,r,c,m,f,Object.freeze(h),Object.freeze(d),Object.freeze(p))}static load(e){let t;if(e instanceof Uint8Array)t=Promise.resolve(e);else{let n=e;if(typeof process<"u"&&process.versions&&process.versions.node){let r=require("fs");t=Promise.resolve(r.readFileSync(n))}else t=fetch(n).then((r=>r.arrayBuffer().then((a=>{if(r.ok)return new Uint8Array(a);{let o=new TextDecoder("utf-8").decode(a);throw new Error(`Language.load failed with status ${r.status}.
2
+ "use strict";var ja=Object.create;var Lt=Object.defineProperty;var qa=Object.getOwnPropertyDescriptor;var Da=Object.getOwnPropertyNames;var Ua=Object.getPrototypeOf,za=Object.prototype.hasOwnProperty;var Wa=(s,e)=>()=>{try{return e||s((e={exports:{}}).exports,e),e.exports}catch(t){throw e=0,t}},Va=(s,e)=>{for(var t in e)Lt(s,t,{get:e[t],enumerable:!0})},Js=(s,e,t,n)=>{if(e&&typeof e=="object"||typeof e=="function")for(let r of Da(e))!za.call(s,r)&&r!==t&&Lt(s,r,{get:()=>e[r],enumerable:!(n=qa(e,r))||n.enumerable});return s};var Mn=(s,e,t)=>(t=s!=null?ja(Ua(s)):{},Js(e||!s||!s.__esModule?Lt(t,"default",{value:s,enumerable:!0}):t,s)),Ja=s=>Js(Lt({},"__esModule",{value:!0}),s);var Ta=Wa((exports,module)=>{var Module=Module!==void 0?Module:{},TreeSitter=(function(){var initPromise,document=typeof window=="object"?{currentScript:window.document.currentScript}:null;class Parser{constructor(){this.initialize()}initialize(){throw new Error("cannot construct a Parser before calling `init()`")}static init(moduleOptions){return initPromise||(Module=Object.assign({},Module,moduleOptions),initPromise=new Promise((resolveInitPromise=>{var moduleOverrides=Object.assign({},Module),arguments_=[],thisProgram="./this.program",quit_=(s,e)=>{throw e},ENVIRONMENT_IS_WEB=typeof window=="object",ENVIRONMENT_IS_WORKER=typeof importScripts=="function",ENVIRONMENT_IS_NODE=typeof process=="object"&&typeof process.versions=="object"&&typeof process.versions.node=="string",scriptDirectory="",read_,readAsync,readBinary;function locateFile(s){return Module.locateFile?Module.locateFile(s,scriptDirectory):scriptDirectory+s}if(ENVIRONMENT_IS_NODE){var fs=require("fs"),nodePath=require("path");scriptDirectory=ENVIRONMENT_IS_WORKER?nodePath.dirname(scriptDirectory)+"/":__dirname+"/",read_=(s,e)=>(s=isFileURI(s)?new URL(s):nodePath.normalize(s),fs.readFileSync(s,e?void 0:"utf8")),readBinary=s=>{var e=read_(s,!0);return e.buffer||(e=new Uint8Array(e)),e},readAsync=(s,e,t,n=!0)=>{s=isFileURI(s)?new URL(s):nodePath.normalize(s),fs.readFile(s,n?void 0:"utf8",((r,a)=>{r?t(r):e(n?a.buffer:a)}))},!Module.thisProgram&&process.argv.length>1&&(thisProgram=process.argv[1].replace(/\\/g,"/")),arguments_=process.argv.slice(2),typeof module<"u"&&(module.exports=Module),quit_=(s,e)=>{throw process.exitCode=s,e}}else(ENVIRONMENT_IS_WEB||ENVIRONMENT_IS_WORKER)&&(ENVIRONMENT_IS_WORKER?scriptDirectory=self.location.href:document!==void 0&&document.currentScript&&(scriptDirectory=document.currentScript.src),scriptDirectory=scriptDirectory.startsWith("blob:")?"":scriptDirectory.substr(0,scriptDirectory.replace(/[?#].*/,"").lastIndexOf("/")+1),read_=s=>{var e=new XMLHttpRequest;return e.open("GET",s,!1),e.send(null),e.responseText},ENVIRONMENT_IS_WORKER&&(readBinary=s=>{var e=new XMLHttpRequest;return e.open("GET",s,!1),e.responseType="arraybuffer",e.send(null),new Uint8Array(e.response)}),readAsync=(s,e,t)=>{var n=new XMLHttpRequest;n.open("GET",s,!0),n.responseType="arraybuffer",n.onload=()=>{n.status==200||n.status==0&&n.response?e(n.response):t()},n.onerror=t,n.send(null)});var out=Module.print||console.log.bind(console),err=Module.printErr||console.error.bind(console);Object.assign(Module,moduleOverrides),moduleOverrides=null,Module.arguments&&(arguments_=Module.arguments),Module.thisProgram&&(thisProgram=Module.thisProgram),Module.quit&&(quit_=Module.quit);var dynamicLibraries=Module.dynamicLibraries||[],wasmBinary,wasmMemory;Module.wasmBinary&&(wasmBinary=Module.wasmBinary),typeof WebAssembly!="object"&&abort("no native wasm support detected");var ABORT=!1,EXITSTATUS,HEAP8,HEAPU8,HEAP16,HEAPU16,HEAP32,HEAPU32,HEAPF32,HEAPF64;function updateMemoryViews(){var s=wasmMemory.buffer;Module.HEAP8=HEAP8=new Int8Array(s),Module.HEAP16=HEAP16=new Int16Array(s),Module.HEAPU8=HEAPU8=new Uint8Array(s),Module.HEAPU16=HEAPU16=new Uint16Array(s),Module.HEAP32=HEAP32=new Int32Array(s),Module.HEAPU32=HEAPU32=new Uint32Array(s),Module.HEAPF32=HEAPF32=new Float32Array(s),Module.HEAPF64=HEAPF64=new Float64Array(s)}var INITIAL_MEMORY=Module.INITIAL_MEMORY||33554432;wasmMemory=Module.wasmMemory?Module.wasmMemory:new WebAssembly.Memory({initial:INITIAL_MEMORY/65536,maximum:32768}),updateMemoryViews(),INITIAL_MEMORY=wasmMemory.buffer.byteLength;var __ATPRERUN__=[],__ATINIT__=[],__ATMAIN__=[],__ATPOSTRUN__=[],__RELOC_FUNCS__=[],runtimeInitialized=!1;function preRun(){if(Module.preRun)for(typeof Module.preRun=="function"&&(Module.preRun=[Module.preRun]);Module.preRun.length;)addOnPreRun(Module.preRun.shift());callRuntimeCallbacks(__ATPRERUN__)}function initRuntime(){runtimeInitialized=!0,callRuntimeCallbacks(__RELOC_FUNCS__),callRuntimeCallbacks(__ATINIT__)}function preMain(){callRuntimeCallbacks(__ATMAIN__)}function postRun(){if(Module.postRun)for(typeof Module.postRun=="function"&&(Module.postRun=[Module.postRun]);Module.postRun.length;)addOnPostRun(Module.postRun.shift());callRuntimeCallbacks(__ATPOSTRUN__)}function addOnPreRun(s){__ATPRERUN__.unshift(s)}function addOnInit(s){__ATINIT__.unshift(s)}function addOnPostRun(s){__ATPOSTRUN__.unshift(s)}var runDependencies=0,runDependencyWatcher=null,dependenciesFulfilled=null;function getUniqueRunDependency(s){return s}function addRunDependency(s){runDependencies++,Module.monitorRunDependencies?.(runDependencies)}function removeRunDependency(s){if(runDependencies--,Module.monitorRunDependencies?.(runDependencies),runDependencies==0&&(runDependencyWatcher!==null&&(clearInterval(runDependencyWatcher),runDependencyWatcher=null),dependenciesFulfilled)){var e=dependenciesFulfilled;dependenciesFulfilled=null,e()}}function abort(s){throw Module.onAbort?.(s),err(s="Aborted("+s+")"),ABORT=!0,EXITSTATUS=1,s+=". Build with -sASSERTIONS for more info.",new WebAssembly.RuntimeError(s)}var dataURIPrefix="data:application/octet-stream;base64,",isDataURI=s=>s.startsWith(dataURIPrefix),isFileURI=s=>s.startsWith("file://"),wasmBinaryFile;function getBinarySync(s){if(s==wasmBinaryFile&&wasmBinary)return new Uint8Array(wasmBinary);if(readBinary)return readBinary(s);throw"both async and sync fetching of the wasm failed"}function getBinaryPromise(s){if(!wasmBinary&&(ENVIRONMENT_IS_WEB||ENVIRONMENT_IS_WORKER)){if(typeof fetch=="function"&&!isFileURI(s))return fetch(s,{credentials:"same-origin"}).then((e=>{if(!e.ok)throw`failed to load wasm binary file at '${s}'`;return e.arrayBuffer()})).catch((()=>getBinarySync(s)));if(readAsync)return new Promise(((e,t)=>{readAsync(s,(n=>e(new Uint8Array(n))),t)}))}return Promise.resolve().then((()=>getBinarySync(s)))}function instantiateArrayBuffer(s,e,t){return getBinaryPromise(s).then((n=>WebAssembly.instantiate(n,e))).then(t,(n=>{err(`failed to asynchronously prepare wasm: ${n}`),abort(n)}))}function instantiateAsync(s,e,t,n){return s||typeof WebAssembly.instantiateStreaming!="function"||isDataURI(e)||isFileURI(e)||ENVIRONMENT_IS_NODE||typeof fetch!="function"?instantiateArrayBuffer(e,t,n):fetch(e,{credentials:"same-origin"}).then((r=>WebAssembly.instantiateStreaming(r,t).then(n,(function(a){return err(`wasm streaming compile failed: ${a}`),err("falling back to ArrayBuffer instantiation"),instantiateArrayBuffer(e,t,n)}))))}function createWasm(){var s={env:wasmImports,wasi_snapshot_preview1:wasmImports,"GOT.mem":new Proxy(wasmImports,GOTHandler),"GOT.func":new Proxy(wasmImports,GOTHandler)};function e(t,n){wasmExports=t.exports,wasmExports=relocateExports(wasmExports,1024);var r=getDylinkMetadata(n);return r.neededDynlibs&&(dynamicLibraries=r.neededDynlibs.concat(dynamicLibraries)),mergeLibSymbols(wasmExports,"main"),LDSO.init(),loadDylibs(),addOnInit(wasmExports.__wasm_call_ctors),__RELOC_FUNCS__.push(wasmExports.__wasm_apply_data_relocs),removeRunDependency("wasm-instantiate"),wasmExports}if(addRunDependency("wasm-instantiate"),Module.instantiateWasm)try{return Module.instantiateWasm(s,e)}catch(t){return err(`Module.instantiateWasm callback failed with error: ${t}`),!1}return instantiateAsync(wasmBinary,wasmBinaryFile,s,(function(t){e(t.instance,t.module)})),{}}wasmBinaryFile="tree-sitter.wasm",isDataURI(wasmBinaryFile)||(wasmBinaryFile=locateFile(wasmBinaryFile));var ASM_CONSTS={};function ExitStatus(s){this.name="ExitStatus",this.message=`Program terminated with exit(${s})`,this.status=s}var GOT={},currentModuleWeakSymbols=new Set([]),GOTHandler={get(s,e){var t=GOT[e];return t||(t=GOT[e]=new WebAssembly.Global({value:"i32",mutable:!0})),currentModuleWeakSymbols.has(e)||(t.required=!0),t}},callRuntimeCallbacks=s=>{for(;s.length>0;)s.shift()(Module)},UTF8Decoder=typeof TextDecoder<"u"?new TextDecoder("utf8"):void 0,UTF8ArrayToString=(s,e,t)=>{for(var n=e+t,r=e;s[r]&&!(r>=n);)++r;if(r-e>16&&s.buffer&&UTF8Decoder)return UTF8Decoder.decode(s.subarray(e,r));for(var a="";e<r;){var o=s[e++];if(128&o){var l=63&s[e++];if((224&o)!=192){var c=63&s[e++];if((o=(240&o)==224?(15&o)<<12|l<<6|c:(7&o)<<18|l<<12|c<<6|63&s[e++])<65536)a+=String.fromCharCode(o);else{var u=o-65536;a+=String.fromCharCode(55296|u>>10,56320|1023&u)}}else a+=String.fromCharCode((31&o)<<6|l)}else a+=String.fromCharCode(o)}return a},getDylinkMetadata=s=>{var e=0,t=0;function n(){for(var b=0,w=1;;){var y=s[e++];if(b+=(127&y)*w,w*=128,!(128&y))break}return b}function r(){var b=n();return UTF8ArrayToString(s,(e+=b)-b,b)}function a(b,w){if(b)throw new Error(w)}var o="dylink.0";if(s instanceof WebAssembly.Module){var l=WebAssembly.Module.customSections(s,o);l.length===0&&(o="dylink",l=WebAssembly.Module.customSections(s,o)),a(l.length===0,"need dylink section"),t=(s=new Uint8Array(l[0])).length}else{a(new Uint32Array(new Uint8Array(s.subarray(0,24)).buffer)[0]!=1836278016,"need to see wasm magic number"),a(s[8]!==0,"need the dylink section to be first"),e=9;var c=n();t=e+c,o=r()}var u={neededDynlibs:[],tlsExports:new Set,weakImports:new Set};if(o=="dylink"){u.memorySize=n(),u.memoryAlign=n(),u.tableSize=n(),u.tableAlign=n();for(var h=n(),d=0;d<h;++d){var p=r();u.neededDynlibs.push(p)}}else for(a(o!=="dylink.0");e<t;){var f=s[e++],m=n();if(f===1)u.memorySize=n(),u.memoryAlign=n(),u.tableSize=n(),u.tableAlign=n();else if(f===2)for(h=n(),d=0;d<h;++d)p=r(),u.neededDynlibs.push(p);else if(f===3)for(var g=n();g--;){var _=r();256&n()&&u.tlsExports.add(_)}else if(f===4)for(g=n();g--;)r(),_=r(),(3&n())==1&&u.weakImports.add(_);else e+=m}return u};function getValue(s,e="i8"){switch(e.endsWith("*")&&(e="*"),e){case"i1":case"i8":return HEAP8[s];case"i16":return HEAP16[s>>1];case"i32":return HEAP32[s>>2];case"i64":abort("to do getValue(i64) use WASM_BIGINT");case"float":return HEAPF32[s>>2];case"double":return HEAPF64[s>>3];case"*":return HEAPU32[s>>2];default:abort(`invalid type for getValue: ${e}`)}}var newDSO=(s,e,t)=>{var n={refcount:1/0,name:s,exports:t,global:!0};return LDSO.loadedLibsByName[s]=n,e!=null&&(LDSO.loadedLibsByHandle[e]=n),n},LDSO={loadedLibsByName:{},loadedLibsByHandle:{},init(){newDSO("__main__",0,wasmImports)}},___heap_base=78096,zeroMemory=(s,e)=>(HEAPU8.fill(0,s,s+e),s),alignMemory=(s,e)=>Math.ceil(s/e)*e,getMemory=s=>{if(runtimeInitialized)return zeroMemory(_malloc(s),s);var e=___heap_base,t=e+alignMemory(s,16);return ___heap_base=t,GOT.__heap_base.value=t,e},isInternalSym=s=>["__cpp_exception","__c_longjmp","__wasm_apply_data_relocs","__dso_handle","__tls_size","__tls_align","__set_stack_limits","_emscripten_tls_init","__wasm_init_tls","__wasm_call_ctors","__start_em_asm","__stop_em_asm","__start_em_js","__stop_em_js"].includes(s)||s.startsWith("__em_js__"),uleb128Encode=(s,e)=>{s<128?e.push(s):e.push(s%128|128,s>>7)},sigToWasmTypes=s=>{for(var e={i:"i32",j:"i64",f:"f32",d:"f64",e:"externref",p:"i32"},t={parameters:[],results:s[0]=="v"?[]:[e[s[0]]]},n=1;n<s.length;++n)t.parameters.push(e[s[n]]);return t},generateFuncType=(s,e)=>{var t=s.slice(0,1),n=s.slice(1),r={i:127,p:127,j:126,f:125,d:124,e:111};e.push(96),uleb128Encode(n.length,e);for(var a=0;a<n.length;++a)e.push(r[n[a]]);t=="v"?e.push(0):e.push(1,r[t])},convertJsFunctionToWasm=(s,e)=>{if(typeof WebAssembly.Function=="function")return new WebAssembly.Function(sigToWasmTypes(e),s);var t=[1];generateFuncType(e,t);var n=[0,97,115,109,1,0,0,0,1];uleb128Encode(t.length,n),n.push(...t),n.push(2,7,1,1,101,1,102,0,0,7,5,1,1,102,0,0);var r=new WebAssembly.Module(new Uint8Array(n));return new WebAssembly.Instance(r,{e:{f:s}}).exports.f},wasmTableMirror=[],wasmTable=new WebAssembly.Table({initial:27,element:"anyfunc"}),getWasmTableEntry=s=>{var e=wasmTableMirror[s];return e||(s>=wasmTableMirror.length&&(wasmTableMirror.length=s+1),wasmTableMirror[s]=e=wasmTable.get(s)),e},updateTableMap=(s,e)=>{if(functionsInTableMap)for(var t=s;t<s+e;t++){var n=getWasmTableEntry(t);n&&functionsInTableMap.set(n,t)}},functionsInTableMap,getFunctionAddress=s=>(functionsInTableMap||(functionsInTableMap=new WeakMap,updateTableMap(0,wasmTable.length)),functionsInTableMap.get(s)||0),freeTableIndexes=[],getEmptyTableSlot=()=>{if(freeTableIndexes.length)return freeTableIndexes.pop();try{wasmTable.grow(1)}catch(s){throw s instanceof RangeError?"Unable to grow wasm table. Set ALLOW_TABLE_GROWTH.":s}return wasmTable.length-1},setWasmTableEntry=(s,e)=>{wasmTable.set(s,e),wasmTableMirror[s]=wasmTable.get(s)},addFunction=(s,e)=>{var t=getFunctionAddress(s);if(t)return t;var n=getEmptyTableSlot();try{setWasmTableEntry(n,s)}catch(a){if(!(a instanceof TypeError))throw a;var r=convertJsFunctionToWasm(s,e);setWasmTableEntry(n,r)}return functionsInTableMap.set(s,n),n},updateGOT=(s,e)=>{for(var t in s)if(!isInternalSym(t)){var n=s[t];t.startsWith("orig$")&&(t=t.split("$")[1],e=!0),GOT[t]||=new WebAssembly.Global({value:"i32",mutable:!0}),(e||GOT[t].value==0)&&(typeof n=="function"?GOT[t].value=addFunction(n):typeof n=="number"?GOT[t].value=n:err(`unhandled export type for '${t}': ${typeof n}`))}},relocateExports=(s,e,t)=>{var n={};for(var r in s){var a=s[r];typeof a=="object"&&(a=a.value),typeof a=="number"&&(a+=e),n[r]=a}return updateGOT(n,t),n},isSymbolDefined=s=>{var e=wasmImports[s];return!(!e||e.stub)},dynCallLegacy=(s,e,t)=>(0,Module["dynCall_"+s])(e,...t),dynCall=(s,e,t=[])=>s.includes("j")?dynCallLegacy(s,e,t):getWasmTableEntry(e)(...t),createInvokeFunction=s=>function(){var e=stackSave();try{return dynCall(s,arguments[0],Array.prototype.slice.call(arguments,1))}catch(t){if(stackRestore(e),t!==t+0)throw t;_setThrew(1,0)}},resolveGlobalSymbol=(s,e=!1)=>{var t;return e&&"orig$"+s in wasmImports&&(s="orig$"+s),isSymbolDefined(s)?t=wasmImports[s]:s.startsWith("invoke_")&&(t=wasmImports[s]=createInvokeFunction(s.split("_")[1])),{sym:t,name:s}},UTF8ToString=(s,e)=>s?UTF8ArrayToString(HEAPU8,s,e):"",loadWebAssemblyModule=(binary,flags,libName,localScope,handle)=>{var metadata=getDylinkMetadata(binary);function loadModule(){var firstLoad=!handle||!HEAP8[handle+8];if(firstLoad){var memAlign=Math.pow(2,metadata.memoryAlign),memoryBase=metadata.memorySize?alignMemory(getMemory(metadata.memorySize+memAlign),memAlign):0,tableBase=metadata.tableSize?wasmTable.length:0;handle&&(HEAP8[handle+8]=1,HEAPU32[handle+12>>2]=memoryBase,HEAP32[handle+16>>2]=metadata.memorySize,HEAPU32[handle+20>>2]=tableBase,HEAP32[handle+24>>2]=metadata.tableSize)}else memoryBase=HEAPU32[handle+12>>2],tableBase=HEAPU32[handle+20>>2];var tableGrowthNeeded=tableBase+metadata.tableSize-wasmTable.length,moduleExports;function resolveSymbol(s){var e=resolveGlobalSymbol(s).sym;return!e&&localScope&&(e=localScope[s]),e||(e=moduleExports[s]),e}tableGrowthNeeded>0&&wasmTable.grow(tableGrowthNeeded);var proxyHandler={get(s,e){switch(e){case"__memory_base":return memoryBase;case"__table_base":return tableBase}if(e in wasmImports&&!wasmImports[e].stub)return wasmImports[e];var t;return e in s||(s[e]=(...n)=>(t||=resolveSymbol(e),t(...n))),s[e]}},proxy=new Proxy({},proxyHandler),info={"GOT.mem":new Proxy({},GOTHandler),"GOT.func":new Proxy({},GOTHandler),env:proxy,wasi_snapshot_preview1:proxy};function postInstantiation(module,instance){function addEmAsm(addr,body){for(var args=[],arity=0;arity<16&&body.indexOf("$"+arity)!=-1;arity++)args.push("$"+arity);args=args.join(",");var func=`(${args}) => { ${body} };`;ASM_CONSTS[start]=eval(func)}if(updateTableMap(tableBase,metadata.tableSize),moduleExports=relocateExports(instance.exports,memoryBase),flags.allowUndefined||reportUndefinedSymbols(),"__start_em_asm"in moduleExports)for(var start=moduleExports.__start_em_asm,stop=moduleExports.__stop_em_asm;start<stop;){var jsString=UTF8ToString(start);addEmAsm(start,jsString),start=HEAPU8.indexOf(0,start)+1}function addEmJs(name,cSig,body){var jsArgs=[];if(cSig=cSig.slice(1,-1),cSig!="void")for(var i in cSig=cSig.split(","),cSig){var jsArg=cSig[i].split(" ").pop();jsArgs.push(jsArg.replace("*",""))}var func=`(${jsArgs}) => ${body};`;moduleExports[name]=eval(func)}for(var name in moduleExports)if(name.startsWith("__em_js__")){var start=moduleExports[name],jsString=UTF8ToString(start),parts=jsString.split("<::>");addEmJs(name.replace("__em_js__",""),parts[0],parts[1]),delete moduleExports[name]}var applyRelocs=moduleExports.__wasm_apply_data_relocs;applyRelocs&&(runtimeInitialized?applyRelocs():__RELOC_FUNCS__.push(applyRelocs));var init=moduleExports.__wasm_call_ctors;return init&&(runtimeInitialized?init():__ATINIT__.push(init)),moduleExports}if(flags.loadAsync){if(binary instanceof WebAssembly.Module){var instance=new WebAssembly.Instance(binary,info);return Promise.resolve(postInstantiation(binary,instance))}return WebAssembly.instantiate(binary,info).then((s=>postInstantiation(s.module,s.instance)))}var module=binary instanceof WebAssembly.Module?binary:new WebAssembly.Module(binary),instance=new WebAssembly.Instance(module,info);return postInstantiation(module,instance)}return currentModuleWeakSymbols=metadata.weakImports,flags.loadAsync?metadata.neededDynlibs.reduce(((s,e)=>s.then((()=>loadDynamicLibrary(e,flags)))),Promise.resolve()).then(loadModule):(metadata.neededDynlibs.forEach((s=>loadDynamicLibrary(s,flags,localScope))),loadModule())},mergeLibSymbols=(s,e)=>{for(var[t,n]of Object.entries(s)){let r=o=>{isSymbolDefined(o)||(wasmImports[o]=n)};r(t);let a="__main_argc_argv";t=="main"&&r(a),t==a&&r("main"),t.startsWith("dynCall_")&&!Module.hasOwnProperty(t)&&(Module[t]=n)}},asyncLoad=(s,e,t,n)=>{var r=n?"":`al ${s}`;readAsync(s,(a=>{e(new Uint8Array(a)),r&&removeRunDependency(r)}),(a=>{if(!t)throw`Loading data file "${s}" failed.`;t()})),r&&addRunDependency(r)};function loadDynamicLibrary(s,e={global:!0,nodelete:!0},t,n){var r=LDSO.loadedLibsByName[s];if(r)return e.global?r.global||(r.global=!0,mergeLibSymbols(r.exports,s)):t&&Object.assign(t,r.exports),e.nodelete&&r.refcount!==1/0&&(r.refcount=1/0),r.refcount++,n&&(LDSO.loadedLibsByHandle[n]=r),!e.loadAsync||Promise.resolve(!0);function a(){if(n){var c=HEAPU32[n+28>>2],u=HEAPU32[n+32>>2];if(c&&u){var h=HEAP8.slice(c,c+u);return e.loadAsync?Promise.resolve(h):h}}var d=locateFile(s);if(e.loadAsync)return new Promise((function(p,f){asyncLoad(d,p,f)}));if(!readBinary)throw new Error(`${d}: file not found, and synchronous loading of external files is not available`);return readBinary(d)}function o(){return e.loadAsync?a().then((c=>loadWebAssemblyModule(c,e,s,t,n))):loadWebAssemblyModule(a(),e,s,t,n)}function l(c){r.global?mergeLibSymbols(c,s):t&&Object.assign(t,c),r.exports=c}return(r=newDSO(s,n,"loading")).refcount=e.nodelete?1/0:1,r.global=e.global,e.loadAsync?o().then((c=>(l(c),!0))):(l(o()),!0)}var reportUndefinedSymbols=()=>{for(var[s,e]of Object.entries(GOT))if(e.value==0){var t=resolveGlobalSymbol(s,!0).sym;if(!t&&!e.required)continue;if(typeof t=="function")e.value=addFunction(t,t.sig);else{if(typeof t!="number")throw new Error(`bad export type for '${s}': ${typeof t}`);e.value=t}}},loadDylibs=()=>{dynamicLibraries.length?(addRunDependency("loadDylibs"),dynamicLibraries.reduce(((s,e)=>s.then((()=>loadDynamicLibrary(e,{loadAsync:!0,global:!0,nodelete:!0,allowUndefined:!0})))),Promise.resolve()).then((()=>{reportUndefinedSymbols(),removeRunDependency("loadDylibs")}))):reportUndefinedSymbols()},noExitRuntime=Module.noExitRuntime||!0;function setValue(s,e,t="i8"){switch(t.endsWith("*")&&(t="*"),t){case"i1":case"i8":HEAP8[s]=e;break;case"i16":HEAP16[s>>1]=e;break;case"i32":HEAP32[s>>2]=e;break;case"i64":abort("to do setValue(i64) use WASM_BIGINT");case"float":HEAPF32[s>>2]=e;break;case"double":HEAPF64[s>>3]=e;break;case"*":HEAPU32[s>>2]=e;break;default:abort(`invalid type for setValue: ${t}`)}}var ___memory_base=new WebAssembly.Global({value:"i32",mutable:!1},1024),___stack_pointer=new WebAssembly.Global({value:"i32",mutable:!0},78096),___table_base=new WebAssembly.Global({value:"i32",mutable:!1},1),nowIsMonotonic=1,__emscripten_get_now_is_monotonic=()=>nowIsMonotonic;__emscripten_get_now_is_monotonic.sig="i";var _abort=()=>{abort("")};_abort.sig="v";var _emscripten_date_now=()=>Date.now(),_emscripten_get_now;_emscripten_date_now.sig="d",_emscripten_get_now=()=>performance.now(),_emscripten_get_now.sig="d";var _emscripten_memcpy_js=(s,e,t)=>HEAPU8.copyWithin(s,e,e+t);_emscripten_memcpy_js.sig="vppp";var getHeapMax=()=>2147483648,growMemory=s=>{var e=(s-wasmMemory.buffer.byteLength+65535)/65536;try{return wasmMemory.grow(e),updateMemoryViews(),1}catch{}},_emscripten_resize_heap=s=>{var e=HEAPU8.length;s>>>=0;var t=getHeapMax();if(s>t)return!1;for(var n,r,a=1;a<=4;a*=2){var o=e*(1+.2/a);o=Math.min(o,s+100663296);var l=Math.min(t,(n=Math.max(s,o))+((r=65536)-n%r)%r);if(growMemory(l))return!0}return!1};_emscripten_resize_heap.sig="ip";var _fd_close=s=>52;_fd_close.sig="ii";var convertI32PairToI53Checked=(s,e)=>e+2097152>>>0<4194305-!!s?(s>>>0)+4294967296*e:NaN;function _fd_seek(s,e,t,n,r){return convertI32PairToI53Checked(e,t),70}_fd_seek.sig="iiiiip";var printCharBuffers=[null,[],[]],printChar=(s,e)=>{var t=printCharBuffers[s];e===0||e===10?((s===1?out:err)(UTF8ArrayToString(t,0)),t.length=0):t.push(e)},SYSCALLS={varargs:void 0,get(){var s=HEAP32[+SYSCALLS.varargs>>2];return SYSCALLS.varargs+=4,s},getp:()=>SYSCALLS.get(),getStr:s=>UTF8ToString(s)},_fd_write=(s,e,t,n)=>{for(var r=0,a=0;a<t;a++){var o=HEAPU32[e>>2],l=HEAPU32[e+4>>2];e+=8;for(var c=0;c<l;c++)printChar(s,HEAPU8[o+c]);r+=l}return HEAPU32[n>>2]=r,0};function _tree_sitter_log_callback(s,e){if(currentLogCallback){let t=UTF8ToString(e);currentLogCallback(t,s!==0)}}function _tree_sitter_parse_callback(s,e,t,n,r){let a=currentParseCallback(e,{row:t,column:n});typeof a=="string"?(setValue(r,a.length,"i32"),stringToUTF16(a,s,10240)):setValue(r,0,"i32")}_fd_write.sig="iippp";var runtimeKeepaliveCounter=0,keepRuntimeAlive=()=>noExitRuntime||runtimeKeepaliveCounter>0,_proc_exit=s=>{EXITSTATUS=s,keepRuntimeAlive()||(Module.onExit?.(s),ABORT=!0),quit_(s,new ExitStatus(s))};_proc_exit.sig="vi";var exitJS=(s,e)=>{EXITSTATUS=s,_proc_exit(s)},handleException=s=>{if(s instanceof ExitStatus||s=="unwind")return EXITSTATUS;quit_(1,s)},lengthBytesUTF8=s=>{for(var e=0,t=0;t<s.length;++t){var n=s.charCodeAt(t);n<=127?e++:n<=2047?e+=2:n>=55296&&n<=57343?(e+=4,++t):e+=3}return e},stringToUTF8Array=(s,e,t,n)=>{if(!(n>0))return 0;for(var r=t,a=t+n-1,o=0;o<s.length;++o){var l=s.charCodeAt(o);if(l>=55296&&l<=57343&&(l=65536+((1023&l)<<10)|1023&s.charCodeAt(++o)),l<=127){if(t>=a)break;e[t++]=l}else if(l<=2047){if(t+1>=a)break;e[t++]=192|l>>6,e[t++]=128|63&l}else if(l<=65535){if(t+2>=a)break;e[t++]=224|l>>12,e[t++]=128|l>>6&63,e[t++]=128|63&l}else{if(t+3>=a)break;e[t++]=240|l>>18,e[t++]=128|l>>12&63,e[t++]=128|l>>6&63,e[t++]=128|63&l}}return e[t]=0,t-r},stringToUTF8=(s,e,t)=>stringToUTF8Array(s,HEAPU8,e,t),stringToUTF8OnStack=s=>{var e=lengthBytesUTF8(s)+1,t=stackAlloc(e);return stringToUTF8(s,t,e),t},stringToUTF16=(s,e,t)=>{if(t??=2147483647,t<2)return 0;for(var n=e,r=(t-=2)<2*s.length?t/2:s.length,a=0;a<r;++a){var o=s.charCodeAt(a);HEAP16[e>>1]=o,e+=2}return HEAP16[e>>1]=0,e-n},AsciiToString=s=>{for(var e="";;){var t=HEAPU8[s++];if(!t)return e;e+=String.fromCharCode(t)}},wasmImports={__heap_base:___heap_base,__indirect_function_table:wasmTable,__memory_base:___memory_base,__stack_pointer:___stack_pointer,__table_base:___table_base,_emscripten_get_now_is_monotonic:__emscripten_get_now_is_monotonic,abort:_abort,emscripten_get_now:_emscripten_get_now,emscripten_memcpy_js:_emscripten_memcpy_js,emscripten_resize_heap:_emscripten_resize_heap,fd_close:_fd_close,fd_seek:_fd_seek,fd_write:_fd_write,memory:wasmMemory,tree_sitter_log_callback:_tree_sitter_log_callback,tree_sitter_parse_callback:_tree_sitter_parse_callback},wasmExports=createWasm(),___wasm_call_ctors=()=>(___wasm_call_ctors=wasmExports.__wasm_call_ctors)(),___wasm_apply_data_relocs=()=>(___wasm_apply_data_relocs=wasmExports.__wasm_apply_data_relocs)(),_malloc=Module._malloc=s=>(_malloc=Module._malloc=wasmExports.malloc)(s),_calloc=Module._calloc=(s,e)=>(_calloc=Module._calloc=wasmExports.calloc)(s,e),_realloc=Module._realloc=(s,e)=>(_realloc=Module._realloc=wasmExports.realloc)(s,e),_free=Module._free=s=>(_free=Module._free=wasmExports.free)(s),_ts_language_symbol_count=Module._ts_language_symbol_count=s=>(_ts_language_symbol_count=Module._ts_language_symbol_count=wasmExports.ts_language_symbol_count)(s),_ts_language_state_count=Module._ts_language_state_count=s=>(_ts_language_state_count=Module._ts_language_state_count=wasmExports.ts_language_state_count)(s),_ts_language_version=Module._ts_language_version=s=>(_ts_language_version=Module._ts_language_version=wasmExports.ts_language_version)(s),_ts_language_field_count=Module._ts_language_field_count=s=>(_ts_language_field_count=Module._ts_language_field_count=wasmExports.ts_language_field_count)(s),_ts_language_next_state=Module._ts_language_next_state=(s,e,t)=>(_ts_language_next_state=Module._ts_language_next_state=wasmExports.ts_language_next_state)(s,e,t),_ts_language_symbol_name=Module._ts_language_symbol_name=(s,e)=>(_ts_language_symbol_name=Module._ts_language_symbol_name=wasmExports.ts_language_symbol_name)(s,e),_ts_language_symbol_for_name=Module._ts_language_symbol_for_name=(s,e,t,n)=>(_ts_language_symbol_for_name=Module._ts_language_symbol_for_name=wasmExports.ts_language_symbol_for_name)(s,e,t,n),_strncmp=Module._strncmp=(s,e,t)=>(_strncmp=Module._strncmp=wasmExports.strncmp)(s,e,t),_ts_language_symbol_type=Module._ts_language_symbol_type=(s,e)=>(_ts_language_symbol_type=Module._ts_language_symbol_type=wasmExports.ts_language_symbol_type)(s,e),_ts_language_field_name_for_id=Module._ts_language_field_name_for_id=(s,e)=>(_ts_language_field_name_for_id=Module._ts_language_field_name_for_id=wasmExports.ts_language_field_name_for_id)(s,e),_ts_lookahead_iterator_new=Module._ts_lookahead_iterator_new=(s,e)=>(_ts_lookahead_iterator_new=Module._ts_lookahead_iterator_new=wasmExports.ts_lookahead_iterator_new)(s,e),_ts_lookahead_iterator_delete=Module._ts_lookahead_iterator_delete=s=>(_ts_lookahead_iterator_delete=Module._ts_lookahead_iterator_delete=wasmExports.ts_lookahead_iterator_delete)(s),_ts_lookahead_iterator_reset_state=Module._ts_lookahead_iterator_reset_state=(s,e)=>(_ts_lookahead_iterator_reset_state=Module._ts_lookahead_iterator_reset_state=wasmExports.ts_lookahead_iterator_reset_state)(s,e),_ts_lookahead_iterator_reset=Module._ts_lookahead_iterator_reset=(s,e,t)=>(_ts_lookahead_iterator_reset=Module._ts_lookahead_iterator_reset=wasmExports.ts_lookahead_iterator_reset)(s,e,t),_ts_lookahead_iterator_next=Module._ts_lookahead_iterator_next=s=>(_ts_lookahead_iterator_next=Module._ts_lookahead_iterator_next=wasmExports.ts_lookahead_iterator_next)(s),_ts_lookahead_iterator_current_symbol=Module._ts_lookahead_iterator_current_symbol=s=>(_ts_lookahead_iterator_current_symbol=Module._ts_lookahead_iterator_current_symbol=wasmExports.ts_lookahead_iterator_current_symbol)(s),_memset=Module._memset=(s,e,t)=>(_memset=Module._memset=wasmExports.memset)(s,e,t),_memcpy=Module._memcpy=(s,e,t)=>(_memcpy=Module._memcpy=wasmExports.memcpy)(s,e,t),_ts_parser_delete=Module._ts_parser_delete=s=>(_ts_parser_delete=Module._ts_parser_delete=wasmExports.ts_parser_delete)(s),_ts_parser_reset=Module._ts_parser_reset=s=>(_ts_parser_reset=Module._ts_parser_reset=wasmExports.ts_parser_reset)(s),_ts_parser_set_language=Module._ts_parser_set_language=(s,e)=>(_ts_parser_set_language=Module._ts_parser_set_language=wasmExports.ts_parser_set_language)(s,e),_ts_parser_timeout_micros=Module._ts_parser_timeout_micros=s=>(_ts_parser_timeout_micros=Module._ts_parser_timeout_micros=wasmExports.ts_parser_timeout_micros)(s),_ts_parser_set_timeout_micros=Module._ts_parser_set_timeout_micros=(s,e,t)=>(_ts_parser_set_timeout_micros=Module._ts_parser_set_timeout_micros=wasmExports.ts_parser_set_timeout_micros)(s,e,t),_ts_parser_set_included_ranges=Module._ts_parser_set_included_ranges=(s,e,t)=>(_ts_parser_set_included_ranges=Module._ts_parser_set_included_ranges=wasmExports.ts_parser_set_included_ranges)(s,e,t),_memmove=Module._memmove=(s,e,t)=>(_memmove=Module._memmove=wasmExports.memmove)(s,e,t),_memcmp=Module._memcmp=(s,e,t)=>(_memcmp=Module._memcmp=wasmExports.memcmp)(s,e,t),_ts_query_new=Module._ts_query_new=(s,e,t,n,r)=>(_ts_query_new=Module._ts_query_new=wasmExports.ts_query_new)(s,e,t,n,r),_ts_query_delete=Module._ts_query_delete=s=>(_ts_query_delete=Module._ts_query_delete=wasmExports.ts_query_delete)(s),_iswspace=Module._iswspace=s=>(_iswspace=Module._iswspace=wasmExports.iswspace)(s),_iswalnum=Module._iswalnum=s=>(_iswalnum=Module._iswalnum=wasmExports.iswalnum)(s),_ts_query_pattern_count=Module._ts_query_pattern_count=s=>(_ts_query_pattern_count=Module._ts_query_pattern_count=wasmExports.ts_query_pattern_count)(s),_ts_query_capture_count=Module._ts_query_capture_count=s=>(_ts_query_capture_count=Module._ts_query_capture_count=wasmExports.ts_query_capture_count)(s),_ts_query_string_count=Module._ts_query_string_count=s=>(_ts_query_string_count=Module._ts_query_string_count=wasmExports.ts_query_string_count)(s),_ts_query_capture_name_for_id=Module._ts_query_capture_name_for_id=(s,e,t)=>(_ts_query_capture_name_for_id=Module._ts_query_capture_name_for_id=wasmExports.ts_query_capture_name_for_id)(s,e,t),_ts_query_string_value_for_id=Module._ts_query_string_value_for_id=(s,e,t)=>(_ts_query_string_value_for_id=Module._ts_query_string_value_for_id=wasmExports.ts_query_string_value_for_id)(s,e,t),_ts_query_predicates_for_pattern=Module._ts_query_predicates_for_pattern=(s,e,t)=>(_ts_query_predicates_for_pattern=Module._ts_query_predicates_for_pattern=wasmExports.ts_query_predicates_for_pattern)(s,e,t),_ts_query_disable_capture=Module._ts_query_disable_capture=(s,e,t)=>(_ts_query_disable_capture=Module._ts_query_disable_capture=wasmExports.ts_query_disable_capture)(s,e,t),_ts_tree_copy=Module._ts_tree_copy=s=>(_ts_tree_copy=Module._ts_tree_copy=wasmExports.ts_tree_copy)(s),_ts_tree_delete=Module._ts_tree_delete=s=>(_ts_tree_delete=Module._ts_tree_delete=wasmExports.ts_tree_delete)(s),_ts_init=Module._ts_init=()=>(_ts_init=Module._ts_init=wasmExports.ts_init)(),_ts_parser_new_wasm=Module._ts_parser_new_wasm=()=>(_ts_parser_new_wasm=Module._ts_parser_new_wasm=wasmExports.ts_parser_new_wasm)(),_ts_parser_enable_logger_wasm=Module._ts_parser_enable_logger_wasm=(s,e)=>(_ts_parser_enable_logger_wasm=Module._ts_parser_enable_logger_wasm=wasmExports.ts_parser_enable_logger_wasm)(s,e),_ts_parser_parse_wasm=Module._ts_parser_parse_wasm=(s,e,t,n,r)=>(_ts_parser_parse_wasm=Module._ts_parser_parse_wasm=wasmExports.ts_parser_parse_wasm)(s,e,t,n,r),_ts_parser_included_ranges_wasm=Module._ts_parser_included_ranges_wasm=s=>(_ts_parser_included_ranges_wasm=Module._ts_parser_included_ranges_wasm=wasmExports.ts_parser_included_ranges_wasm)(s),_ts_language_type_is_named_wasm=Module._ts_language_type_is_named_wasm=(s,e)=>(_ts_language_type_is_named_wasm=Module._ts_language_type_is_named_wasm=wasmExports.ts_language_type_is_named_wasm)(s,e),_ts_language_type_is_visible_wasm=Module._ts_language_type_is_visible_wasm=(s,e)=>(_ts_language_type_is_visible_wasm=Module._ts_language_type_is_visible_wasm=wasmExports.ts_language_type_is_visible_wasm)(s,e),_ts_tree_root_node_wasm=Module._ts_tree_root_node_wasm=s=>(_ts_tree_root_node_wasm=Module._ts_tree_root_node_wasm=wasmExports.ts_tree_root_node_wasm)(s),_ts_tree_root_node_with_offset_wasm=Module._ts_tree_root_node_with_offset_wasm=s=>(_ts_tree_root_node_with_offset_wasm=Module._ts_tree_root_node_with_offset_wasm=wasmExports.ts_tree_root_node_with_offset_wasm)(s),_ts_tree_edit_wasm=Module._ts_tree_edit_wasm=s=>(_ts_tree_edit_wasm=Module._ts_tree_edit_wasm=wasmExports.ts_tree_edit_wasm)(s),_ts_tree_included_ranges_wasm=Module._ts_tree_included_ranges_wasm=s=>(_ts_tree_included_ranges_wasm=Module._ts_tree_included_ranges_wasm=wasmExports.ts_tree_included_ranges_wasm)(s),_ts_tree_get_changed_ranges_wasm=Module._ts_tree_get_changed_ranges_wasm=(s,e)=>(_ts_tree_get_changed_ranges_wasm=Module._ts_tree_get_changed_ranges_wasm=wasmExports.ts_tree_get_changed_ranges_wasm)(s,e),_ts_tree_cursor_new_wasm=Module._ts_tree_cursor_new_wasm=s=>(_ts_tree_cursor_new_wasm=Module._ts_tree_cursor_new_wasm=wasmExports.ts_tree_cursor_new_wasm)(s),_ts_tree_cursor_delete_wasm=Module._ts_tree_cursor_delete_wasm=s=>(_ts_tree_cursor_delete_wasm=Module._ts_tree_cursor_delete_wasm=wasmExports.ts_tree_cursor_delete_wasm)(s),_ts_tree_cursor_reset_wasm=Module._ts_tree_cursor_reset_wasm=s=>(_ts_tree_cursor_reset_wasm=Module._ts_tree_cursor_reset_wasm=wasmExports.ts_tree_cursor_reset_wasm)(s),_ts_tree_cursor_reset_to_wasm=Module._ts_tree_cursor_reset_to_wasm=(s,e)=>(_ts_tree_cursor_reset_to_wasm=Module._ts_tree_cursor_reset_to_wasm=wasmExports.ts_tree_cursor_reset_to_wasm)(s,e),_ts_tree_cursor_goto_first_child_wasm=Module._ts_tree_cursor_goto_first_child_wasm=s=>(_ts_tree_cursor_goto_first_child_wasm=Module._ts_tree_cursor_goto_first_child_wasm=wasmExports.ts_tree_cursor_goto_first_child_wasm)(s),_ts_tree_cursor_goto_last_child_wasm=Module._ts_tree_cursor_goto_last_child_wasm=s=>(_ts_tree_cursor_goto_last_child_wasm=Module._ts_tree_cursor_goto_last_child_wasm=wasmExports.ts_tree_cursor_goto_last_child_wasm)(s),_ts_tree_cursor_goto_first_child_for_index_wasm=Module._ts_tree_cursor_goto_first_child_for_index_wasm=s=>(_ts_tree_cursor_goto_first_child_for_index_wasm=Module._ts_tree_cursor_goto_first_child_for_index_wasm=wasmExports.ts_tree_cursor_goto_first_child_for_index_wasm)(s),_ts_tree_cursor_goto_first_child_for_position_wasm=Module._ts_tree_cursor_goto_first_child_for_position_wasm=s=>(_ts_tree_cursor_goto_first_child_for_position_wasm=Module._ts_tree_cursor_goto_first_child_for_position_wasm=wasmExports.ts_tree_cursor_goto_first_child_for_position_wasm)(s),_ts_tree_cursor_goto_next_sibling_wasm=Module._ts_tree_cursor_goto_next_sibling_wasm=s=>(_ts_tree_cursor_goto_next_sibling_wasm=Module._ts_tree_cursor_goto_next_sibling_wasm=wasmExports.ts_tree_cursor_goto_next_sibling_wasm)(s),_ts_tree_cursor_goto_previous_sibling_wasm=Module._ts_tree_cursor_goto_previous_sibling_wasm=s=>(_ts_tree_cursor_goto_previous_sibling_wasm=Module._ts_tree_cursor_goto_previous_sibling_wasm=wasmExports.ts_tree_cursor_goto_previous_sibling_wasm)(s),_ts_tree_cursor_goto_descendant_wasm=Module._ts_tree_cursor_goto_descendant_wasm=(s,e)=>(_ts_tree_cursor_goto_descendant_wasm=Module._ts_tree_cursor_goto_descendant_wasm=wasmExports.ts_tree_cursor_goto_descendant_wasm)(s,e),_ts_tree_cursor_goto_parent_wasm=Module._ts_tree_cursor_goto_parent_wasm=s=>(_ts_tree_cursor_goto_parent_wasm=Module._ts_tree_cursor_goto_parent_wasm=wasmExports.ts_tree_cursor_goto_parent_wasm)(s),_ts_tree_cursor_current_node_type_id_wasm=Module._ts_tree_cursor_current_node_type_id_wasm=s=>(_ts_tree_cursor_current_node_type_id_wasm=Module._ts_tree_cursor_current_node_type_id_wasm=wasmExports.ts_tree_cursor_current_node_type_id_wasm)(s),_ts_tree_cursor_current_node_state_id_wasm=Module._ts_tree_cursor_current_node_state_id_wasm=s=>(_ts_tree_cursor_current_node_state_id_wasm=Module._ts_tree_cursor_current_node_state_id_wasm=wasmExports.ts_tree_cursor_current_node_state_id_wasm)(s),_ts_tree_cursor_current_node_is_named_wasm=Module._ts_tree_cursor_current_node_is_named_wasm=s=>(_ts_tree_cursor_current_node_is_named_wasm=Module._ts_tree_cursor_current_node_is_named_wasm=wasmExports.ts_tree_cursor_current_node_is_named_wasm)(s),_ts_tree_cursor_current_node_is_missing_wasm=Module._ts_tree_cursor_current_node_is_missing_wasm=s=>(_ts_tree_cursor_current_node_is_missing_wasm=Module._ts_tree_cursor_current_node_is_missing_wasm=wasmExports.ts_tree_cursor_current_node_is_missing_wasm)(s),_ts_tree_cursor_current_node_id_wasm=Module._ts_tree_cursor_current_node_id_wasm=s=>(_ts_tree_cursor_current_node_id_wasm=Module._ts_tree_cursor_current_node_id_wasm=wasmExports.ts_tree_cursor_current_node_id_wasm)(s),_ts_tree_cursor_start_position_wasm=Module._ts_tree_cursor_start_position_wasm=s=>(_ts_tree_cursor_start_position_wasm=Module._ts_tree_cursor_start_position_wasm=wasmExports.ts_tree_cursor_start_position_wasm)(s),_ts_tree_cursor_end_position_wasm=Module._ts_tree_cursor_end_position_wasm=s=>(_ts_tree_cursor_end_position_wasm=Module._ts_tree_cursor_end_position_wasm=wasmExports.ts_tree_cursor_end_position_wasm)(s),_ts_tree_cursor_start_index_wasm=Module._ts_tree_cursor_start_index_wasm=s=>(_ts_tree_cursor_start_index_wasm=Module._ts_tree_cursor_start_index_wasm=wasmExports.ts_tree_cursor_start_index_wasm)(s),_ts_tree_cursor_end_index_wasm=Module._ts_tree_cursor_end_index_wasm=s=>(_ts_tree_cursor_end_index_wasm=Module._ts_tree_cursor_end_index_wasm=wasmExports.ts_tree_cursor_end_index_wasm)(s),_ts_tree_cursor_current_field_id_wasm=Module._ts_tree_cursor_current_field_id_wasm=s=>(_ts_tree_cursor_current_field_id_wasm=Module._ts_tree_cursor_current_field_id_wasm=wasmExports.ts_tree_cursor_current_field_id_wasm)(s),_ts_tree_cursor_current_depth_wasm=Module._ts_tree_cursor_current_depth_wasm=s=>(_ts_tree_cursor_current_depth_wasm=Module._ts_tree_cursor_current_depth_wasm=wasmExports.ts_tree_cursor_current_depth_wasm)(s),_ts_tree_cursor_current_descendant_index_wasm=Module._ts_tree_cursor_current_descendant_index_wasm=s=>(_ts_tree_cursor_current_descendant_index_wasm=Module._ts_tree_cursor_current_descendant_index_wasm=wasmExports.ts_tree_cursor_current_descendant_index_wasm)(s),_ts_tree_cursor_current_node_wasm=Module._ts_tree_cursor_current_node_wasm=s=>(_ts_tree_cursor_current_node_wasm=Module._ts_tree_cursor_current_node_wasm=wasmExports.ts_tree_cursor_current_node_wasm)(s),_ts_node_symbol_wasm=Module._ts_node_symbol_wasm=s=>(_ts_node_symbol_wasm=Module._ts_node_symbol_wasm=wasmExports.ts_node_symbol_wasm)(s),_ts_node_field_name_for_child_wasm=Module._ts_node_field_name_for_child_wasm=(s,e)=>(_ts_node_field_name_for_child_wasm=Module._ts_node_field_name_for_child_wasm=wasmExports.ts_node_field_name_for_child_wasm)(s,e),_ts_node_children_by_field_id_wasm=Module._ts_node_children_by_field_id_wasm=(s,e)=>(_ts_node_children_by_field_id_wasm=Module._ts_node_children_by_field_id_wasm=wasmExports.ts_node_children_by_field_id_wasm)(s,e),_ts_node_first_child_for_byte_wasm=Module._ts_node_first_child_for_byte_wasm=s=>(_ts_node_first_child_for_byte_wasm=Module._ts_node_first_child_for_byte_wasm=wasmExports.ts_node_first_child_for_byte_wasm)(s),_ts_node_first_named_child_for_byte_wasm=Module._ts_node_first_named_child_for_byte_wasm=s=>(_ts_node_first_named_child_for_byte_wasm=Module._ts_node_first_named_child_for_byte_wasm=wasmExports.ts_node_first_named_child_for_byte_wasm)(s),_ts_node_grammar_symbol_wasm=Module._ts_node_grammar_symbol_wasm=s=>(_ts_node_grammar_symbol_wasm=Module._ts_node_grammar_symbol_wasm=wasmExports.ts_node_grammar_symbol_wasm)(s),_ts_node_child_count_wasm=Module._ts_node_child_count_wasm=s=>(_ts_node_child_count_wasm=Module._ts_node_child_count_wasm=wasmExports.ts_node_child_count_wasm)(s),_ts_node_named_child_count_wasm=Module._ts_node_named_child_count_wasm=s=>(_ts_node_named_child_count_wasm=Module._ts_node_named_child_count_wasm=wasmExports.ts_node_named_child_count_wasm)(s),_ts_node_child_wasm=Module._ts_node_child_wasm=(s,e)=>(_ts_node_child_wasm=Module._ts_node_child_wasm=wasmExports.ts_node_child_wasm)(s,e),_ts_node_named_child_wasm=Module._ts_node_named_child_wasm=(s,e)=>(_ts_node_named_child_wasm=Module._ts_node_named_child_wasm=wasmExports.ts_node_named_child_wasm)(s,e),_ts_node_child_by_field_id_wasm=Module._ts_node_child_by_field_id_wasm=(s,e)=>(_ts_node_child_by_field_id_wasm=Module._ts_node_child_by_field_id_wasm=wasmExports.ts_node_child_by_field_id_wasm)(s,e),_ts_node_next_sibling_wasm=Module._ts_node_next_sibling_wasm=s=>(_ts_node_next_sibling_wasm=Module._ts_node_next_sibling_wasm=wasmExports.ts_node_next_sibling_wasm)(s),_ts_node_prev_sibling_wasm=Module._ts_node_prev_sibling_wasm=s=>(_ts_node_prev_sibling_wasm=Module._ts_node_prev_sibling_wasm=wasmExports.ts_node_prev_sibling_wasm)(s),_ts_node_next_named_sibling_wasm=Module._ts_node_next_named_sibling_wasm=s=>(_ts_node_next_named_sibling_wasm=Module._ts_node_next_named_sibling_wasm=wasmExports.ts_node_next_named_sibling_wasm)(s),_ts_node_prev_named_sibling_wasm=Module._ts_node_prev_named_sibling_wasm=s=>(_ts_node_prev_named_sibling_wasm=Module._ts_node_prev_named_sibling_wasm=wasmExports.ts_node_prev_named_sibling_wasm)(s),_ts_node_descendant_count_wasm=Module._ts_node_descendant_count_wasm=s=>(_ts_node_descendant_count_wasm=Module._ts_node_descendant_count_wasm=wasmExports.ts_node_descendant_count_wasm)(s),_ts_node_parent_wasm=Module._ts_node_parent_wasm=s=>(_ts_node_parent_wasm=Module._ts_node_parent_wasm=wasmExports.ts_node_parent_wasm)(s),_ts_node_descendant_for_index_wasm=Module._ts_node_descendant_for_index_wasm=s=>(_ts_node_descendant_for_index_wasm=Module._ts_node_descendant_for_index_wasm=wasmExports.ts_node_descendant_for_index_wasm)(s),_ts_node_named_descendant_for_index_wasm=Module._ts_node_named_descendant_for_index_wasm=s=>(_ts_node_named_descendant_for_index_wasm=Module._ts_node_named_descendant_for_index_wasm=wasmExports.ts_node_named_descendant_for_index_wasm)(s),_ts_node_descendant_for_position_wasm=Module._ts_node_descendant_for_position_wasm=s=>(_ts_node_descendant_for_position_wasm=Module._ts_node_descendant_for_position_wasm=wasmExports.ts_node_descendant_for_position_wasm)(s),_ts_node_named_descendant_for_position_wasm=Module._ts_node_named_descendant_for_position_wasm=s=>(_ts_node_named_descendant_for_position_wasm=Module._ts_node_named_descendant_for_position_wasm=wasmExports.ts_node_named_descendant_for_position_wasm)(s),_ts_node_start_point_wasm=Module._ts_node_start_point_wasm=s=>(_ts_node_start_point_wasm=Module._ts_node_start_point_wasm=wasmExports.ts_node_start_point_wasm)(s),_ts_node_end_point_wasm=Module._ts_node_end_point_wasm=s=>(_ts_node_end_point_wasm=Module._ts_node_end_point_wasm=wasmExports.ts_node_end_point_wasm)(s),_ts_node_start_index_wasm=Module._ts_node_start_index_wasm=s=>(_ts_node_start_index_wasm=Module._ts_node_start_index_wasm=wasmExports.ts_node_start_index_wasm)(s),_ts_node_end_index_wasm=Module._ts_node_end_index_wasm=s=>(_ts_node_end_index_wasm=Module._ts_node_end_index_wasm=wasmExports.ts_node_end_index_wasm)(s),_ts_node_to_string_wasm=Module._ts_node_to_string_wasm=s=>(_ts_node_to_string_wasm=Module._ts_node_to_string_wasm=wasmExports.ts_node_to_string_wasm)(s),_ts_node_children_wasm=Module._ts_node_children_wasm=s=>(_ts_node_children_wasm=Module._ts_node_children_wasm=wasmExports.ts_node_children_wasm)(s),_ts_node_named_children_wasm=Module._ts_node_named_children_wasm=s=>(_ts_node_named_children_wasm=Module._ts_node_named_children_wasm=wasmExports.ts_node_named_children_wasm)(s),_ts_node_descendants_of_type_wasm=Module._ts_node_descendants_of_type_wasm=(s,e,t,n,r,a,o)=>(_ts_node_descendants_of_type_wasm=Module._ts_node_descendants_of_type_wasm=wasmExports.ts_node_descendants_of_type_wasm)(s,e,t,n,r,a,o),_ts_node_is_named_wasm=Module._ts_node_is_named_wasm=s=>(_ts_node_is_named_wasm=Module._ts_node_is_named_wasm=wasmExports.ts_node_is_named_wasm)(s),_ts_node_has_changes_wasm=Module._ts_node_has_changes_wasm=s=>(_ts_node_has_changes_wasm=Module._ts_node_has_changes_wasm=wasmExports.ts_node_has_changes_wasm)(s),_ts_node_has_error_wasm=Module._ts_node_has_error_wasm=s=>(_ts_node_has_error_wasm=Module._ts_node_has_error_wasm=wasmExports.ts_node_has_error_wasm)(s),_ts_node_is_error_wasm=Module._ts_node_is_error_wasm=s=>(_ts_node_is_error_wasm=Module._ts_node_is_error_wasm=wasmExports.ts_node_is_error_wasm)(s),_ts_node_is_missing_wasm=Module._ts_node_is_missing_wasm=s=>(_ts_node_is_missing_wasm=Module._ts_node_is_missing_wasm=wasmExports.ts_node_is_missing_wasm)(s),_ts_node_is_extra_wasm=Module._ts_node_is_extra_wasm=s=>(_ts_node_is_extra_wasm=Module._ts_node_is_extra_wasm=wasmExports.ts_node_is_extra_wasm)(s),_ts_node_parse_state_wasm=Module._ts_node_parse_state_wasm=s=>(_ts_node_parse_state_wasm=Module._ts_node_parse_state_wasm=wasmExports.ts_node_parse_state_wasm)(s),_ts_node_next_parse_state_wasm=Module._ts_node_next_parse_state_wasm=s=>(_ts_node_next_parse_state_wasm=Module._ts_node_next_parse_state_wasm=wasmExports.ts_node_next_parse_state_wasm)(s),_ts_query_matches_wasm=Module._ts_query_matches_wasm=(s,e,t,n,r,a,o,l,c,u)=>(_ts_query_matches_wasm=Module._ts_query_matches_wasm=wasmExports.ts_query_matches_wasm)(s,e,t,n,r,a,o,l,c,u),_ts_query_captures_wasm=Module._ts_query_captures_wasm=(s,e,t,n,r,a,o,l,c,u)=>(_ts_query_captures_wasm=Module._ts_query_captures_wasm=wasmExports.ts_query_captures_wasm)(s,e,t,n,r,a,o,l,c,u),_iswalpha=Module._iswalpha=s=>(_iswalpha=Module._iswalpha=wasmExports.iswalpha)(s),_iswblank=Module._iswblank=s=>(_iswblank=Module._iswblank=wasmExports.iswblank)(s),_iswdigit=Module._iswdigit=s=>(_iswdigit=Module._iswdigit=wasmExports.iswdigit)(s),_iswlower=Module._iswlower=s=>(_iswlower=Module._iswlower=wasmExports.iswlower)(s),_iswupper=Module._iswupper=s=>(_iswupper=Module._iswupper=wasmExports.iswupper)(s),_iswxdigit=Module._iswxdigit=s=>(_iswxdigit=Module._iswxdigit=wasmExports.iswxdigit)(s),_memchr=Module._memchr=(s,e,t)=>(_memchr=Module._memchr=wasmExports.memchr)(s,e,t),_strlen=Module._strlen=s=>(_strlen=Module._strlen=wasmExports.strlen)(s),_strcmp=Module._strcmp=(s,e)=>(_strcmp=Module._strcmp=wasmExports.strcmp)(s,e),_strncat=Module._strncat=(s,e,t)=>(_strncat=Module._strncat=wasmExports.strncat)(s,e,t),_strncpy=Module._strncpy=(s,e,t)=>(_strncpy=Module._strncpy=wasmExports.strncpy)(s,e,t),_towlower=Module._towlower=s=>(_towlower=Module._towlower=wasmExports.towlower)(s),_towupper=Module._towupper=s=>(_towupper=Module._towupper=wasmExports.towupper)(s),_setThrew=(s,e)=>(_setThrew=wasmExports.setThrew)(s,e),stackSave=()=>(stackSave=wasmExports.stackSave)(),stackRestore=s=>(stackRestore=wasmExports.stackRestore)(s),stackAlloc=s=>(stackAlloc=wasmExports.stackAlloc)(s),dynCall_jiji=Module.dynCall_jiji=(s,e,t,n,r)=>(dynCall_jiji=Module.dynCall_jiji=wasmExports.dynCall_jiji)(s,e,t,n,r),_orig$ts_parser_timeout_micros=Module._orig$ts_parser_timeout_micros=s=>(_orig$ts_parser_timeout_micros=Module._orig$ts_parser_timeout_micros=wasmExports.orig$ts_parser_timeout_micros)(s),_orig$ts_parser_set_timeout_micros=Module._orig$ts_parser_set_timeout_micros=(s,e)=>(_orig$ts_parser_set_timeout_micros=Module._orig$ts_parser_set_timeout_micros=wasmExports.orig$ts_parser_set_timeout_micros)(s,e),calledRun;function callMain(s=[]){var e=resolveGlobalSymbol("main").sym;if(e){s.unshift(thisProgram);var t=s.length,n=stackAlloc(4*(t+1)),r=n;s.forEach((o=>{HEAPU32[r>>2]=stringToUTF8OnStack(o),r+=4})),HEAPU32[r>>2]=0;try{var a=e(t,n);return exitJS(a,!0),a}catch(o){return handleException(o)}}}function run(s=arguments_){function e(){calledRun||(calledRun=!0,Module.calledRun=!0,ABORT||(initRuntime(),preMain(),Module.onRuntimeInitialized&&Module.onRuntimeInitialized(),shouldRunNow&&callMain(s),postRun()))}runDependencies>0||(preRun(),runDependencies>0||(Module.setStatus?(Module.setStatus("Running..."),setTimeout((function(){setTimeout((function(){Module.setStatus("")}),1),e()}),1)):e()))}if(Module.AsciiToString=AsciiToString,Module.stringToUTF16=stringToUTF16,dependenciesFulfilled=function s(){calledRun||run(),calledRun||(dependenciesFulfilled=s)},Module.preInit)for(typeof Module.preInit=="function"&&(Module.preInit=[Module.preInit]);Module.preInit.length>0;)Module.preInit.pop()();var shouldRunNow=!0;Module.noInitialRun&&(shouldRunNow=!1),run();let C=Module,INTERNAL={},SIZE_OF_INT=4,SIZE_OF_CURSOR=4*SIZE_OF_INT,SIZE_OF_NODE=5*SIZE_OF_INT,SIZE_OF_POINT=2*SIZE_OF_INT,SIZE_OF_RANGE=2*SIZE_OF_INT+2*SIZE_OF_POINT,ZERO_POINT={row:0,column:0},QUERY_WORD_REGEX=/[\w-.]*/g,PREDICATE_STEP_TYPE_CAPTURE=1,PREDICATE_STEP_TYPE_STRING=2,LANGUAGE_FUNCTION_REGEX=/^_?tree_sitter_\w+/,VERSION,MIN_COMPATIBLE_VERSION,TRANSFER_BUFFER,currentParseCallback,currentLogCallback;class ParserImpl{static init(){TRANSFER_BUFFER=C._ts_init(),VERSION=getValue(TRANSFER_BUFFER,"i32"),MIN_COMPATIBLE_VERSION=getValue(TRANSFER_BUFFER+SIZE_OF_INT,"i32")}initialize(){C._ts_parser_new_wasm(),this[0]=getValue(TRANSFER_BUFFER,"i32"),this[1]=getValue(TRANSFER_BUFFER+SIZE_OF_INT,"i32")}delete(){C._ts_parser_delete(this[0]),C._free(this[1]),this[0]=0,this[1]=0}setLanguage(e){let t;if(e){if(e.constructor!==Language)throw new Error("Argument must be a Language");{t=e[0];let n=C._ts_language_version(t);if(n<MIN_COMPATIBLE_VERSION||VERSION<n)throw new Error(`Incompatible language version ${n}. Compatibility range ${MIN_COMPATIBLE_VERSION} through ${VERSION}.`)}}else t=0,e=null;return this.language=e,C._ts_parser_set_language(this[0],t),this}getLanguage(){return this.language}parse(e,t,n){if(typeof e=="string")currentParseCallback=(c,u)=>e.slice(c);else{if(typeof e!="function")throw new Error("Argument must be a string or a function");currentParseCallback=e}this.logCallback?(currentLogCallback=this.logCallback,C._ts_parser_enable_logger_wasm(this[0],1)):(currentLogCallback=null,C._ts_parser_enable_logger_wasm(this[0],0));let r=0,a=0;if(n?.includedRanges){r=n.includedRanges.length,a=C._calloc(r,SIZE_OF_RANGE);let c=a;for(let u=0;u<r;u++)marshalRange(c,n.includedRanges[u]),c+=SIZE_OF_RANGE}let o=C._ts_parser_parse_wasm(this[0],this[1],t?t[0]:0,a,r);if(!o)throw currentParseCallback=null,currentLogCallback=null,new Error("Parsing failed");let l=new Tree(INTERNAL,o,this.language,currentParseCallback);return currentParseCallback=null,currentLogCallback=null,l}reset(){C._ts_parser_reset(this[0])}getIncludedRanges(){C._ts_parser_included_ranges_wasm(this[0]);let e=getValue(TRANSFER_BUFFER,"i32"),t=getValue(TRANSFER_BUFFER+SIZE_OF_INT,"i32"),n=new Array(e);if(e>0){let r=t;for(let a=0;a<e;a++)n[a]=unmarshalRange(r),r+=SIZE_OF_RANGE;C._free(t)}return n}getTimeoutMicros(){return C._ts_parser_timeout_micros(this[0])}setTimeoutMicros(e){C._ts_parser_set_timeout_micros(this[0],e)}setLogger(e){if(e){if(typeof e!="function")throw new Error("Logger callback must be a function")}else e=null;return this.logCallback=e,this}getLogger(){return this.logCallback}}class Tree{constructor(e,t,n,r){assertInternal(e),this[0]=t,this.language=n,this.textCallback=r}copy(){let e=C._ts_tree_copy(this[0]);return new Tree(INTERNAL,e,this.language,this.textCallback)}delete(){C._ts_tree_delete(this[0]),this[0]=0}edit(e){marshalEdit(e),C._ts_tree_edit_wasm(this[0])}get rootNode(){return C._ts_tree_root_node_wasm(this[0]),unmarshalNode(this)}rootNodeWithOffset(e,t){let n=TRANSFER_BUFFER+SIZE_OF_NODE;return setValue(n,e,"i32"),marshalPoint(n+SIZE_OF_INT,t),C._ts_tree_root_node_with_offset_wasm(this[0]),unmarshalNode(this)}getLanguage(){return this.language}walk(){return this.rootNode.walk()}getChangedRanges(e){if(e.constructor!==Tree)throw new TypeError("Argument must be a Tree");C._ts_tree_get_changed_ranges_wasm(this[0],e[0]);let t=getValue(TRANSFER_BUFFER,"i32"),n=getValue(TRANSFER_BUFFER+SIZE_OF_INT,"i32"),r=new Array(t);if(t>0){let a=n;for(let o=0;o<t;o++)r[o]=unmarshalRange(a),a+=SIZE_OF_RANGE;C._free(n)}return r}getIncludedRanges(){C._ts_tree_included_ranges_wasm(this[0]);let e=getValue(TRANSFER_BUFFER,"i32"),t=getValue(TRANSFER_BUFFER+SIZE_OF_INT,"i32"),n=new Array(e);if(e>0){let r=t;for(let a=0;a<e;a++)n[a]=unmarshalRange(r),r+=SIZE_OF_RANGE;C._free(t)}return n}}class Node{constructor(e,t){assertInternal(e),this.tree=t}get typeId(){return marshalNode(this),C._ts_node_symbol_wasm(this.tree[0])}get grammarId(){return marshalNode(this),C._ts_node_grammar_symbol_wasm(this.tree[0])}get type(){return this.tree.language.types[this.typeId]||"ERROR"}get grammarType(){return this.tree.language.types[this.grammarId]||"ERROR"}get endPosition(){return marshalNode(this),C._ts_node_end_point_wasm(this.tree[0]),unmarshalPoint(TRANSFER_BUFFER)}get endIndex(){return marshalNode(this),C._ts_node_end_index_wasm(this.tree[0])}get text(){return getText(this.tree,this.startIndex,this.endIndex)}get parseState(){return marshalNode(this),C._ts_node_parse_state_wasm(this.tree[0])}get nextParseState(){return marshalNode(this),C._ts_node_next_parse_state_wasm(this.tree[0])}get isNamed(){return marshalNode(this),C._ts_node_is_named_wasm(this.tree[0])===1}get hasError(){return marshalNode(this),C._ts_node_has_error_wasm(this.tree[0])===1}get hasChanges(){return marshalNode(this),C._ts_node_has_changes_wasm(this.tree[0])===1}get isError(){return marshalNode(this),C._ts_node_is_error_wasm(this.tree[0])===1}get isMissing(){return marshalNode(this),C._ts_node_is_missing_wasm(this.tree[0])===1}get isExtra(){return marshalNode(this),C._ts_node_is_extra_wasm(this.tree[0])===1}equals(e){return this.id===e.id}child(e){return marshalNode(this),C._ts_node_child_wasm(this.tree[0],e),unmarshalNode(this.tree)}namedChild(e){return marshalNode(this),C._ts_node_named_child_wasm(this.tree[0],e),unmarshalNode(this.tree)}childForFieldId(e){return marshalNode(this),C._ts_node_child_by_field_id_wasm(this.tree[0],e),unmarshalNode(this.tree)}childForFieldName(e){let t=this.tree.language.fields.indexOf(e);return t!==-1?this.childForFieldId(t):null}fieldNameForChild(e){marshalNode(this);let t=C._ts_node_field_name_for_child_wasm(this.tree[0],e);return t?AsciiToString(t):null}childrenForFieldName(e){let t=this.tree.language.fields.indexOf(e);return t!==-1&&t!==0?this.childrenForFieldId(t):[]}childrenForFieldId(e){marshalNode(this),C._ts_node_children_by_field_id_wasm(this.tree[0],e);let t=getValue(TRANSFER_BUFFER,"i32"),n=getValue(TRANSFER_BUFFER+SIZE_OF_INT,"i32"),r=new Array(t);if(t>0){let a=n;for(let o=0;o<t;o++)r[o]=unmarshalNode(this.tree,a),a+=SIZE_OF_NODE;C._free(n)}return r}firstChildForIndex(e){return marshalNode(this),setValue(TRANSFER_BUFFER+SIZE_OF_NODE,e,"i32"),C._ts_node_first_child_for_byte_wasm(this.tree[0]),unmarshalNode(this.tree)}firstNamedChildForIndex(e){return marshalNode(this),setValue(TRANSFER_BUFFER+SIZE_OF_NODE,e,"i32"),C._ts_node_first_named_child_for_byte_wasm(this.tree[0]),unmarshalNode(this.tree)}get childCount(){return marshalNode(this),C._ts_node_child_count_wasm(this.tree[0])}get namedChildCount(){return marshalNode(this),C._ts_node_named_child_count_wasm(this.tree[0])}get firstChild(){return this.child(0)}get firstNamedChild(){return this.namedChild(0)}get lastChild(){return this.child(this.childCount-1)}get lastNamedChild(){return this.namedChild(this.namedChildCount-1)}get children(){if(!this._children){marshalNode(this),C._ts_node_children_wasm(this.tree[0]);let e=getValue(TRANSFER_BUFFER,"i32"),t=getValue(TRANSFER_BUFFER+SIZE_OF_INT,"i32");if(this._children=new Array(e),e>0){let n=t;for(let r=0;r<e;r++)this._children[r]=unmarshalNode(this.tree,n),n+=SIZE_OF_NODE;C._free(t)}}return this._children}get namedChildren(){if(!this._namedChildren){marshalNode(this),C._ts_node_named_children_wasm(this.tree[0]);let e=getValue(TRANSFER_BUFFER,"i32"),t=getValue(TRANSFER_BUFFER+SIZE_OF_INT,"i32");if(this._namedChildren=new Array(e),e>0){let n=t;for(let r=0;r<e;r++)this._namedChildren[r]=unmarshalNode(this.tree,n),n+=SIZE_OF_NODE;C._free(t)}}return this._namedChildren}descendantsOfType(e,t,n){Array.isArray(e)||(e=[e]),t||(t=ZERO_POINT),n||(n=ZERO_POINT);let r=[],a=this.tree.language.types;for(let h=0,d=a.length;h<d;h++)e.includes(a[h])&&r.push(h);let o=C._malloc(SIZE_OF_INT*r.length);for(let h=0,d=r.length;h<d;h++)setValue(o+h*SIZE_OF_INT,r[h],"i32");marshalNode(this),C._ts_node_descendants_of_type_wasm(this.tree[0],o,r.length,t.row,t.column,n.row,n.column);let l=getValue(TRANSFER_BUFFER,"i32"),c=getValue(TRANSFER_BUFFER+SIZE_OF_INT,"i32"),u=new Array(l);if(l>0){let h=c;for(let d=0;d<l;d++)u[d]=unmarshalNode(this.tree,h),h+=SIZE_OF_NODE}return C._free(c),C._free(o),u}get nextSibling(){return marshalNode(this),C._ts_node_next_sibling_wasm(this.tree[0]),unmarshalNode(this.tree)}get previousSibling(){return marshalNode(this),C._ts_node_prev_sibling_wasm(this.tree[0]),unmarshalNode(this.tree)}get nextNamedSibling(){return marshalNode(this),C._ts_node_next_named_sibling_wasm(this.tree[0]),unmarshalNode(this.tree)}get previousNamedSibling(){return marshalNode(this),C._ts_node_prev_named_sibling_wasm(this.tree[0]),unmarshalNode(this.tree)}get descendantCount(){return marshalNode(this),C._ts_node_descendant_count_wasm(this.tree[0])}get parent(){return marshalNode(this),C._ts_node_parent_wasm(this.tree[0]),unmarshalNode(this.tree)}descendantForIndex(e,t=e){if(typeof e!="number"||typeof t!="number")throw new Error("Arguments must be numbers");marshalNode(this);let n=TRANSFER_BUFFER+SIZE_OF_NODE;return setValue(n,e,"i32"),setValue(n+SIZE_OF_INT,t,"i32"),C._ts_node_descendant_for_index_wasm(this.tree[0]),unmarshalNode(this.tree)}namedDescendantForIndex(e,t=e){if(typeof e!="number"||typeof t!="number")throw new Error("Arguments must be numbers");marshalNode(this);let n=TRANSFER_BUFFER+SIZE_OF_NODE;return setValue(n,e,"i32"),setValue(n+SIZE_OF_INT,t,"i32"),C._ts_node_named_descendant_for_index_wasm(this.tree[0]),unmarshalNode(this.tree)}descendantForPosition(e,t=e){if(!isPoint(e)||!isPoint(t))throw new Error("Arguments must be {row, column} objects");marshalNode(this);let n=TRANSFER_BUFFER+SIZE_OF_NODE;return marshalPoint(n,e),marshalPoint(n+SIZE_OF_POINT,t),C._ts_node_descendant_for_position_wasm(this.tree[0]),unmarshalNode(this.tree)}namedDescendantForPosition(e,t=e){if(!isPoint(e)||!isPoint(t))throw new Error("Arguments must be {row, column} objects");marshalNode(this);let n=TRANSFER_BUFFER+SIZE_OF_NODE;return marshalPoint(n,e),marshalPoint(n+SIZE_OF_POINT,t),C._ts_node_named_descendant_for_position_wasm(this.tree[0]),unmarshalNode(this.tree)}walk(){return marshalNode(this),C._ts_tree_cursor_new_wasm(this.tree[0]),new TreeCursor(INTERNAL,this.tree)}toString(){marshalNode(this);let e=C._ts_node_to_string_wasm(this.tree[0]),t=AsciiToString(e);return C._free(e),t}}class TreeCursor{constructor(e,t){assertInternal(e),this.tree=t,unmarshalTreeCursor(this)}delete(){marshalTreeCursor(this),C._ts_tree_cursor_delete_wasm(this.tree[0]),this[0]=this[1]=this[2]=0}reset(e){marshalNode(e),marshalTreeCursor(this,TRANSFER_BUFFER+SIZE_OF_NODE),C._ts_tree_cursor_reset_wasm(this.tree[0]),unmarshalTreeCursor(this)}resetTo(e){marshalTreeCursor(this,TRANSFER_BUFFER),marshalTreeCursor(e,TRANSFER_BUFFER+SIZE_OF_CURSOR),C._ts_tree_cursor_reset_to_wasm(this.tree[0],e.tree[0]),unmarshalTreeCursor(this)}get nodeType(){return this.tree.language.types[this.nodeTypeId]||"ERROR"}get nodeTypeId(){return marshalTreeCursor(this),C._ts_tree_cursor_current_node_type_id_wasm(this.tree[0])}get nodeStateId(){return marshalTreeCursor(this),C._ts_tree_cursor_current_node_state_id_wasm(this.tree[0])}get nodeId(){return marshalTreeCursor(this),C._ts_tree_cursor_current_node_id_wasm(this.tree[0])}get nodeIsNamed(){return marshalTreeCursor(this),C._ts_tree_cursor_current_node_is_named_wasm(this.tree[0])===1}get nodeIsMissing(){return marshalTreeCursor(this),C._ts_tree_cursor_current_node_is_missing_wasm(this.tree[0])===1}get nodeText(){marshalTreeCursor(this);let e=C._ts_tree_cursor_start_index_wasm(this.tree[0]),t=C._ts_tree_cursor_end_index_wasm(this.tree[0]);return getText(this.tree,e,t)}get startPosition(){return marshalTreeCursor(this),C._ts_tree_cursor_start_position_wasm(this.tree[0]),unmarshalPoint(TRANSFER_BUFFER)}get endPosition(){return marshalTreeCursor(this),C._ts_tree_cursor_end_position_wasm(this.tree[0]),unmarshalPoint(TRANSFER_BUFFER)}get startIndex(){return marshalTreeCursor(this),C._ts_tree_cursor_start_index_wasm(this.tree[0])}get endIndex(){return marshalTreeCursor(this),C._ts_tree_cursor_end_index_wasm(this.tree[0])}get currentNode(){return marshalTreeCursor(this),C._ts_tree_cursor_current_node_wasm(this.tree[0]),unmarshalNode(this.tree)}get currentFieldId(){return marshalTreeCursor(this),C._ts_tree_cursor_current_field_id_wasm(this.tree[0])}get currentFieldName(){return this.tree.language.fields[this.currentFieldId]}get currentDepth(){return marshalTreeCursor(this),C._ts_tree_cursor_current_depth_wasm(this.tree[0])}get currentDescendantIndex(){return marshalTreeCursor(this),C._ts_tree_cursor_current_descendant_index_wasm(this.tree[0])}gotoFirstChild(){marshalTreeCursor(this);let e=C._ts_tree_cursor_goto_first_child_wasm(this.tree[0]);return unmarshalTreeCursor(this),e===1}gotoLastChild(){marshalTreeCursor(this);let e=C._ts_tree_cursor_goto_last_child_wasm(this.tree[0]);return unmarshalTreeCursor(this),e===1}gotoFirstChildForIndex(e){marshalTreeCursor(this),setValue(TRANSFER_BUFFER+SIZE_OF_CURSOR,e,"i32");let t=C._ts_tree_cursor_goto_first_child_for_index_wasm(this.tree[0]);return unmarshalTreeCursor(this),t===1}gotoFirstChildForPosition(e){marshalTreeCursor(this),marshalPoint(TRANSFER_BUFFER+SIZE_OF_CURSOR,e);let t=C._ts_tree_cursor_goto_first_child_for_position_wasm(this.tree[0]);return unmarshalTreeCursor(this),t===1}gotoNextSibling(){marshalTreeCursor(this);let e=C._ts_tree_cursor_goto_next_sibling_wasm(this.tree[0]);return unmarshalTreeCursor(this),e===1}gotoPreviousSibling(){marshalTreeCursor(this);let e=C._ts_tree_cursor_goto_previous_sibling_wasm(this.tree[0]);return unmarshalTreeCursor(this),e===1}gotoDescendant(e){marshalTreeCursor(this),C._ts_tree_cursor_goto_descendant_wasm(this.tree[0],e),unmarshalTreeCursor(this)}gotoParent(){marshalTreeCursor(this);let e=C._ts_tree_cursor_goto_parent_wasm(this.tree[0]);return unmarshalTreeCursor(this),e===1}}class Language{constructor(e,t){assertInternal(e),this[0]=t,this.types=new Array(C._ts_language_symbol_count(this[0]));for(let n=0,r=this.types.length;n<r;n++)C._ts_language_symbol_type(this[0],n)<2&&(this.types[n]=UTF8ToString(C._ts_language_symbol_name(this[0],n)));this.fields=new Array(C._ts_language_field_count(this[0])+1);for(let n=0,r=this.fields.length;n<r;n++){let a=C._ts_language_field_name_for_id(this[0],n);this.fields[n]=a!==0?UTF8ToString(a):null}}get version(){return C._ts_language_version(this[0])}get fieldCount(){return this.fields.length-1}get stateCount(){return C._ts_language_state_count(this[0])}fieldIdForName(e){let t=this.fields.indexOf(e);return t!==-1?t:null}fieldNameForId(e){return this.fields[e]||null}idForNodeType(e,t){let n=lengthBytesUTF8(e),r=C._malloc(n+1);stringToUTF8(e,r,n+1);let a=C._ts_language_symbol_for_name(this[0],r,n,t);return C._free(r),a||null}get nodeTypeCount(){return C._ts_language_symbol_count(this[0])}nodeTypeForId(e){let t=C._ts_language_symbol_name(this[0],e);return t?UTF8ToString(t):null}nodeTypeIsNamed(e){return!!C._ts_language_type_is_named_wasm(this[0],e)}nodeTypeIsVisible(e){return!!C._ts_language_type_is_visible_wasm(this[0],e)}nextState(e,t){return C._ts_language_next_state(this[0],e,t)}lookaheadIterator(e){let t=C._ts_lookahead_iterator_new(this[0],e);return t?new LookaheadIterable(INTERNAL,t,this):null}query(e){let t=lengthBytesUTF8(e),n=C._malloc(t+1);stringToUTF8(e,n,t+1);let r=C._ts_query_new(this[0],n,t,TRANSFER_BUFFER,TRANSFER_BUFFER+SIZE_OF_INT);if(!r){let g=getValue(TRANSFER_BUFFER+SIZE_OF_INT,"i32"),_=getValue(TRANSFER_BUFFER,"i32"),b=UTF8ToString(n,_).length,w=e.substr(b,100).split(`
3
+ `)[0],y,N=w.match(QUERY_WORD_REGEX)[0];switch(g){case 2:y=new RangeError(`Bad node name '${N}'`);break;case 3:y=new RangeError(`Bad field name '${N}'`);break;case 4:y=new RangeError(`Bad capture name @${N}`);break;case 5:y=new TypeError(`Bad pattern structure at offset ${b}: '${w}'...`),N="";break;default:y=new SyntaxError(`Bad syntax at offset ${b}: '${w}'...`),N=""}throw y.index=b,y.length=N.length,C._free(n),y}let a=C._ts_query_string_count(r),o=C._ts_query_capture_count(r),l=C._ts_query_pattern_count(r),c=new Array(o),u=new Array(a);for(let g=0;g<o;g++){let _=C._ts_query_capture_name_for_id(r,g,TRANSFER_BUFFER),b=getValue(TRANSFER_BUFFER,"i32");c[g]=UTF8ToString(_,b)}for(let g=0;g<a;g++){let _=C._ts_query_string_value_for_id(r,g,TRANSFER_BUFFER),b=getValue(TRANSFER_BUFFER,"i32");u[g]=UTF8ToString(_,b)}let h=new Array(l),d=new Array(l),p=new Array(l),f=new Array(l),m=new Array(l);for(let g=0;g<l;g++){let _=C._ts_query_predicates_for_pattern(r,g,TRANSFER_BUFFER),b=getValue(TRANSFER_BUFFER,"i32");f[g]=[],m[g]=[];let w=[],y=_;for(let N=0;N<b;N++){let R=getValue(y,"i32");y+=SIZE_OF_INT;let v=getValue(y,"i32");if(y+=SIZE_OF_INT,R===PREDICATE_STEP_TYPE_CAPTURE)w.push({type:"capture",name:c[v]});else if(R===PREDICATE_STEP_TYPE_STRING)w.push({type:"string",value:u[v]});else if(w.length>0){if(w[0].type!=="string")throw new Error("Predicates must begin with a literal value");let E=w[0].value,$,T=!0,F=!0;switch(E){case"any-not-eq?":case"not-eq?":T=!1;case"any-eq?":case"eq?":if(w.length!==3)throw new Error(`Wrong number of arguments to \`#${E}\` predicate. Expected 2, got ${w.length-1}`);if(w[1].type!=="capture")throw new Error(`First argument of \`#${E}\` predicate must be a capture. Got "${w[1].value}"`);if(F=!E.startsWith("any-"),w[2].type==="capture"){let U=w[1].name,G=w[2].name;m[g].push((ee=>{let re=[],Re=[];for(let pe of ee)pe.name===U&&re.push(pe.node),pe.name===G&&Re.push(pe.node);let dt=(pe,Ze,Pa)=>Pa?pe.text===Ze.text:pe.text!==Ze.text;return F?re.every((pe=>Re.some((Ze=>dt(pe,Ze,T))))):re.some((pe=>Re.some((Ze=>dt(pe,Ze,T)))))}))}else{$=w[1].name;let U=w[2].value,G=re=>re.text===U,ee=re=>re.text!==U;m[g].push((re=>{let Re=[];for(let pe of re)pe.name===$&&Re.push(pe.node);let dt=T?G:ee;return F?Re.every(dt):Re.some(dt)}))}break;case"any-not-match?":case"not-match?":T=!1;case"any-match?":case"match?":if(w.length!==3)throw new Error(`Wrong number of arguments to \`#${E}\` predicate. Expected 2, got ${w.length-1}.`);if(w[1].type!=="capture")throw new Error(`First argument of \`#${E}\` predicate must be a capture. Got "${w[1].value}".`);if(w[2].type!=="string")throw new Error(`Second argument of \`#${E}\` predicate must be a string. Got @${w[2].value}.`);$=w[1].name;let q=new RegExp(w[2].value);F=!E.startsWith("any-"),m[g].push((U=>{let G=[];for(let re of U)re.name===$&&G.push(re.node.text);let ee=(re,Re)=>Re?q.test(re):!q.test(re);return G.length===0?!T:F?G.every((re=>ee(re,T))):G.some((re=>ee(re,T)))}));break;case"set!":if(w.length<2||w.length>3)throw new Error(`Wrong number of arguments to \`#set!\` predicate. Expected 1 or 2. Got ${w.length-1}.`);if(w.some((U=>U.type!=="string")))throw new Error('Arguments to `#set!` predicate must be a strings.".');h[g]||(h[g]={}),h[g][w[1].value]=w[2]?w[2].value:null;break;case"is?":case"is-not?":if(w.length<2||w.length>3)throw new Error(`Wrong number of arguments to \`#${E}\` predicate. Expected 1 or 2. Got ${w.length-1}.`);if(w.some((U=>U.type!=="string")))throw new Error(`Arguments to \`#${E}\` predicate must be a strings.".`);let P=E==="is?"?d:p;P[g]||(P[g]={}),P[g][w[1].value]=w[2]?w[2].value:null;break;case"not-any-of?":T=!1;case"any-of?":if(w.length<2)throw new Error(`Wrong number of arguments to \`#${E}\` predicate. Expected at least 1. Got ${w.length-1}.`);if(w[1].type!=="capture")throw new Error(`First argument of \`#${E}\` predicate must be a capture. Got "${w[1].value}".`);for(let U=2;U<w.length;U++)if(w[U].type!=="string")throw new Error(`Arguments to \`#${E}\` predicate must be a strings.".`);$=w[1].name;let H=w.slice(2).map((U=>U.value));m[g].push((U=>{let G=[];for(let ee of U)ee.name===$&&G.push(ee.node.text);return G.length===0?!T:G.every((ee=>H.includes(ee)))===T}));break;default:f[g].push({operator:E,operands:w.slice(1)})}w.length=0}}Object.freeze(h[g]),Object.freeze(d[g]),Object.freeze(p[g])}return C._free(n),new Query(INTERNAL,r,c,m,f,Object.freeze(h),Object.freeze(d),Object.freeze(p))}static load(e){let t;if(e instanceof Uint8Array)t=Promise.resolve(e);else{let n=e;if(typeof process<"u"&&process.versions&&process.versions.node){let r=require("fs");t=Promise.resolve(r.readFileSync(n))}else t=fetch(n).then((r=>r.arrayBuffer().then((a=>{if(r.ok)return new Uint8Array(a);{let o=new TextDecoder("utf-8").decode(a);throw new Error(`Language.load failed with status ${r.status}.
4
4
 
5
5
  ${o}`)}}))))}return t.then((n=>loadWebAssemblyModule(n,{loadAsync:!0}))).then((n=>{let r=Object.keys(n),a=r.find((l=>LANGUAGE_FUNCTION_REGEX.test(l)&&!l.includes("external_scanner_")));a||console.log(`Couldn't find language function in WASM file. Symbols:
6
- ${JSON.stringify(r,null,2)}`);let o=n[a]();return new Language(INTERNAL,o)}))}}class LookaheadIterable{constructor(e,t,n){assertInternal(e),this[0]=t,this.language=n}get currentTypeId(){return C._ts_lookahead_iterator_current_symbol(this[0])}get currentType(){return this.language.types[this.currentTypeId]||"ERROR"}delete(){C._ts_lookahead_iterator_delete(this[0]),this[0]=0}resetState(e){return C._ts_lookahead_iterator_reset_state(this[0],e)}reset(e,t){return!!C._ts_lookahead_iterator_reset(this[0],e[0],t)&&(this.language=e,!0)}[Symbol.iterator](){let e=this;return{next:()=>C._ts_lookahead_iterator_next(e[0])?{done:!1,value:e.currentType}:{done:!0,value:""}}}}class Query{constructor(e,t,n,r,a,o,l,c){assertInternal(e),this[0]=t,this.captureNames=n,this.textPredicates=r,this.predicates=a,this.setProperties=o,this.assertedProperties=l,this.refutedProperties=c,this.exceededMatchLimit=!1}delete(){C._ts_query_delete(this[0]),this[0]=0}matches(e,{startPosition:t=ZERO_POINT,endPosition:n=ZERO_POINT,startIndex:r=0,endIndex:a=0,matchLimit:o=4294967295,maxStartDepth:l=4294967295}={}){if(typeof o!="number")throw new Error("Arguments must be numbers");marshalNode(e),C._ts_query_matches_wasm(this[0],e.tree[0],t.row,t.column,n.row,n.column,r,a,o,l);let c=getValue(TRANSFER_BUFFER,"i32"),u=getValue(TRANSFER_BUFFER+SIZE_OF_INT,"i32"),h=getValue(TRANSFER_BUFFER+2*SIZE_OF_INT,"i32"),d=new Array(c);this.exceededMatchLimit=!!h;let p=0,f=u;for(let m=0;m<c;m++){let g=getValue(f,"i32");f+=SIZE_OF_INT;let _=getValue(f,"i32");f+=SIZE_OF_INT;let b=new Array(_);if(f=unmarshalCaptures(this,e.tree,f,b),this.textPredicates[g].every((w=>w(b)))){d[p]={pattern:g,captures:b};let w=this.setProperties[g];w&&(d[p].setProperties=w);let k=this.assertedProperties[g];k&&(d[p].assertedProperties=k);let v=this.refutedProperties[g];v&&(d[p].refutedProperties=v),p++}}return d.length=p,C._free(u),d}captures(e,{startPosition:t=ZERO_POINT,endPosition:n=ZERO_POINT,startIndex:r=0,endIndex:a=0,matchLimit:o=4294967295,maxStartDepth:l=4294967295}={}){if(typeof o!="number")throw new Error("Arguments must be numbers");marshalNode(e),C._ts_query_captures_wasm(this[0],e.tree[0],t.row,t.column,n.row,n.column,r,a,o,l);let c=getValue(TRANSFER_BUFFER,"i32"),u=getValue(TRANSFER_BUFFER+SIZE_OF_INT,"i32"),h=getValue(TRANSFER_BUFFER+2*SIZE_OF_INT,"i32"),d=[];this.exceededMatchLimit=!!h;let p=[],f=u;for(let m=0;m<c;m++){let g=getValue(f,"i32");f+=SIZE_OF_INT;let _=getValue(f,"i32");f+=SIZE_OF_INT;let b=getValue(f,"i32");if(f+=SIZE_OF_INT,p.length=_,f=unmarshalCaptures(this,e.tree,f,p),this.textPredicates[g].every((w=>w(p)))){let w=p[b],k=this.setProperties[g];k&&(w.setProperties=k);let v=this.assertedProperties[g];v&&(w.assertedProperties=v);let R=this.refutedProperties[g];R&&(w.refutedProperties=R),d.push(w)}}return C._free(u),d}predicatesForPattern(e){return this.predicates[e]}disableCapture(e){let t=lengthBytesUTF8(e),n=C._malloc(t+1);stringToUTF8(e,n,t+1),C._ts_query_disable_capture(this[0],n,t),C._free(n)}didExceedMatchLimit(){return this.exceededMatchLimit}}function getText(s,e,t){let n=t-e,r=s.textCallback(e,null,t);for(e+=r.length;e<t;){let a=s.textCallback(e,null,t);if(!(a&&a.length>0))break;e+=a.length,r+=a}return e>t&&(r=r.slice(0,n)),r}function unmarshalCaptures(s,e,t,n){for(let r=0,a=n.length;r<a;r++){let o=getValue(t,"i32"),l=unmarshalNode(e,t+=SIZE_OF_INT);t+=SIZE_OF_NODE,n[r]={name:s.captureNames[o],node:l}}return t}function assertInternal(s){if(s!==INTERNAL)throw new Error("Illegal constructor")}function isPoint(s){return s&&typeof s.row=="number"&&typeof s.column=="number"}function marshalNode(s){let e=TRANSFER_BUFFER;setValue(e,s.id,"i32"),e+=SIZE_OF_INT,setValue(e,s.startIndex,"i32"),e+=SIZE_OF_INT,setValue(e,s.startPosition.row,"i32"),e+=SIZE_OF_INT,setValue(e,s.startPosition.column,"i32"),e+=SIZE_OF_INT,setValue(e,s[0],"i32")}function unmarshalNode(s,e=TRANSFER_BUFFER){let t=getValue(e,"i32");if(t===0)return null;let n=getValue(e+=SIZE_OF_INT,"i32"),r=getValue(e+=SIZE_OF_INT,"i32"),a=getValue(e+=SIZE_OF_INT,"i32"),o=getValue(e+=SIZE_OF_INT,"i32"),l=new Node(INTERNAL,s);return l.id=t,l.startIndex=n,l.startPosition={row:r,column:a},l[0]=o,l}function marshalTreeCursor(s,e=TRANSFER_BUFFER){setValue(e+0*SIZE_OF_INT,s[0],"i32"),setValue(e+1*SIZE_OF_INT,s[1],"i32"),setValue(e+2*SIZE_OF_INT,s[2],"i32"),setValue(e+3*SIZE_OF_INT,s[3],"i32")}function unmarshalTreeCursor(s){s[0]=getValue(TRANSFER_BUFFER+0*SIZE_OF_INT,"i32"),s[1]=getValue(TRANSFER_BUFFER+1*SIZE_OF_INT,"i32"),s[2]=getValue(TRANSFER_BUFFER+2*SIZE_OF_INT,"i32"),s[3]=getValue(TRANSFER_BUFFER+3*SIZE_OF_INT,"i32")}function marshalPoint(s,e){setValue(s,e.row,"i32"),setValue(s+SIZE_OF_INT,e.column,"i32")}function unmarshalPoint(s){return{row:getValue(s,"i32")>>>0,column:getValue(s+SIZE_OF_INT,"i32")>>>0}}function marshalRange(s,e){marshalPoint(s,e.startPosition),marshalPoint(s+=SIZE_OF_POINT,e.endPosition),setValue(s+=SIZE_OF_POINT,e.startIndex,"i32"),setValue(s+=SIZE_OF_INT,e.endIndex,"i32"),s+=SIZE_OF_INT}function unmarshalRange(s){let e={};return e.startPosition=unmarshalPoint(s),s+=SIZE_OF_POINT,e.endPosition=unmarshalPoint(s),s+=SIZE_OF_POINT,e.startIndex=getValue(s,"i32")>>>0,s+=SIZE_OF_INT,e.endIndex=getValue(s,"i32")>>>0,e}function marshalEdit(s){let e=TRANSFER_BUFFER;marshalPoint(e,s.startPosition),e+=SIZE_OF_POINT,marshalPoint(e,s.oldEndPosition),e+=SIZE_OF_POINT,marshalPoint(e,s.newEndPosition),e+=SIZE_OF_POINT,setValue(e,s.startIndex,"i32"),e+=SIZE_OF_INT,setValue(e,s.oldEndIndex,"i32"),e+=SIZE_OF_INT,setValue(e,s.newEndIndex,"i32"),e+=SIZE_OF_INT}for(let s of Object.getOwnPropertyNames(ParserImpl.prototype))Object.defineProperty(Parser.prototype,s,{value:ParserImpl.prototype[s],enumerable:!1,writable:!1});Parser.Language=Language,Module.onRuntimeInitialized=()=>{ParserImpl.init(),resolveInitPromise()}})))}}return Parser})();typeof exports=="object"&&(module.exports=TreeSitter)});var dc={};Da(dc,{main:()=>Ca,parseArgs:()=>Aa});module.exports=za(dc);var It=Ls(require("fs")),Ra=Ls(require("path"));function A(s){return(e,t)=>s==="ja"?e:t}function ye(s,e){return s.map(t=>({...t,start:t.start+e,end:t.end+e,children:ye(t.children,e)}))}function qs(s,e){let t=A(e);if(s.length<2||!s.some(d=>d.op===">&"||d.op==="<&"))return;let n=d=>[t("\u5143\u306E\u6A19\u6E96\u5165\u529B","the original stdin"),t("\u5143\u306E\u6A19\u6E96\u51FA\u529B","the original stdout"),t("\u5143\u306E\u6A19\u6E96\u30A8\u30E9\u30FC\u51FA\u529B","the original stderr")][d]??t(`\u5143\u306E fd ${d}`,`the original fd ${d}`),r=new Map([[0,n(0)],[1,n(1)],[2,n(2)]]),a=[],o=(d,p)=>{r.set(d,p),a.includes(d)||a.push(d)},l=!1;s.forEach((d,p)=>{let f=d.fd!==""?Number(d.fd):d.op.startsWith("<")?0:1;switch(d.op){case">&":case"<&":d.dest==="-"?o(f,t("\u9589\u3058\u305F\u72B6\u614B","closed")):/^\d+$/.test(d.dest)?(o(f,r.get(Number(d.dest))??n(Number(d.dest))),f===2&&d.dest==="1"&&s.slice(p+1).some(m=>(m.fd===""||m.fd==="1")&&/^>>?$|^>\|$/.test(m.op))&&(l=!0)):(o(1,d.dest),o(2,d.dest));break;case"&>":case"&>>":o(1,d.dest),o(2,d.dest);break;case"<<":case"<<-":case"<<<":o(0,t("\u30D2\u30A2\u30C9\u30AD\u30E5\u30E1\u30F3\u30C8\uFF0F\u6587\u5B57\u5217","the here-document/string"));break;default:o(f,d.dest)}});let c=d=>[t("\u6A19\u6E96\u5165\u529B","stdin"),t("\u6A19\u6E96\u51FA\u529B","stdout"),t("\u6A19\u6E96\u30A8\u30E9\u30FC\u51FA\u529B","stderr")][d]??`fd ${d}`,u=a.sort((d,p)=>d-p).map(d=>`${c(d)} \u2192 ${r.get(d)}`).join(t("\u3001",", ")),h=t(`\u30EA\u30C0\u30A4\u30EC\u30AF\u30C8\u306F\u5DE6\u304B\u3089\u9806\u306B\u9069\u7528\u3055\u308C\u308B\u3002\u6700\u7D42\u7684\u306B: ${u}`,`Redirections apply left to right. In the end: ${u}`);return r.get(1)==="/dev/null"&&r.get(2)==="/dev/null"&&(h+=t("\uFF08\u901A\u5E38\u306E\u51FA\u529B\u3082\u30A8\u30E9\u30FC\u51FA\u529B\u3082\u3059\u3079\u3066\u6368\u3066\u308B\uFF09"," (all output, including errors, is discarded)")),r.get(1)===n(2)&&r.get(2)===n(1)&&(h+=t("\uFF08\u6A19\u6E96\u51FA\u529B\u3068\u6A19\u6E96\u30A8\u30E9\u30FC\u51FA\u529B\u304C\u5165\u308C\u66FF\u308F\u308B\uFF09"," (stdout and stderr are swapped)")),l&&(h+=t("\u3002\u6CE8\u610F: `2>&1` \u304C\u30D5\u30A1\u30A4\u30EB\u3078\u306E\u30EA\u30C0\u30A4\u30EC\u30AF\u30C8\u3088\u308A\u5148\u306B\u3042\u308B\u306E\u3067\u3001\u6A19\u6E96\u30A8\u30E9\u30FC\u51FA\u529B\u306F\u30D5\u30A1\u30A4\u30EB\u3067\u306F\u306A\u304F\u5143\u306E\u6A19\u6E96\u51FA\u529B\u306B\u51FA\u308B\uFF08\u4E21\u65B9\u3092\u30D5\u30A1\u30A4\u30EB\u306B\u9001\u308B\u306A\u3089 `>file 2>&1` \u306E\u9806\u306B\u3059\u308B\uFF09",". Note: `2>&1` comes before the file redirection, so stderr goes to the original stdout, not the file (write `>file 2>&1` to send both)")),h}var js=[{test:/\bIFS=(''|"")? read (-[a-zA-Z]* )*-[a-zA-Z]*r/,ja:"`IFS= read -r`: 1\u884C\u3092\u52A0\u5DE5\u305B\u305A\u305D\u306E\u307E\u307E\u8AAD\u3080\uFF08`IFS=` \u3067\u524D\u5F8C\u306E\u7A7A\u767D\u3092\u53D6\u308A\u9664\u304B\u305B\u305A\u3001`-r` \u3067\u30D0\u30C3\u30AF\u30B9\u30E9\u30C3\u30B7\u30E5\u3092\u305D\u306E\u307E\u307E\u6B8B\u3059\uFF09",en:"`IFS= read -r`: reads a line exactly as is (`IFS=` keeps surrounding spaces, `-r` keeps backslashes)"},{test:/\$\(cd "?\$\(dirname "?\$(\{BASH_SOURCE(\[0\])?\}|BASH_SOURCE|0|\{0\})"?\)"? (&&|;) pwd( -P)?\)/,ja:"\u30B9\u30AF\u30EA\u30D7\u30C8\u304C\u7F6E\u304B\u308C\u3066\u3044\u308B\u30C7\u30A3\u30EC\u30AF\u30C8\u30EA\u306E\u7D76\u5BFE\u30D1\u30B9\u3092\u5F97\u308B\uFF08\u3069\u3053\u304B\u3089\u5B9F\u884C\u3057\u3066\u3082\u540C\u3058\u5834\u6240\u3092\u6307\u305B\u308B\uFF09",en:"gets the absolute path of the directory the script lives in (the same wherever it is run from)"},{test:/^cd "?\$\(dirname "?\$(\{BASH_SOURCE(\[0\])?\}|BASH_SOURCE|0|\{0\})"?\)"?/,unless:1,ja:"\u30B9\u30AF\u30EA\u30D7\u30C8\u304C\u7F6E\u304B\u308C\u3066\u3044\u308B\u30C7\u30A3\u30EC\u30AF\u30C8\u30EA\u306B\u79FB\u52D5\u3059\u308B\uFF08\u3069\u3053\u304B\u3089\u5B9F\u884C\u3057\u3066\u3082\u76F8\u5BFE\u30D1\u30B9\u304C\u540C\u3058\u3088\u3046\u306B\u4F7F\u3048\u308B\uFF09",en:"moves to the directory the script lives in (so relative paths work wherever it is run from)"},{test:/\b(command -v|type -P|which|hash) \S+ (>\s*\/dev\/null 2>&1|&>\s*\/dev\/null|>\/dev\/null 2>&1)/,ja:"\u30B3\u30DE\u30F3\u30C9\u304C\u30A4\u30F3\u30B9\u30C8\u30FC\u30EB\u3055\u308C\u3066\u3044\u308B\u304B\u3092\u3001\u51FA\u529B\u3092\u51FA\u3055\u305A\u306B\u78BA\u304B\u3081\u308B",en:"checks quietly whether a command is installed"},{test:/\[\[? "?\$\{?BASH_SOURCE(\[0\])?\}?"? (==?|-ef) "?\$\{?0\}?"? \]\]?/,ja:'\u30B9\u30AF\u30EA\u30D7\u30C8\u304C\u76F4\u63A5\u5B9F\u884C\u3055\u308C\u305F\u304B\uFF08`source` \u3067\u8AAD\u307F\u8FBC\u307E\u308C\u305F\u306E\u3067\u306F\u306A\u3044\u304B\uFF09\u3092\u5224\u5B9A\u3059\u308B\uFF08Python \u306E `if __name__ == "__main__"` \u306B\u76F8\u5F53\uFF09',en:'checks whether the script is run directly rather than sourced (like Python\'s `if __name__ == "__main__"`)'},{test:/^set -[a-zA-Z]*e[a-zA-Z]*u[a-zA-Z]*o pipefail\b|^set -[a-zA-Z]*u[a-zA-Z]*e[a-zA-Z]*o pipefail\b/,ja:"\u5B89\u5168\u306A\u30B9\u30AF\u30EA\u30D7\u30C8\u306E\u305F\u3081\u306E\u5B9A\u756A\u8A2D\u5B9A\uFF08strict mode\uFF09: \u30A8\u30E9\u30FC\u3067\u6B62\u307E\u308B\u3001\u672A\u5B9A\u7FA9\u306E\u5909\u6570\u3092\u30A8\u30E9\u30FC\u306B\u3059\u308B\u3001\u30D1\u30A4\u30D7\u306E\u9014\u4E2D\u306E\u5931\u6557\u3082\u898B\u9003\u3055\u306A\u3044",en:'the usual "strict mode": stop on errors, treat unset variables as errors, and catch failures inside pipelines'},{test:/^: "?\$\{\w+:?\?/,ja:'`: "${VAR:?\u2026}"`: \u5FC5\u9808\u306E\u5909\u6570\u304C\u8A2D\u5B9A\u3055\u308C\u3066\u3044\u308B\u304B\u78BA\u304B\u3081\u308B\uFF08\u672A\u8A2D\u5B9A\u306A\u3089\u30E1\u30C3\u30BB\u30FC\u30B8\u3092\u51FA\u3057\u3066\u7D42\u4E86\u3002`:` \u306F\u4F55\u3082\u3057\u306A\u3044\u30B3\u30DE\u30F3\u30C9\uFF09',en:'`: "${VAR:?\u2026}"`: checks that a required variable is set (exits with the message if not; `:` does nothing itself)'},{test:/^: "?\$\{\w+:?=/,ja:'`: "${VAR:=\u2026}"`: \u5909\u6570\u304C\u672A\u8A2D\u5B9A\u306A\u3089\u65E2\u5B9A\u5024\u3092\u4EE3\u5165\u3059\u308B\uFF08`:` \u306F\u4F55\u3082\u3057\u306A\u3044\u30B3\u30DE\u30F3\u30C9\u3067\u3001\u5C55\u958B\u3060\u3051\u3092\u884C\u308F\u305B\u308B\uFF09',en:'`: "${VAR:=\u2026}"`: assigns a default if the variable is unset (`:` does nothing; only the expansion matters)'},{test:/\|\| (true|:)$/,ja:"`|| true`: \u5931\u6557\u3057\u3066\u3082\u7D42\u4E86\u30B9\u30C6\u30FC\u30BF\u30B9\u3092\u6210\u529F\u306B\u3059\u308B\uFF08`set -e` \u3067\u30B9\u30AF\u30EA\u30D7\u30C8\u304C\u6B62\u307E\u3089\u306A\u3044\u3088\u3046\u306B\u3059\u308B\uFF09",en:"`|| true`: turns a failure into success (so `set -e` does not stop the script)"},{test:/^trap .+ EXIT\b/,ja:"`trap \u2026 EXIT`: \u30B9\u30AF\u30EA\u30D7\u30C8\u304C\u3069\u3046\u7D42\u308F\u3063\u3066\u3082\uFF08\u30A8\u30E9\u30FC\u3067\u3082\uFF09\u6700\u5F8C\u306B\u5F8C\u7247\u4ED8\u3051\u3092\u5B9F\u884C\u3059\u308B",en:"`trap \u2026 EXIT`: runs clean-up when the script exits, however it exits"},{test:/^exec (> >\(tee|&> >\(tee|> >\(logger)/,ja:"\u4EE5\u964D\u306E\u3059\u3079\u3066\u306E\u51FA\u529B\u3092\u753B\u9762\u306B\u51FA\u3057\u3064\u3064\u3001\u30ED\u30B0\u306B\u3082\u4FDD\u5B58\u3059\u308B",en:"from here on, everything printed also goes to a log"},{test:/^while (true|:); do|^while (true|:)$/,ja:"\u7121\u9650\u30EB\u30FC\u30D7\uFF08`break` \u3084 `exit` \u3067\u629C\u3051\u308B\uFF09",en:"an endless loop (left with `break` or `exit`)"},{test:/\$\(mktemp( -d)?( [^)]*)?\)/,ja:"`mktemp`: \u4ED6\u3068\u91CD\u306A\u3089\u306A\u3044\u4E00\u6642\u30D5\u30A1\u30A4\u30EB\uFF08-d \u306A\u3089\u30C7\u30A3\u30EC\u30AF\u30C8\u30EA\uFF09\u3092\u5B89\u5168\u306B\u4F5C\u308B",en:"`mktemp`: safely creates a unique temporary file (or directory with -d)"}];function Us(s,e){let t=A(e),n=s.map(a=>a.replace(/\\\n/g," ").replace(/\s+/g," ").trim()),r=js.map(a=>n.some(o=>a.test.test(o)));return js.filter((a,o)=>r[o]&&!(a.unless!==void 0&&r[a.unless])).map(a=>t(`\u5B9A\u756A\u306E\u66F8\u304D\u65B9: ${a.ja}`,`Idiom: ${a.en}`))}var x=(s,e)=>({ja:s,en:e});function y(s,e,t=[],n={}){let r={};for(let[a,o,l,c="",u]of t){let h={text:x(o,l)};c.includes("arg")&&(h.arg=!0),c.includes("until")&&(h.untilTerminator=!0),c.includes("fills")&&(h.fillsPositional=!0),c.includes("attached")&&(h.attachedOnly=!0);let d=/lang:(\w+)/.exec(c)?.[1];d&&(h.lang=d),u&&(h.values=u);for(let p of a.split("|"))r[p]=h}return{summary:x(s,e),options:r,...n}}var $=(s,e)=>x(s,e);var Pt={errexit:x("\u30B3\u30DE\u30F3\u30C9\u304C\u5931\u6557\u3057\u305F\u3089\u5373\u5EA7\u306B\u30B9\u30AF\u30EA\u30D7\u30C8\u3092\u7D42\u4E86\uFF08`-e` \u3068\u540C\u3058\uFF09","exit immediately when a command fails (same as `-e`)"),nounset:x("\u672A\u5B9A\u7FA9\u306E\u5909\u6570\u3092\u53C2\u7167\u3057\u305F\u3089\u30A8\u30E9\u30FC\uFF08`-u` \u3068\u540C\u3058\uFF09","error on unset variables (same as `-u`)"),pipefail:x("\u30D1\u30A4\u30D7\u30E9\u30A4\u30F3\u4E2D\u306E\u3069\u308C\u304B\u304C\u5931\u6557\u3057\u305F\u3089\u3001\u30D1\u30A4\u30D7\u30E9\u30A4\u30F3\u5168\u4F53\u3092\u5931\u6557\u6271\u3044\u306B\u3059\u308B","a pipeline fails if any command in it fails"),xtrace:x("\u5B9F\u884C\u3059\u308B\u30B3\u30DE\u30F3\u30C9\u3092\u8868\u793A\u3059\u308B\uFF08`-x` \u3068\u540C\u3058\uFF09","print commands as they run (same as `-x`)"),noclobber:x("`>` \u3067\u65E2\u5B58\u30D5\u30A1\u30A4\u30EB\u3092\u4E0A\u66F8\u304D\u3057\u306A\u3044\uFF08`-C` \u3068\u540C\u3058\uFF09","do not overwrite files with `>` (same as `-C`)"),noglob:x("\u30B0\u30ED\u30D6\uFF08\u30EF\u30A4\u30EB\u30C9\u30AB\u30FC\u30C9\u5C55\u958B\uFF09\u3092\u7121\u52B9\u5316\uFF08`-f` \u3068\u540C\u3058\uFF09","disable globbing (same as `-f`)"),vi:x("\u884C\u7DE8\u96C6\u3092 vi \u30E2\u30FC\u30C9\u306B\u3059\u308B","use vi-style line editing"),emacs:x("\u884C\u7DE8\u96C6\u3092 emacs \u30E2\u30FC\u30C9\u306B\u3059\u308B","use emacs-style line editing"),posix:x("POSIX \u4E92\u63DB\u30E2\u30FC\u30C9\u306B\u3059\u308B","POSIX compatibility mode")},T=(s,e,t=[],n={})=>y(s,e,t,{builtin:!0,...n}),Lt={echo:T("\u5F15\u6570\u3092\u7A7A\u767D\u533A\u5207\u308A\u3067\u6A19\u6E96\u51FA\u529B\u306B\u8868\u793A\u3059\u308B","Print arguments to stdout, separated by spaces",[["-n","\u672B\u5C3E\u306E\u6539\u884C\u3092\u51FA\u529B\u3057\u306A\u3044","do not print the trailing newline"],["-e","`\\n` \u306A\u3069\u306E\u30D0\u30C3\u30AF\u30B9\u30E9\u30C3\u30B7\u30E5\u30A8\u30B9\u30B1\u30FC\u30D7\u3092\u89E3\u91C8\u3059\u308B","interpret backslash escapes like `\\n`"],["-E","\u30D0\u30C3\u30AF\u30B9\u30E9\u30C3\u30B7\u30E5\u30A8\u30B9\u30B1\u30FC\u30D7\u3092\u89E3\u91C8\u3057\u306A\u3044\uFF08\u65E2\u5B9A\uFF09","do not interpret escapes (default)"]],{positional:[$("\u8868\u793A\u3059\u308B\u6587\u5B57\u5217","text to print")]}),printf:T("\u66F8\u5F0F\u3092\u6307\u5B9A\u3057\u3066\u6587\u5B57\u5217\u3092\u51FA\u529B\u3059\u308B\uFF08`%s` \u6587\u5B57\u5217, `%d` \u6574\u6570, `\\n` \u6539\u884C \u306A\u3069\uFF09","Print formatted output (`%s` string, `%d` integer, `\\n` newline\u2026)",[["-v","\u51FA\u529B\u305B\u305A\u3001\u7D50\u679C\u3092\u6307\u5B9A\u3057\u305F\u5909\u6570\u306B\u4EE3\u5165\u3059\u308B","assign the output to a variable instead of printing","arg"]],{positional:[$("\u66F8\u5F0F\u6587\u5B57\u5217","format string"),$("\u66F8\u5F0F\u306B\u57CB\u3081\u8FBC\u3080\u5024","value for the format")],positionalLang:["printf"]}),read:T("\u6A19\u6E96\u5165\u529B\u304B\u30891\u884C\u8AAD\u307F\u3001\u5909\u6570\u306B\u4EE3\u5165\u3059\u308B","Read a line from stdin into variables",[["-r","\u30D0\u30C3\u30AF\u30B9\u30E9\u30C3\u30B7\u30E5\u3092\u30A8\u30B9\u30B1\u30FC\u30D7\u6587\u5B57\u3068\u3057\u3066\u6271\u308F\u306A\u3044\uFF08\u307B\u307C\u5E38\u306B\u4ED8\u3051\u308B\u3079\u304D\uFF09","do not treat backslashes as escapes (almost always wanted)"],["-p","\u5165\u529B\u524D\u306B\u30D7\u30ED\u30F3\u30D7\u30C8\u3092\u8868\u793A\u3059\u308B","show a prompt first","arg"],["-s","\u5165\u529B\u3092\u753B\u9762\u306B\u8868\u793A\u3057\u306A\u3044\uFF08\u30D1\u30B9\u30EF\u30FC\u30C9\u5165\u529B\u7528\uFF09","silent mode (for passwords)"],["-a","\u5358\u8A9E\u306B\u5206\u5272\u3057\u3066\u914D\u5217\u306B\u4EE3\u5165\u3059\u308B","read words into an array","arg"],["-n","\u6307\u5B9A\u3057\u305F\u6587\u5B57\u6570\u3060\u3051\u8AAD\u3080","read only this many characters","arg"],["-t","\u30BF\u30A4\u30E0\u30A2\u30A6\u30C8\u79D2\u6570","timeout in seconds","arg"],["-d","\u6539\u884C\u306E\u4EE3\u308F\u308A\u306B\u3053\u306E\u6587\u5B57\u307E\u3067\u8AAD\u3080","read up to this delimiter instead of newline","arg"],["-u","\u6307\u5B9A\u3057\u305F\u30D5\u30A1\u30A4\u30EB\u30C7\u30A3\u30B9\u30AF\u30EA\u30D7\u30BF\u304B\u3089\u8AAD\u3080","read from this file descriptor","arg"]],{positional:[$("\u8AAD\u307F\u8FBC\u3093\u3060\u5024\u3092\u5165\u308C\u308B\u5909\u6570\u540D","variable to store the input")]}),cd:T("\u30AB\u30EC\u30F3\u30C8\u30C7\u30A3\u30EC\u30AF\u30C8\u30EA\u3092\u79FB\u52D5\u3059\u308B","Change the current directory",[["-P","\u30B7\u30F3\u30DC\u30EA\u30C3\u30AF\u30EA\u30F3\u30AF\u3092\u89E3\u6C7A\u3057\u305F\u7269\u7406\u30D1\u30B9\u306B\u79FB\u52D5","use the physical path (resolve symlinks)"],["-L","\u30B7\u30F3\u30DC\u30EA\u30C3\u30AF\u30EA\u30F3\u30AF\u3092\u305F\u3069\u308B\uFF08\u65E2\u5B9A\uFF09","follow symlinks (default)"]],{positional:[$("\u79FB\u52D5\u5148\u306E\u30C7\u30A3\u30EC\u30AF\u30C8\u30EA\uFF08`-` \u306F\u76F4\u524D\u306E\u30C7\u30A3\u30EC\u30AF\u30C8\u30EA\u3001\u7701\u7565\u6642\u306F $HOME\uFF09","target directory (`-` = previous, default $HOME)")]}),pwd:T("\u30AB\u30EC\u30F3\u30C8\u30C7\u30A3\u30EC\u30AF\u30C8\u30EA\u306E\u30D1\u30B9\u3092\u8868\u793A\u3059\u308B","Print the current directory",[["-P","\u30B7\u30F3\u30DC\u30EA\u30C3\u30AF\u30EA\u30F3\u30AF\u3092\u89E3\u6C7A\u3057\u305F\u7269\u7406\u30D1\u30B9\u3092\u8868\u793A","print the physical path"]]),exit:T("\u30B7\u30A7\u30EB\uFF08\u30B9\u30AF\u30EA\u30D7\u30C8\uFF09\u3092\u7D42\u4E86\u3059\u308B","Exit the shell or script",[],{positional:[$("\u7D42\u4E86\u30B9\u30C6\u30FC\u30BF\u30B9\uFF080 \u304C\u6210\u529F\u3001\u7701\u7565\u6642\u306F\u76F4\u524D\u306E\u30B3\u30DE\u30F3\u30C9\u306E\u30B9\u30C6\u30FC\u30BF\u30B9\uFF09","exit status (0 = success; default: status of last command)")]}),return:T("\u95A2\u6570\u304B\u3089\u623B\u308B","Return from a function",[],{positional:[$("\u623B\u308A\u5024\u3068\u306A\u308B\u7D42\u4E86\u30B9\u30C6\u30FC\u30BF\u30B9","exit status to return")]}),set:T("\u30B7\u30A7\u30EB\u30AA\u30D7\u30B7\u30E7\u30F3\u3084\u4F4D\u7F6E\u30D1\u30E9\u30E1\u30FC\u30BF\u3092\u8A2D\u5B9A\u3059\u308B","Set shell options or positional parameters",[["-e","\u30B3\u30DE\u30F3\u30C9\u304C\u5931\u6557\u3057\u305F\u3089\u5373\u5EA7\u306B\u30B9\u30AF\u30EA\u30D7\u30C8\u3092\u7D42\u4E86\u3059\u308B","exit immediately if a command fails"],["-u","\u672A\u5B9A\u7FA9\u306E\u5909\u6570\u3092\u53C2\u7167\u3057\u305F\u3089\u30A8\u30E9\u30FC\u306B\u3059\u308B","treat unset variables as an error"],["-x","\u5B9F\u884C\u3059\u308B\u30B3\u30DE\u30F3\u30C9\u3092\u5C55\u958B\u5F8C\u306E\u5F62\u3067\u8868\u793A\u3059\u308B\uFF08\u30C7\u30D0\u30C3\u30B0\u7528\uFF09","print each command after expansion (debugging)"],["-v","\u8AAD\u307F\u8FBC\u3093\u3060\u884C\u3092\u305D\u306E\u307E\u307E\u8868\u793A\u3059\u308B","print input lines as they are read"],["-o","\u540D\u524D\u3067\u30AA\u30D7\u30B7\u30E7\u30F3\u3092\u6709\u52B9\u306B\u3059\u308B","enable an option by name","arg",Pt],["-f","\u30B0\u30ED\u30D6\uFF08\u30EF\u30A4\u30EB\u30C9\u30AB\u30FC\u30C9\u5C55\u958B\uFF09\u3092\u7121\u52B9\u306B\u3059\u308B","disable globbing"],["-C","`>` \u3067\u65E2\u5B58\u30D5\u30A1\u30A4\u30EB\u3092\u4E0A\u66F8\u304D\u3057\u306A\u3044","do not overwrite files with `>`"],["-n","\u30B3\u30DE\u30F3\u30C9\u3092\u8AAD\u3080\u3060\u3051\u3067\u5B9F\u884C\u3057\u306A\u3044\uFF08\u69CB\u6587\u30C1\u30A7\u30C3\u30AF\uFF09","read commands but do not execute (syntax check)"],["-a","\u4EE5\u964D\u306B\u8A2D\u5B9A\u3057\u305F\u5909\u6570\u3092\u81EA\u52D5\u3067\u30A8\u30AF\u30B9\u30DD\u30FC\u30C8\u3059\u308B","export all subsequently set variables"],["--","\u4EE5\u964D\u306E\u5F15\u6570\u3092\u4F4D\u7F6E\u30D1\u30E9\u30E1\u30FC\u30BF $1, $2... \u306B\u8A2D\u5B9A\u3059\u308B","set the remaining arguments as $1, $2\u2026"]]),shopt:T("bash \u56FA\u6709\u306E\u30B7\u30A7\u30EB\u30AA\u30D7\u30B7\u30E7\u30F3\u3092\u8A2D\u5B9A\u30FB\u8868\u793A\u3059\u308B","Set or show bash-specific shell options",[["-s","\u30AA\u30D7\u30B7\u30E7\u30F3\u3092\u6709\u52B9\u306B\u3059\u308B","enable the options"],["-u","\u30AA\u30D7\u30B7\u30E7\u30F3\u3092\u7121\u52B9\u306B\u3059\u308B","disable the options"],["-q","\u4F55\u3082\u8868\u793A\u305B\u305A\u3001\u7D42\u4E86\u30B9\u30C6\u30FC\u30BF\u30B9\u3067\u72B6\u614B\u3092\u8FD4\u3059","quiet; report via exit status"]],{positional:[$("\u30AA\u30D7\u30B7\u30E7\u30F3\u540D\uFF08\u4F8B: nullglob, globstar, extglob\uFF09","option name (e.g. nullglob, globstar, extglob)")]}),print:T("\u5F15\u6570\u3092\u8868\u793A\u3059\u308B\uFF08ksh\u30FBmksh\u30FBzsh \u306E\u7D44\u307F\u8FBC\u307F\u3002bash \u306B\u306F\u306A\u3044\u3002`echo` \u3068\u9055\u3044\u30AA\u30D7\u30B7\u30E7\u30F3\u306E\u6271\u3044\u304C\u6C7A\u307E\u3063\u3066\u3044\u308B\uFF09","Print the arguments (a ksh, mksh and zsh builtin, not in bash; unlike `echo` its options are well defined)",[["-n","\u6700\u5F8C\u306B\u6539\u884C\u3092\u51FA\u3055\u306A\u3044","do not print a trailing newline"],["-r","`\\` \u306B\u3088\u308B\u30A8\u30B9\u30B1\u30FC\u30D7\u3092\u89E3\u91C8\u3057\u306A\u3044","do not interpret `\\` escapes"],["-R","`-r` \u306B\u52A0\u3048\u3066\u3001\u4EE5\u964D\u306E `-` \u3067\u59CB\u307E\u308B\u5F15\u6570\u3082\u30AA\u30D7\u30B7\u30E7\u30F3\u3068\u3057\u3066\u6271\u308F\u306A\u3044","like `-r`, and treat later `-` arguments as text"],["-u","\u6307\u5B9A\u3057\u305F\u30D5\u30A1\u30A4\u30EB\u8A18\u8FF0\u5B50\u306B\u66F8\u304D\u51FA\u3059\uFF08`-u2` \u3067\u6A19\u6E96\u30A8\u30E9\u30FC\u51FA\u529B\uFF09","write to the given file descriptor (`-u2` for stderr)","arg"],["-f","printf \u3068\u540C\u3058\u66F8\u5F0F\u3067\u8868\u793A\u3059\u308B\uFF08ksh93\uFF09","format like printf (ksh93)","arg"],["-s","\u30B3\u30DE\u30F3\u30C9\u5C65\u6B74\u306B\u8FFD\u52A0\u3059\u308B","append to the command history"],["-l","\u5F15\u6570\u30921\u884C\u305A\u3064\u8868\u793A\u3059\u308B\uFF08zsh\uFF09","print each argument on its own line (zsh)"]]),whence:T("\u30B3\u30DE\u30F3\u30C9\u540D\u304C\u3069\u3046\u89E3\u91C8\u3055\u308C\u308B\u304B\uFF08\u30D1\u30B9\u3084\u30A8\u30A4\u30EA\u30A2\u30B9\u306A\u3069\uFF09\u3092\u8868\u793A\u3059\u308B\uFF08ksh\u30FBmksh\u30FBzsh \u306E\u7D44\u307F\u8FBC\u307F\u3002bash \u306E `type`\u30FB`command -v` \u306B\u76F8\u5F53\uFF09","Show how a command name is interpreted (a ksh, mksh and zsh builtin; like bash's `type` / `command -v`)",[["-v","\u7A2E\u985E\uFF08\u7D44\u307F\u8FBC\u307F\u30FB\u95A2\u6570\u30FB\u30A8\u30A4\u30EA\u30A2\u30B9\u306A\u3069\uFF09\u3082\u8868\u793A\u3059\u308B","say what kind of command it is"],["-p","\u95A2\u6570\u3084\u30A8\u30A4\u30EA\u30A2\u30B9\u3092\u7121\u8996\u3057\u3066 PATH \u304B\u3089\u63A2\u3059","search PATH only, ignoring functions and aliases"],["-a","\u898B\u3064\u304B\u3063\u305F\u3082\u306E\u3092\u3059\u3079\u3066\u8868\u793A\u3059\u308B","show every match"]],{positional:[$("\u8ABF\u3079\u308B\u30B3\u30DE\u30F3\u30C9\u540D","command name to look up")]}),trap:T("\u30B7\u30B0\u30CA\u30EB\u3084\u7D42\u4E86\u6642\u306B\u5B9F\u884C\u3059\u308B\u30B3\u30DE\u30F3\u30C9\u3092\u767B\u9332\u3059\u308B","Run a command when a signal or event occurs",[["-l","\u30B7\u30B0\u30CA\u30EB\u540D\u306E\u4E00\u89A7\u3092\u8868\u793A","list signal names"],["-p","\u767B\u9332\u6E08\u307F\u306E trap \u3092\u8868\u793A","show registered traps"]],{positional:[$("\u5B9F\u884C\u3059\u308B\u30B3\u30DE\u30F3\u30C9\uFF08`-` \u3067\u30EA\u30BB\u30C3\u30C8\u3001\u7A7A\u6587\u5B57\u3067\u7121\u8996\uFF09","command to run (`-` resets, empty string ignores)"),$("\u5BFE\u8C61\u306E\u30B7\u30B0\u30CA\u30EB\uFF08EXIT, ERR, INT, TERM \u306A\u3069\uFF09","signal (EXIT, ERR, INT, TERM\u2026)")]}),source:T("\u30D5\u30A1\u30A4\u30EB\u3092\u8AAD\u307F\u8FBC\u307F\u3001\u73FE\u5728\u306E\u30B7\u30A7\u30EB\u3067\u5B9F\u884C\u3059\u308B\uFF08\u5909\u6570\u3084\u95A2\u6570\u304C\u73FE\u5728\u306E\u30B7\u30A7\u30EB\u306B\u6B8B\u308B\uFF09","Run a file in the current shell (its variables and functions persist)",[],{positional:[$("\u8AAD\u307F\u8FBC\u3080\u30D5\u30A1\u30A4\u30EB","file to source"),$("\u305D\u306E\u30D5\u30A1\u30A4\u30EB\u306B\u6E21\u3059\u5F15\u6570","arguments passed to it")]}),".":T("\u30D5\u30A1\u30A4\u30EB\u3092\u8AAD\u307F\u8FBC\u307F\u3001\u73FE\u5728\u306E\u30B7\u30A7\u30EB\u3067\u5B9F\u884C\u3059\u308B\uFF08`source` \u3068\u540C\u3058\uFF09","Run a file in the current shell (same as `source`)",[],{positional:[$("\u8AAD\u307F\u8FBC\u3080\u30D5\u30A1\u30A4\u30EB","file to source")]}),eval:T("\u5F15\u6570\u3092\u9023\u7D50\u3057\u3066\u6587\u5B57\u5217\u3092\u30B3\u30DE\u30F3\u30C9\u3068\u3057\u3066\u518D\u89E3\u91C8\u30FB\u5B9F\u884C\u3059\u308B\uFF08\u6CE8\u5165\u306B\u6CE8\u610F\uFF09","Concatenate arguments and execute the result as a command (beware of injection)"),exec:T("\u73FE\u5728\u306E\u30B7\u30A7\u30EB\u3092\u6307\u5B9A\u3057\u305F\u30B3\u30DE\u30F3\u30C9\u3067\u7F6E\u304D\u63DB\u3048\u308B\u3002\u5F15\u6570\u306A\u3057\u306A\u3089\u30EA\u30C0\u30A4\u30EC\u30AF\u30C8\u3092\u30B7\u30A7\u30EB\u81EA\u4F53\u306B\u9069\u7528","Replace the shell with the command; without a command, apply redirections to the shell itself",[],{wraps:!0}),shift:T("\u4F4D\u7F6E\u30D1\u30E9\u30E1\u30FC\u30BF\u3092\u5DE6\u306B\u305A\u3089\u3059\uFF08$2 \u304C $1 \u306B\u306A\u308B\uFF09","Shift positional parameters left ($2 becomes $1)",[],{positional:[$("\u305A\u3089\u3059\u6570\uFF08\u7701\u7565\u6642\u306F 1\uFF09","how many (default 1)")]}),getopts:T("\u30B9\u30AF\u30EA\u30D7\u30C8\u306E\u30AA\u30D7\u30B7\u30E7\u30F3\u5F15\u6570\u30921\u3064\u305A\u3064\u89E3\u6790\u3059\u308B\uFF08`while getopts \u2026 ; do case \u2026 esac; done` \u306E\u5F62\u3067\u4F7F\u3044\u3001\u6B21\u306B\u8AAD\u3080\u4F4D\u7F6E\u306F $OPTIND\uFF09","Parse script options one at a time (used as `while getopts \u2026; do case \u2026 esac; done`; $OPTIND tracks the position)",[],{positional:[$("\u53D7\u3051\u4ED8\u3051\u308B\u30AA\u30D7\u30B7\u30E7\u30F3\u6587\u5B57\uFF08`:` \u4ED8\u304D\u306F\u5F15\u6570\u3092\u53D6\u308B\uFF09","option letters (`:` means takes an argument)"),$("\u898B\u3064\u3051\u305F\u30AA\u30D7\u30B7\u30E7\u30F3\u306E\u6587\u5B57\u3092\u5165\u308C\u308B\u5909\u6570\u540D","variable that receives the option letter")],positionalLang:["getopts"]}),wait:T("\u30D0\u30C3\u30AF\u30B0\u30E9\u30A6\u30F3\u30C9\u30B8\u30E7\u30D6\u306E\u7D42\u4E86\u3092\u5F85\u3064","Wait for background jobs to finish",[["-n","\u3069\u308C\u304B1\u3064\u306E\u7D42\u4E86\u3092\u5F85\u3064","wait for any single job"]],{positional:[$("\u5F85\u3064\u30D7\u30ED\u30BB\u30B9ID\uFF08\u7701\u7565\u6642\u306F\u5168\u3066\uFF09","PID to wait for (default: all)")]}),kill:T("\u30D7\u30ED\u30BB\u30B9\u306B\u30B7\u30B0\u30CA\u30EB\u3092\u9001\u308B\uFF08\u65E2\u5B9A\u306F TERM \u3067\u7D42\u4E86\u8981\u6C42\uFF09","Send a signal to a process (default TERM)",[["-9|-KILL","\u5F37\u5236\u7D42\u4E86\uFF08KILL \u30B7\u30B0\u30CA\u30EB\uFF09","force kill (SIGKILL)"],["-s","\u9001\u308B\u30B7\u30B0\u30CA\u30EB\u540D","signal name to send","arg"],["-l","\u30B7\u30B0\u30CA\u30EB\u4E00\u89A7\u3092\u8868\u793A","list signals"],["-0","\u30D7\u30ED\u30BB\u30B9\u304C\u5B58\u5728\u3059\u308B\u304B\u78BA\u8A8D\u3059\u308B\u3060\u3051","only check whether the process exists"]],{positional:[$("\u5BFE\u8C61\u306E\u30D7\u30ED\u30BB\u30B9ID","target PID")]}),test:T("\u6761\u4EF6\u5F0F\u3092\u8A55\u4FA1\u3057\u3001\u771F\u306A\u3089 0\u3001\u507D\u306A\u3089 1 \u3092\u8FD4\u3059","Evaluate a conditional expression; exit 0 if true"),true:T("\u4F55\u3082\u305B\u305A\u6210\u529F\uFF08\u7D42\u4E86\u30B9\u30C6\u30FC\u30BF\u30B9 0\uFF09\u3092\u8FD4\u3059","Do nothing and succeed (exit 0)"),false:T("\u4F55\u3082\u305B\u305A\u5931\u6557\uFF08\u7D42\u4E86\u30B9\u30C6\u30FC\u30BF\u30B9 1\uFF09\u3092\u8FD4\u3059","Do nothing and fail (exit 1)"),":":T("\u4F55\u3082\u3057\u306A\u3044\u30B3\u30DE\u30F3\u30C9\uFF08\u5E38\u306B\u6210\u529F\uFF09\u3002\u7121\u9650\u30EB\u30FC\u30D7 `while :` \u3084\u5F15\u6570\u306E\u5C55\u958B\u3060\u3051\u3057\u305F\u3044\u6642\u306B\u4F7F\u3046","No-op that always succeeds; used in `while :` or to evaluate expansions"),alias:T("\u30B3\u30DE\u30F3\u30C9\u306E\u5225\u540D\u3092\u5B9A\u7FA9\u3059\u308B","Define a command alias"),unalias:T("\u5225\u540D\u3092\u524A\u9664\u3059\u308B","Remove an alias"),type:T("\u30B3\u30DE\u30F3\u30C9\u306E\u7A2E\u985E\uFF08\u30D3\u30EB\u30C8\u30A4\u30F3\u30FB\u95A2\u6570\u30FB\u5916\u90E8\u30B3\u30DE\u30F3\u30C9\u306A\u3069\uFF09\u3092\u8868\u793A\u3059\u308B","Show how a name would be interpreted (builtin, function, file\u2026)",[["-t","\u7A2E\u985E\u3060\u3051\u30921\u8A9E\u3067\u8868\u793A","print only the kind"],["-a","\u8A72\u5F53\u3059\u308B\u5168\u3066\u306E\u5019\u88DC\u3092\u8868\u793A","show all matches"],["-P","\u5916\u90E8\u30B3\u30DE\u30F3\u30C9\u306E\u30D1\u30B9\u3092\u8868\u793A","print the path of the executable"]]),command:T("\u95A2\u6570\u3084\u5225\u540D\u3092\u7121\u8996\u3057\u3066\u30B3\u30DE\u30F3\u30C9\u3092\u5B9F\u884C\u3059\u308B\u3002`-v` \u3067\u5B58\u5728\u78BA\u8A8D\u306B\u3088\u304F\u4F7F\u3046","Run a command ignoring functions/aliases; `-v` is often used to check existence",[["-v","\u30B3\u30DE\u30F3\u30C9\u306E\u30D1\u30B9\u307E\u305F\u306F\u540D\u524D\u3092\u8868\u793A\uFF08\u5B58\u5728\u78BA\u8A8D\u306B\u4F7F\u3046\uFF09","print the command path or name (existence check)"],["-V","\u30B3\u30DE\u30F3\u30C9\u306E\u8A73\u3057\u3044\u8AAC\u660E\u3092\u8868\u793A","print a verbose description"],["-p","\u6A19\u6E96\u306E PATH \u3067\u691C\u7D22\u3059\u308B","use a default PATH"]],{wraps:!0}),builtin:T("\u540C\u540D\u306E\u95A2\u6570\u304C\u3042\u3063\u3066\u3082\u30B7\u30A7\u30EB\u306E\u30D3\u30EB\u30C8\u30A4\u30F3\u3092\u5B9F\u884C\u3059\u308B","Run the shell builtin even if a function has the same name",[],{wraps:!0}),hash:T("\u30B3\u30DE\u30F3\u30C9\u306E\u30D1\u30B9\u306E\u30AD\u30E3\u30C3\u30B7\u30E5\u3092\u64CD\u4F5C\u3059\u308B","Manage the command path cache"),jobs:T("\u73FE\u5728\u306E\u30B8\u30E7\u30D6\u4E00\u89A7\u3092\u8868\u793A\u3059\u308B","List current jobs"),fg:T("\u30B8\u30E7\u30D6\u3092\u30D5\u30A9\u30A2\u30B0\u30E9\u30A6\u30F3\u30C9\u306B\u623B\u3059","Bring a job to the foreground"),bg:T("\u505C\u6B62\u4E2D\u306E\u30B8\u30E7\u30D6\u3092\u30D0\u30C3\u30AF\u30B0\u30E9\u30A6\u30F3\u30C9\u3067\u518D\u958B\u3059\u308B","Resume a stopped job in the background"),disown:T("\u30B8\u30E7\u30D6\u3092\u30B7\u30A7\u30EB\u306E\u7BA1\u7406\u304B\u3089\u5916\u3059\uFF08\u30B7\u30A7\u30EB\u7D42\u4E86\u6642\u306B\u7D42\u4E86\u3055\u305B\u306A\u3044\uFF09","Remove jobs from the job table (they survive shell exit)"),umask:T("\u65B0\u898F\u30D5\u30A1\u30A4\u30EB\u306E\u30D1\u30FC\u30DF\u30C3\u30B7\u30E7\u30F3\u30DE\u30B9\u30AF\uFF08\u4F5C\u6210\u6642\u306B\u5916\u3059\u6A29\u9650\uFF09\u3092\u8A2D\u5B9A\u30FB\u8868\u793A\u3059\u308B","Set or show the file creation mask (permissions removed from new files)",[["-S","\u8A18\u53F7\u5F62\u5F0F\uFF08u=rwx,g=rx,o=rx \u306A\u3069\uFF09\u3067\u8868\u793A\u3059\u308B","show in symbolic form (u=rwx,g=rx,\u2026)"],["-p","\u518D\u5165\u529B\u3067\u304D\u308B\u5F62\u3067\u8868\u793A\u3059\u308B","output in a reusable form"]],{positional:[$("\u30DE\u30B9\u30AF\u5024\uFF08\u4F8B: `022`\uFF09","mask (e.g. `022`)")],positionalLang:["umask"]}),ulimit:T("\u30D7\u30ED\u30BB\u30B9\u306E\u30EA\u30BD\u30FC\u30B9\u4E0A\u9650\u3092\u8A2D\u5B9A\u30FB\u8868\u793A\u3059\u308B","Set or show resource limits",[["-n","\u30AA\u30FC\u30D7\u30F3\u3067\u304D\u308B\u30D5\u30A1\u30A4\u30EB\u6570","max open files"],["-c","\u30B3\u30A2\u30C0\u30F3\u30D7\u306E\u30B5\u30A4\u30BA","core dump size"],["-a","\u5168\u3066\u306E\u4E0A\u9650\u3092\u8868\u793A","show all limits"]]),mapfile:T("\u6A19\u6E96\u5165\u529B\u306E\u5404\u884C\u3092\u914D\u5217\u306B\u8AAD\u307F\u8FBC\u3080","Read lines from stdin into an array",[["-t","\u5404\u884C\u672B\u306E\u6539\u884C\u3092\u53D6\u308A\u9664\u304F","strip trailing newlines"],["-n","\u8AAD\u3080\u884C\u6570\u306E\u4E0A\u9650","max lines to read","arg"],["-d","\u884C\u533A\u5207\u308A\u6587\u5B57","line delimiter","arg"]],{positional:[$("\u683C\u7D0D\u3059\u308B\u914D\u5217\u540D\uFF08\u7701\u7565\u6642\u306F MAPFILE\uFF09","array name (default MAPFILE)")]}),readarray:T("\u6A19\u6E96\u5165\u529B\u306E\u5404\u884C\u3092\u914D\u5217\u306B\u8AAD\u307F\u8FBC\u3080\uFF08mapfile \u3068\u540C\u3058\uFF09","Read lines from stdin into an array (same as mapfile)",[["-t","\u5404\u884C\u672B\u306E\u6539\u884C\u3092\u53D6\u308A\u9664\u304F","strip trailing newlines"]],{positional:[$("\u683C\u7D0D\u3059\u308B\u914D\u5217\u540D","array name")]}),let:T("\u7B97\u8853\u5F0F\u3092\u8A55\u4FA1\u3059\u308B\uFF08\u4F8B: `let i++`\uFF09","Evaluate arithmetic expressions (e.g. `let i++`)"),pushd:T("\u30C7\u30A3\u30EC\u30AF\u30C8\u30EA\u30B9\u30BF\u30C3\u30AF\u306B\u7A4D\u3093\u3067\u79FB\u52D5\u3059\u308B","Push a directory onto the stack and cd to it"),popd:T("\u30C7\u30A3\u30EC\u30AF\u30C8\u30EA\u30B9\u30BF\u30C3\u30AF\u304B\u3089\u53D6\u308A\u51FA\u3057\u3066\u305D\u3053\u3078\u623B\u308B","Pop the directory stack and cd to it"),dirs:T("\u30C7\u30A3\u30EC\u30AF\u30C8\u30EA\u30B9\u30BF\u30C3\u30AF\u3092\u8868\u793A\u3059\u308B","Show the directory stack"),break:T("\u30EB\u30FC\u30D7\u3092\u629C\u3051\u308B","Exit from a loop",[],{positional:[$("\u629C\u3051\u308B\u30EB\u30FC\u30D7\u306E\u6BB5\u6570","number of loop levels")]}),continue:T("\u30EB\u30FC\u30D7\u306E\u6B21\u306E\u7E70\u308A\u8FD4\u3057\u306B\u9032\u3080","Skip to the next loop iteration",[],{positional:[$("\u5BFE\u8C61\u306E\u30EB\u30FC\u30D7\u306E\u6BB5\u6570","number of loop levels")]}),unset:T("\u5909\u6570\u3084\u95A2\u6570\u3092\u524A\u9664\u3059\u308B","Unset variables or functions",[["-v","\u5909\u6570\u3092\u524A\u9664","unset variables"],["-f","\u95A2\u6570\u3092\u524A\u9664","unset functions"]],{positional:[$("\u524A\u9664\u3059\u308B\u540D\u524D","name to unset")]}),enable:T("\u30D3\u30EB\u30C8\u30A4\u30F3\u3092\u6709\u52B9\u30FB\u7121\u52B9\u306B\u3059\u308B","Enable or disable builtins"),help:T("\u30D3\u30EB\u30C8\u30A4\u30F3\u306E\u30D8\u30EB\u30D7\u3092\u8868\u793A\u3059\u308B","Show help for builtins"),history:T("\u30B3\u30DE\u30F3\u30C9\u5C65\u6B74\u3092\u8868\u793A\u30FB\u64CD\u4F5C\u3059\u308B","Show or manipulate command history"),complete:T("\u30B3\u30DE\u30F3\u30C9\u306E\u88DC\u5B8C\u65B9\u6CD5\u3092\u5B9A\u7FA9\u3059\u308B","Define programmable completion"),times:T("\u30B7\u30A7\u30EB\u3068\u5B50\u30D7\u30ED\u30BB\u30B9\u306E\u7D2F\u7A4DCPU\u6642\u9593\u3092\u8868\u793A\u3059\u308B","Print accumulated CPU times"),caller:T("\u547C\u3073\u51FA\u3057\u5143\u306E\u884C\u756A\u53F7\u30FB\u95A2\u6570\u540D\u3092\u8868\u793A\u3059\u308B\uFF08\u30C7\u30D0\u30C3\u30B0\u7528\uFF09","Print the caller context (debugging)")};var ke=$("\u5BFE\u8C61\u306E\u30D5\u30A1\u30A4\u30EB","target file"),Xe={ls:y("\u30C7\u30A3\u30EC\u30AF\u30C8\u30EA\u306E\u4E2D\u8EAB\uFF08\u30D5\u30A1\u30A4\u30EB\u4E00\u89A7\uFF09\u3092\u8868\u793A\u3059\u308B","List directory contents",[["-l","\u8A73\u7D30\u5F62\u5F0F\uFF08\u6A29\u9650\u30FB\u6240\u6709\u8005\u30FB\u30B5\u30A4\u30BA\u30FB\u66F4\u65B0\u65E5\u6642\uFF09\u3067\u8868\u793A","long format (permissions, owner, size, mtime)"],["-a|--all","`.` \u3067\u59CB\u307E\u308B\u96A0\u3057\u30D5\u30A1\u30A4\u30EB\u3082\u8868\u793A","include hidden files starting with `.`"],["-A|--almost-all","`.` \u3068 `..` \u4EE5\u5916\u306E\u96A0\u3057\u30D5\u30A1\u30A4\u30EB\u3082\u8868\u793A","include hidden files except `.` and `..`"],["-h|--human-readable","\u30B5\u30A4\u30BA\u3092 K, M, G \u306A\u3069\u8AAD\u307F\u3084\u3059\u3044\u5358\u4F4D\u3067\u8868\u793A","human-readable sizes (K, M, G)"],["-t","\u66F4\u65B0\u65E5\u6642\u306E\u65B0\u3057\u3044\u9806\u306B\u4E26\u3079\u308B","sort by modification time, newest first"],["-r|--reverse","\u4E26\u3073\u9806\u3092\u9006\u306B\u3059\u308B","reverse the sort order"],["-S","\u30B5\u30A4\u30BA\u306E\u5927\u304D\u3044\u9806\u306B\u4E26\u3079\u308B","sort by size, largest first"],["-R|--recursive","\u30B5\u30D6\u30C7\u30A3\u30EC\u30AF\u30C8\u30EA\u3082\u518D\u5E30\u7684\u306B\u8868\u793A","list subdirectories recursively"],["-1","1\u884C\u306B1\u30D5\u30A1\u30A4\u30EB\u305A\u3064\u8868\u793A","one entry per line"],["-d|--directory","\u30C7\u30A3\u30EC\u30AF\u30C8\u30EA\u306E\u4E2D\u8EAB\u3067\u306F\u306A\u304F\u30C7\u30A3\u30EC\u30AF\u30C8\u30EA\u81EA\u4F53\u3092\u8868\u793A","list directories themselves, not their contents"],["-F|--classify","\u7A2E\u985E\u3092\u793A\u3059\u8A18\u53F7\uFF08`/` \u30C7\u30A3\u30EC\u30AF\u30C8\u30EA, `*` \u5B9F\u884C\u53EF\u80FD \u306A\u3069\uFF09\u3092\u4ED8\u3051\u308B","append type indicators (`/`, `*`\u2026)"],["--color","\u8272\u4ED8\u304D\u3067\u8868\u793A","colorize output"]],{positional:[$("\u8868\u793A\u3059\u308B\u30D5\u30A1\u30A4\u30EB\u307E\u305F\u306F\u30C7\u30A3\u30EC\u30AF\u30C8\u30EA\uFF08\u7701\u7565\u6642\u306F\u30AB\u30EC\u30F3\u30C8\uFF09","file or directory (default: current)")]}),cat:y("\u30D5\u30A1\u30A4\u30EB\u306E\u5185\u5BB9\u3092\u9023\u7D50\u3057\u3066\u6A19\u6E96\u51FA\u529B\u306B\u51FA\u3059","Concatenate files and print to stdout",[["-n|--number","\u884C\u756A\u53F7\u3092\u4ED8\u3051\u308B","number all lines"],["-A|--show-all","\u6539\u884C\u3084\u30BF\u30D6\u306A\u3069\u306E\u5236\u5FA1\u6587\u5B57\u3092\u53EF\u8996\u5316","show non-printing characters"],["-s|--squeeze-blank","\u9023\u7D9A\u3059\u308B\u7A7A\u884C\u30921\u884C\u306B\u307E\u3068\u3081\u308B","squeeze repeated blank lines"]],{positional:[$("\u51FA\u529B\u3059\u308B\u30D5\u30A1\u30A4\u30EB\uFF08`-` \u307E\u305F\u306F\u7701\u7565\u3067\u6A19\u6E96\u5165\u529B\uFF09","file to print (`-` or none = stdin)")]}),grep:y("\u30D1\u30BF\u30FC\u30F3\uFF08\u6B63\u898F\u8868\u73FE\uFF09\u306B\u4E00\u81F4\u3059\u308B\u884C\u3092\u691C\u7D22\u3057\u3066\u8868\u793A\u3059\u308B","Print lines matching a pattern (regex)",[["-i|--ignore-case","\u5927\u6587\u5B57\u30FB\u5C0F\u6587\u5B57\u3092\u533A\u5225\u3057\u306A\u3044","ignore case"],["-v|--invert-match","\u4E00\u81F4\u3057\u306A\u3044\u884C\u3092\u8868\u793A\u3059\u308B","select non-matching lines"],["-r|--recursive","\u30C7\u30A3\u30EC\u30AF\u30C8\u30EA\u5185\u3092\u518D\u5E30\u7684\u306B\u691C\u7D22","search directories recursively"],["-R|--dereference-recursive","\u30B7\u30F3\u30DC\u30EA\u30C3\u30AF\u30EA\u30F3\u30AF\u3082\u305F\u3069\u3063\u3066\u518D\u5E30\u7684\u306B\u691C\u7D22","recursive, following symlinks"],["-n|--line-number","\u884C\u756A\u53F7\u3092\u8868\u793A","show line numbers"],["-l|--files-with-matches","\u4E00\u81F4\u3057\u305F\u30D5\u30A1\u30A4\u30EB\u540D\u3060\u3051\u3092\u8868\u793A","print only names of matching files"],["-L|--files-without-match","\u4E00\u81F4\u3057\u306A\u304B\u3063\u305F\u30D5\u30A1\u30A4\u30EB\u540D\u3060\u3051\u3092\u8868\u793A","print names of files without matches"],["-c|--count","\u4E00\u81F4\u3057\u305F\u884C\u6570\u3092\u8868\u793A","print a count of matching lines"],["-o|--only-matching","\u884C\u5168\u4F53\u3067\u306F\u306A\u304F\u4E00\u81F4\u3057\u305F\u90E8\u5206\u3060\u3051\u3092\u8868\u793A","print only the matched parts"],["-q|--quiet|--silent","\u4F55\u3082\u51FA\u529B\u305B\u305A\u3001\u7D42\u4E86\u30B9\u30C6\u30FC\u30BF\u30B9\u3060\u3051\u3067\u7D50\u679C\u3092\u8FD4\u3059\uFF08\u6761\u4EF6\u5224\u5B9A\u7528\uFF09","print nothing; report via exit status"],["-s|--no-messages","\u30D5\u30A1\u30A4\u30EB\u304C\u8AAD\u3081\u306A\u3044\u7B49\u306E\u30A8\u30E9\u30FC\u3092\u8868\u793A\u3057\u306A\u3044","suppress error messages"],["-E|--extended-regexp","\u62E1\u5F35\u6B63\u898F\u8868\u73FE(ERE)\u3092\u4F7F\u3046\uFF08`+ ? | ()` \u304C\u305D\u306E\u307E\u307E\u4F7F\u3048\u308B\uFF09","use extended regex (ERE)"],["-F|--fixed-strings","\u30D1\u30BF\u30FC\u30F3\u3092\u6B63\u898F\u8868\u73FE\u3067\u306F\u306A\u304F\u56FA\u5B9A\u6587\u5B57\u5217\u3068\u3057\u3066\u6271\u3046","treat the pattern as a fixed string"],["-P|--perl-regexp","Perl \u4E92\u63DB\u6B63\u898F\u8868\u73FE(PCRE)\u3092\u4F7F\u3046","use Perl-compatible regex"],["-w|--word-regexp","\u5358\u8A9E\u5168\u4F53\u3068\u3057\u3066\u4E00\u81F4\u3059\u308B\u5834\u5408\u306E\u307F","match whole words only"],["-x|--line-regexp","\u884C\u5168\u4F53\u304C\u4E00\u81F4\u3059\u308B\u5834\u5408\u306E\u307F","match whole lines only"],["-e|--regexp","\u691C\u7D22\u30D1\u30BF\u30FC\u30F3\u3092\u6307\u5B9A\uFF08`-` \u3067\u59CB\u307E\u308B\u30D1\u30BF\u30FC\u30F3\u3084\u8907\u6570\u6307\u5B9A\u306B\u4F7F\u3046\uFF09","specify a pattern (useful for several or `-`-prefixed ones)","arg fills lang:regex"],["-f|--file","\u30D1\u30BF\u30FC\u30F3\u3092\u30D5\u30A1\u30A4\u30EB\u304B\u3089\u8AAD\u3080","read patterns from a file","arg fills"],["-A|--after-context","\u4E00\u81F4\u884C\u306E\u5F8C\u308D N \u884C\u3082\u8868\u793A","print N lines after each match","arg"],["-B|--before-context","\u4E00\u81F4\u884C\u306E\u524D N \u884C\u3082\u8868\u793A","print N lines before each match","arg"],["-C|--context","\u4E00\u81F4\u884C\u306E\u524D\u5F8C N \u884C\u3082\u8868\u793A","print N lines of context","arg"],["-m|--max-count","N \u4EF6\u4E00\u81F4\u3057\u305F\u3089\u691C\u7D22\u3092\u3084\u3081\u308B","stop after N matches","arg"],["-h|--no-filename","\u30D5\u30A1\u30A4\u30EB\u540D\u3092\u8868\u793A\u3057\u306A\u3044","suppress file names"],["-H|--with-filename","\u30D5\u30A1\u30A4\u30EB\u540D\u3092\u8868\u793A\u3059\u308B","print file names"],["--include","\u691C\u7D22\u5BFE\u8C61\u3092\u3053\u306E\u30B0\u30ED\u30D6\u306B\u4E00\u81F4\u3059\u308B\u30D5\u30A1\u30A4\u30EB\u306B\u9650\u5B9A","only search files matching the glob","arg"],["--exclude","\u3053\u306E\u30B0\u30ED\u30D6\u306B\u4E00\u81F4\u3059\u308B\u30D5\u30A1\u30A4\u30EB\u3092\u9664\u5916","skip files matching the glob","arg"],["--exclude-dir","\u3053\u306E\u30C7\u30A3\u30EC\u30AF\u30C8\u30EA\u3092\u9664\u5916","skip this directory","arg"],["--color","\u4E00\u81F4\u90E8\u5206\u3092\u8272\u4ED8\u3051\u3059\u308B","highlight matches"]],{positional:[$("\u691C\u7D22\u30D1\u30BF\u30FC\u30F3\uFF08\u6B63\u898F\u8868\u73FE\uFF09","search pattern (regex)"),$("\u691C\u7D22\u5BFE\u8C61\u306E\u30D5\u30A1\u30A4\u30EB\uFF08\u7701\u7565\u6642\u306F\u6A19\u6E96\u5165\u529B\uFF09","file to search (default: stdin)")],positionalLang:["regex"]}),sed:y("\u30B9\u30C8\u30EA\u30FC\u30E0\u30A8\u30C7\u30A3\u30BF: \u5165\u529B\u30921\u884C\u305A\u3064\u30B9\u30AF\u30EA\u30D7\u30C8\u3067\u7DE8\u96C6\u3057\u3066\u51FA\u529B\u3059\u308B\uFF08\u7F6E\u63DB\u306F `s/\u524D/\u5F8C/g`\uFF09","Stream editor: edit input line by line (substitute with `s/old/new/g`)",[["-i|--in-place","\u30D5\u30A1\u30A4\u30EB\u3092\u76F4\u63A5\u66F8\u304D\u63DB\u3048\u308B\uFF08`-i.bak` \u3067\u30D0\u30C3\u30AF\u30A2\u30C3\u30D7\u4F5C\u6210\uFF09","edit files in place (`-i.bak` keeps a backup)"],["-n|--quiet|--silent","\u81EA\u52D5\u51FA\u529B\u3092\u6291\u6B62\u3057\u3001`p` \u30B3\u30DE\u30F3\u30C9\u3067\u6307\u5B9A\u3057\u305F\u884C\u3060\u3051\u51FA\u529B","suppress automatic printing; print only with `p`"],["-e|--expression","\u5B9F\u884C\u3059\u308B\u30B9\u30AF\u30EA\u30D7\u30C8\u3092\u6307\u5B9A\uFF08\u8907\u6570\u6307\u5B9A\u53EF\uFF09","add a script to run","arg fills lang:sed"],["-f|--file","\u30B9\u30AF\u30EA\u30D7\u30C8\u3092\u30D5\u30A1\u30A4\u30EB\u304B\u3089\u8AAD\u3080","read the script from a file","arg fills"],["-E|-r|--regexp-extended","\u62E1\u5F35\u6B63\u898F\u8868\u73FE(ERE)\u3092\u4F7F\u3046","use extended regex (ERE)"],["-s|--separate","\u8907\u6570\u30D5\u30A1\u30A4\u30EB\u3092\u5225\u3005\u306B\u6271\u3046","treat files separately"],["-z|--null-data","\u884C\u533A\u5207\u308A\u3092 NUL \u6587\u5B57\u306B\u3059\u308B","lines are separated by NUL"]],{positional:[$("sed \u30B9\u30AF\u30EA\u30D7\u30C8\uFF08\u4F8B: `s/foo/bar/g` \u306F foo \u3092 bar \u306B\u5168\u7F6E\u63DB\uFF09","sed script (e.g. `s/foo/bar/g` replaces all foo with bar)"),ke],positionalLang:["sed"]}),awk:y("\u30C6\u30AD\u30B9\u30C8\u3092\u884C\u30FB\u30D5\u30A3\u30FC\u30EB\u30C9\u5358\u4F4D\u3067\u51E6\u7406\u3059\u308B\u30D7\u30ED\u30B0\u30E9\u30DF\u30F3\u30B0\u8A00\u8A9E\uFF08`$1` \u306F1\u5217\u76EE\uFF09","Pattern-scanning language that processes lines and fields (`$1` = first field)",[["-F","\u30D5\u30A3\u30FC\u30EB\u30C9\u533A\u5207\u308A\u6587\u5B57\u3092\u6307\u5B9A\uFF08\u65E2\u5B9A\u306F\u7A7A\u767D\uFF09","field separator (default: whitespace)","arg"],["-v","awk \u306E\u5909\u6570\u3092\u8A2D\u5B9A\uFF08`-v name=value`\uFF09","set an awk variable (`-v name=value`)","arg"],["-f","\u30D7\u30ED\u30B0\u30E9\u30E0\u3092\u30D5\u30A1\u30A4\u30EB\u304B\u3089\u8AAD\u3080","read the program from a file","arg fills"]],{positional:[$("awk \u30D7\u30ED\u30B0\u30E9\u30E0\uFF08`\u30D1\u30BF\u30FC\u30F3 { \u30A2\u30AF\u30B7\u30E7\u30F3 }`\uFF09","awk program (`pattern { action }`)"),ke],positionalLang:["awk"]}),find:y("\u6761\u4EF6\u306B\u4E00\u81F4\u3059\u308B\u30D5\u30A1\u30A4\u30EB\u3092\u30C7\u30A3\u30EC\u30AF\u30C8\u30EA\u968E\u5C64\u304B\u3089\u63A2\u3059","Search a directory tree for files matching conditions",[["-name","\u30D5\u30A1\u30A4\u30EB\u540D\u304C\u30B0\u30ED\u30D6\u30D1\u30BF\u30FC\u30F3\u306B\u4E00\u81F4\u3059\u308B","file name matches the glob","arg lang:glob"],["-iname","\u30D5\u30A1\u30A4\u30EB\u540D\u304C\u4E00\u81F4\u3059\u308B\uFF08\u5927\u6587\u5B57\u30FB\u5C0F\u6587\u5B57\u3092\u533A\u5225\u3057\u306A\u3044\uFF09","name matches, case-insensitive","arg lang:glob"],["-path|-wholename","\u30D1\u30B9\u5168\u4F53\u304C\u30D1\u30BF\u30FC\u30F3\u306B\u4E00\u81F4\u3059\u308B","whole path matches the pattern","arg lang:glob"],["-ipath","\u30D1\u30B9\u5168\u4F53\u304C\u30D1\u30BF\u30FC\u30F3\u306B\u4E00\u81F4\u3059\u308B\uFF08\u5927\u6587\u5B57\u30FB\u5C0F\u6587\u5B57\u3092\u533A\u5225\u3057\u306A\u3044\uFF09","whole path matches, case-insensitive","arg lang:glob"],["-regextype","-regex \u3067\u4F7F\u3046\u6B63\u898F\u8868\u73FE\u306E\u7A2E\u985E","regex dialect for -regex","arg"],["-atime","\u30A2\u30AF\u30BB\u30B9\u65E5\u6642\u3067\u7D5E\u308B\uFF08\u65E5\u5358\u4F4D\uFF09","accessed N days ago","arg"],["-amin","\u30A2\u30AF\u30BB\u30B9\u65E5\u6642\u3067\u7D5E\u308B\uFF08\u5206\u5358\u4F4D\uFF09","accessed N minutes ago","arg"],["-ctime","\u72B6\u614B\u5909\u66F4\u65E5\u6642\u3067\u7D5E\u308B\uFF08\u65E5\u5358\u4F4D\uFF09","status changed N days ago","arg"],["-cmin","\u72B6\u614B\u5909\u66F4\u65E5\u6642\u3067\u7D5E\u308B\uFF08\u5206\u5358\u4F4D\uFF09","status changed N minutes ago","arg"],["-group","\u30B0\u30EB\u30FC\u30D7\u3067\u7D5E\u308B","group","arg"],["-readable","\u8AAD\u307F\u53D6\u308A\u53EF\u80FD","readable"],["-writable","\u66F8\u304D\u8FBC\u307F\u53EF\u80FD","writable"],["-executable","\u5B9F\u884C\u53EF\u80FD","executable"],["-ls","\u8A73\u7D30\u3092 ls -l \u5F62\u5F0F\u3067\u8868\u793A","list in ls -l format"],["-printf","\u66F8\u5F0F\u3092\u6307\u5B9A\u3057\u3066\u8868\u793A\uFF08%p \u30D1\u30B9, %s \u30B5\u30A4\u30BA \u306A\u3069\uFF09","print with a format (%p path, %s size\u2026)","arg"],["-fprint","\u30D1\u30B9\u3092\u30D5\u30A1\u30A4\u30EB\u306B\u66F8\u304D\u51FA\u3059","print the path to a file","arg"],["-quit","\u6700\u521D\u306B\u898B\u3064\u304B\u3063\u305F\u6642\u70B9\u3067\u7D42\u4E86\u3059\u308B","stop at the first match"],["-true","\u5E38\u306B\u771F","always true"],["-false","\u5E38\u306B\u507D","always false"],["-xdev|-mount","\u4ED6\u306E\u30D5\u30A1\u30A4\u30EB\u30B7\u30B9\u30C6\u30E0\u306B\u306F\u5165\u3089\u306A\u3044","stay on one file system"],["-okdir","\u78BA\u8A8D\u3057\u3066\u304B\u3089\u30D5\u30A1\u30A4\u30EB\u306E\u3042\u308B\u30C7\u30A3\u30EC\u30AF\u30C8\u30EA\u3067\u30B3\u30DE\u30F3\u30C9\u3092\u5B9F\u884C","like -execdir, but ask first","until"],["-H","\u30B3\u30DE\u30F3\u30C9\u30E9\u30A4\u30F3\u3067\u6307\u5B9A\u3057\u305F\u30B7\u30F3\u30DC\u30EA\u30C3\u30AF\u30EA\u30F3\u30AF\u3060\u3051\u305F\u3069\u308B","follow symlinks given on the command line"],["-P","\u30B7\u30F3\u30DC\u30EA\u30C3\u30AF\u30EA\u30F3\u30AF\u3092\u305F\u3069\u3089\u306A\u3044\uFF08\u65E2\u5B9A\uFF09","never follow symlinks (default)"],["-regex","\u30D1\u30B9\u5168\u4F53\u304C\u6B63\u898F\u8868\u73FE\u306B\u4E00\u81F4\u3059\u308B","whole path matches the regex","arg"],["-type","\u7A2E\u985E\u3067\u7D5E\u308B\uFF08f: \u30D5\u30A1\u30A4\u30EB, d: \u30C7\u30A3\u30EC\u30AF\u30C8\u30EA, l: \u30B7\u30F3\u30DC\u30EA\u30C3\u30AF\u30EA\u30F3\u30AF\uFF09","file type (f file, d directory, l symlink)","arg",{f:$("\u901A\u5E38\u30D5\u30A1\u30A4\u30EB","regular file"),d:$("\u30C7\u30A3\u30EC\u30AF\u30C8\u30EA","directory"),l:$("\u30B7\u30F3\u30DC\u30EA\u30C3\u30AF\u30EA\u30F3\u30AF","symbolic link")}],["-maxdepth","\u63A2\u7D22\u3059\u308B\u968E\u5C64\u306E\u6DF1\u3055\u306E\u4E0A\u9650","descend at most N levels","arg"],["-mindepth","\u3053\u306E\u6DF1\u3055\u672A\u6E80\u306E\u968E\u5C64\u306F\u5BFE\u8C61\u5916","ignore levels shallower than N","arg"],["-mtime","\u66F4\u65B0\u65E5\u6642\u3067\u7D5E\u308B\uFF08`-7` \u306F7\u65E5\u4EE5\u5185, `+7` \u306F7\u65E5\u3088\u308A\u524D\uFF09","modified N days ago (`-7` within 7 days, `+7` older)","arg"],["-mmin","\u66F4\u65B0\u65E5\u6642\uFF08\u5206\u5358\u4F4D\uFF09\u3067\u7D5E\u308B","modified N minutes ago","arg"],["-newer","\u6307\u5B9A\u30D5\u30A1\u30A4\u30EB\u3088\u308A\u65B0\u3057\u3044","newer than the given file","arg"],["-size","\u30B5\u30A4\u30BA\u3067\u7D5E\u308B\uFF08\u4F8B: `+10M` \u306F10MiB\u8D85\uFF09","file size (e.g. `+10M` larger than 10 MiB)","arg"],["-user","\u6240\u6709\u30E6\u30FC\u30B6\u30FC\u3067\u7D5E\u308B","owned by user","arg"],["-perm","\u30D1\u30FC\u30DF\u30C3\u30B7\u30E7\u30F3\u3067\u7D5E\u308B","permission bits","arg"],["-empty","\u7A7A\u306E\u30D5\u30A1\u30A4\u30EB\u307E\u305F\u306F\u30C7\u30A3\u30EC\u30AF\u30C8\u30EA","empty file or directory"],["-exec","\u898B\u3064\u304B\u3063\u305F\u5404\u30D5\u30A1\u30A4\u30EB\u306B\u5BFE\u3057\u3066\u30B3\u30DE\u30F3\u30C9\u3092\u5B9F\u884C\uFF08`{}` \u304C\u30D5\u30A1\u30A4\u30EB\u540D\u306B\u7F6E\u304D\u63DB\u308F\u308B\u3002`\\;` \u30671\u4EF6\u305A\u3064\u3001`+` \u3067\u307E\u3068\u3081\u3066\uFF09","run a command on each match (`{}` is the file; `\\;` one at a time, `+` batched)","until"],["-execdir","\u30D5\u30A1\u30A4\u30EB\u306E\u3042\u308B\u30C7\u30A3\u30EC\u30AF\u30C8\u30EA\u3067\u30B3\u30DE\u30F3\u30C9\u3092\u5B9F\u884C","like -exec, run in the file's directory","until"],["-ok","\u78BA\u8A8D\u3057\u3066\u304B\u3089\u30B3\u30DE\u30F3\u30C9\u3092\u5B9F\u884C","like -exec, but ask first","until"],["-delete","\u898B\u3064\u304B\u3063\u305F\u30D5\u30A1\u30A4\u30EB\u3092\u524A\u9664\u3059\u308B\uFF08\u6CE8\u610F\uFF09","delete matches (careful!)"],["-print","\u30D1\u30B9\u3092\u8868\u793A\uFF08\u65E2\u5B9A\u306E\u52D5\u4F5C\uFF09","print the path (default action)"],["-print0","\u30D1\u30B9\u3092 NUL \u533A\u5207\u308A\u3067\u51FA\u529B\uFF08`xargs -0` \u3068\u7D44\u307F\u5408\u308F\u305B\u308B\uFF09","print paths separated by NUL (pair with `xargs -0`)"],["-prune","\u3053\u306E\u30C7\u30A3\u30EC\u30AF\u30C8\u30EA\u306E\u4E2D\u306B\u306F\u5165\u3089\u306A\u3044","do not descend into this directory"],["-not|!","\u76F4\u5F8C\u306E\u6761\u4EF6\u3092\u5426\u5B9A\u3059\u308B","negate the next condition"],["-o|-or","OR \u6761\u4EF6","logical OR"],["-a|-and","AND \u6761\u4EF6\uFF08\u65E2\u5B9A\uFF09","logical AND (default)"],["-L","\u30B7\u30F3\u30DC\u30EA\u30C3\u30AF\u30EA\u30F3\u30AF\u3092\u305F\u3069\u308B","follow symbolic links"]],{longSingleDash:!0,positional:[$("\u63A2\u7D22\u3092\u958B\u59CB\u3059\u308B\u30C7\u30A3\u30EC\u30AF\u30C8\u30EA","starting directory")]}),xargs:y("\u6A19\u6E96\u5165\u529B\u304B\u3089\u8AAD\u3093\u3060\u5024\u3092\u5F15\u6570\u306B\u3057\u3066\u30B3\u30DE\u30F3\u30C9\u3092\u5B9F\u884C\u3059\u308B","Build and run a command with arguments read from stdin",[["-0|--null","\u5165\u529B\u3092 NUL \u533A\u5207\u308A\u3068\u3057\u3066\u8AAD\u3080\uFF08`find -print0` \u3068\u7D44\u307F\u5408\u308F\u305B\u308B\uFF09","input is NUL-separated (pair with `find -print0`)"],["-n|--max-args","1\u56DE\u306E\u30B3\u30DE\u30F3\u30C9\u5B9F\u884C\u306B\u6E21\u3059\u5F15\u6570\u306E\u6700\u5927\u6570","max arguments per command","arg"],["-I","\u7F6E\u63DB\u6587\u5B57\u5217\uFF08\u4F8B: `-I{}` \u3067 `{}` \u3092\u5165\u529B\u5024\u306B\u7F6E\u304D\u63DB\u3048\u30661\u4EF6\u305A\u3064\u5B9F\u884C\uFF09","replace string (e.g. `-I{}`), runs once per input","arg"],["-P|--max-procs","\u4E26\u5217\u5B9F\u884C\u3059\u308B\u30D7\u30ED\u30BB\u30B9\u6570","run up to N processes in parallel","arg"],["-r|--no-run-if-empty","\u5165\u529B\u304C\u7A7A\u306A\u3089\u30B3\u30DE\u30F3\u30C9\u3092\u5B9F\u884C\u3057\u306A\u3044","do not run if input is empty"],["-t|--verbose","\u5B9F\u884C\u3059\u308B\u30B3\u30DE\u30F3\u30C9\u3092\u8868\u793A","print commands before running"],["-d|--delimiter","\u5165\u529B\u306E\u533A\u5207\u308A\u6587\u5B57","input delimiter","arg"]],{wraps:!0}),cut:y("\u5404\u884C\u304B\u3089\u6307\u5B9A\u3057\u305F\u5217\uFF08\u30D5\u30A3\u30FC\u30EB\u30C9\uFF09\u3084\u6587\u5B57\u4F4D\u7F6E\u3092\u5207\u308A\u51FA\u3059","Cut out selected fields or characters from each line",[["-d|--delimiter","\u533A\u5207\u308A\u6587\u5B57\uFF08\u65E2\u5B9A\u306F\u30BF\u30D6\uFF09","field delimiter (default: tab)","arg"],["-f|--fields","\u53D6\u308A\u51FA\u3059\u30D5\u30A3\u30FC\u30EB\u30C9\u756A\u53F7\uFF08\u4F8B: `1,3` \u3084 `2-`\uFF09","fields to select (e.g. `1,3`, `2-`)","arg lang:cutfields"],["-c|--characters","\u53D6\u308A\u51FA\u3059\u6587\u5B57\u4F4D\u7F6E","character positions to select","arg lang:cutchars"],["-b|--bytes","\u53D6\u308A\u51FA\u3059\u30D0\u30A4\u30C8\u4F4D\u7F6E","byte positions to select","arg lang:cutchars"]],{positional:[ke]}),sort:y("\u884C\u3092\u4E26\u3079\u66FF\u3048\u308B","Sort lines",[["-n|--numeric-sort","\u6570\u5024\u3068\u3057\u3066\u4E26\u3079\u308B","compare as numbers"],["-r|--reverse","\u9006\u9806\uFF08\u964D\u9806\uFF09\u306B\u3059\u308B","reverse order"],["-u|--unique","\u91CD\u8907\u884C\u30921\u3064\u306B\u307E\u3068\u3081\u308B","output only unique lines"],["-k|--key","\u4E26\u3079\u66FF\u3048\u306E\u30AD\u30FC\u3068\u306A\u308B\u5217\uFF08\u4F8B: `-k2,2`\uFF09","sort key field (e.g. `-k2,2`)","arg lang:sortkey"],["-t|--field-separator","\u5217\u306E\u533A\u5207\u308A\u6587\u5B57","field separator","arg"],["-h|--human-numeric-sort","`2K`, `1G` \u306E\u3088\u3046\u306A\u5358\u4F4D\u4ED8\u304D\u6570\u5024\u3067\u4E26\u3079\u308B","compare human-readable numbers (2K, 1G)"],["-f|--ignore-case","\u5927\u6587\u5B57\u30FB\u5C0F\u6587\u5B57\u3092\u533A\u5225\u3057\u306A\u3044","ignore case"],["-V|--version-sort","\u30D0\u30FC\u30B8\u30E7\u30F3\u756A\u53F7\u9806\u306B\u4E26\u3079\u308B","natural version sort"],["-o|--output","\u7D50\u679C\u3092\u66F8\u304D\u51FA\u3059\u30D5\u30A1\u30A4\u30EB","write result to file","arg"]],{positional:[ke]}),uniq:y("\u96A3\u63A5\u3059\u308B\u91CD\u8907\u884C\u3092\u307E\u3068\u3081\u308B\uFF08\u901A\u5E38 `sort` \u306E\u5F8C\u306B\u4F7F\u3046\uFF09","Collapse adjacent duplicate lines (usually after `sort`)",[["-c|--count","\u5404\u884C\u306E\u51FA\u73FE\u56DE\u6570\u3092\u5148\u982D\u306B\u4ED8\u3051\u308B","prefix lines with their count"],["-d|--repeated","\u91CD\u8907\u3057\u3066\u3044\u308B\u884C\u3060\u3051\u8868\u793A","only print duplicated lines"],["-u|--unique","\u91CD\u8907\u3057\u3066\u3044\u306A\u3044\u884C\u3060\u3051\u8868\u793A","only print unique lines"],["-i|--ignore-case","\u5927\u6587\u5B57\u30FB\u5C0F\u6587\u5B57\u3092\u533A\u5225\u3057\u306A\u3044","ignore case"]]),getopt:y('\u30B3\u30DE\u30F3\u30C9\u30E9\u30A4\u30F3\u5F15\u6570\u3092\u89E3\u6790\u3057\u3066\u3001\u30AA\u30D7\u30B7\u30E7\u30F3\u3092\u5148\u30FB\u305D\u308C\u4EE5\u5916\u3092 `--` \u306E\u5F8C\u308D\u306B\u4E26\u3079\u76F4\u3057\u305F\u5F62\u3067\u51FA\u529B\u3059\u308B\uFF08`eval set -- "$(getopt \u2026)"` \u3067\u4F7F\u3046\u3002\u9577\u3044\u30AA\u30D7\u30B7\u30E7\u30F3\u3082\u6271\u3048\u308B\uFF09','Parse command-line arguments and print them normalised: options first, other arguments after `--` (used as `eval set -- "$(getopt \u2026)"`; supports long options)',[["-o|--options","\u53D7\u3051\u4ED8\u3051\u308B\u77ED\u3044\u30AA\u30D7\u30B7\u30E7\u30F3\u306E\u4E00\u89A7","the short options to accept","arg fills lang:getoptshort"],["-l|--longoptions|--long","\u53D7\u3051\u4ED8\u3051\u308B\u9577\u3044\u30AA\u30D7\u30B7\u30E7\u30F3\u306E\u4E00\u89A7\uFF08\u30AB\u30F3\u30DE\u533A\u5207\u308A\uFF09","the long options to accept (comma-separated)","arg lang:getoptlong"],["-n|--name",'\u30A8\u30E9\u30FC\u30E1\u30C3\u30BB\u30FC\u30B8\u306B\u51FA\u3059\u30D7\u30ED\u30B0\u30E9\u30E0\u540D\uFF08\u901A\u5E38\u306F `"$0"`\uFF09','program name used in error messages (usually `"$0"`)',"arg"],["-a|--alternative","\u9577\u3044\u30AA\u30D7\u30B7\u30E7\u30F3\u3092 `-name` \u306E\u3088\u3046\u306B `-` 1\u3064\u3067\u3082\u66F8\u3051\u308B\u3088\u3046\u306B\u3059\u308B","allow long options with a single `-`"],["-q|--quiet","\u4E0D\u6B63\u306A\u30AA\u30D7\u30B7\u30E7\u30F3\u306E\u30A8\u30E9\u30FC\u30E1\u30C3\u30BB\u30FC\u30B8\u3092\u51FA\u3055\u306A\u3044","do not report unknown options"],["-Q|--quiet-output","\u89E3\u6790\u7D50\u679C\u3092\u51FA\u529B\u3057\u306A\u3044\uFF08\u5F15\u6570\u304C\u6B63\u3057\u3044\u304B\u306E\u78BA\u8A8D\u3060\u3051\uFF09","print nothing; only check the arguments"],["-s|--shell","\u30AF\u30A9\u30FC\u30C8\u306E\u4ED5\u65B9\u3092\u3053\u306E\u30B7\u30A7\u30EB\u306B\u5408\u308F\u305B\u308B\uFF08sh, bash, csh, tcsh\uFF09","quote for this shell (sh, bash, csh, tcsh)","arg"],["-u|--unquoted","\u51FA\u529B\u3092\u30AF\u30A9\u30FC\u30C8\u3057\u306A\u3044\uFF08\u7A7A\u767D\u3092\u542B\u3080\u5F15\u6570\u304C\u58CA\u308C\u308B\uFF09","do not quote the output (breaks arguments with spaces)"],["-T|--test","\u62E1\u5F35\u7248\u306E getopt \u304B\u78BA\u8A8D\u3059\u308B\uFF08\u62E1\u5F35\u7248\u306A\u3089\u7D42\u4E86\u30B9\u30C6\u30FC\u30BF\u30B9 4\uFF09","test for the enhanced getopt (exits 4 if so)"]],{positional:[$("\uFF08\u65E7\u5F62\u5F0F\uFF09\u53D7\u3051\u4ED8\u3051\u308B\u30AA\u30D7\u30B7\u30E7\u30F3\u6587\u5B57","(old form) the option letters"),$('\u89E3\u6790\u3059\u308B\u5F15\u6570\uFF08\u901A\u5E38\u306F `"$@"`\uFF09','the arguments to parse (usually `"$@"`)')],positionalLang:["getoptshort"]}),tr:y("\u6587\u5B57\u3092\u7F6E\u63DB\u30FB\u524A\u9664\u3059\u308B\uFF08\u6A19\u6E96\u5165\u529B\u306E\u307F\uFF09","Translate or delete characters (stdin only)",[["-d|--delete","\u6307\u5B9A\u3057\u305F\u6587\u5B57\u3092\u524A\u9664\u3059\u308B","delete the characters"],["-s|--squeeze-repeats","\u9023\u7D9A\u3059\u308B\u540C\u3058\u6587\u5B57\u30921\u3064\u306B\u307E\u3068\u3081\u308B","squeeze repeated characters"],["-c|--complement","\u6307\u5B9A\u3057\u305F\u6587\u5B57\u4EE5\u5916\u3092\u5BFE\u8C61\u306B\u3059\u308B","use the complement of the set"]],{positional:[$("\u5909\u63DB\u5143\u306E\u6587\u5B57\u96C6\u5408\uFF08\u4F8B: `a-z`\uFF09","source character set (e.g. `a-z`)"),$("\u5909\u63DB\u5148\u306E\u6587\u5B57\u96C6\u5408\uFF08\u4F8B: `A-Z`\uFF09","target character set (e.g. `A-Z`)")],positionalLang:["trset","trset"]}),head:y("\u30D5\u30A1\u30A4\u30EB\u306E\u5148\u982D\u90E8\u5206\u3092\u8868\u793A\u3059\u308B\uFF08\u65E2\u5B9A\u306F10\u884C\uFF09","Print the first part of files (default 10 lines)",[["-n|--lines","\u8868\u793A\u3059\u308B\u884C\u6570\uFF08`-n -5` \u306F\u6700\u5F8C\u306E5\u884C\u4EE5\u5916\uFF09","number of lines (`-n -5`: all but the last 5)","arg"],["-c|--bytes","\u8868\u793A\u3059\u308B\u30D0\u30A4\u30C8\u6570","number of bytes","arg"]],{positional:[ke]}),tail:y("\u30D5\u30A1\u30A4\u30EB\u306E\u672B\u5C3E\u90E8\u5206\u3092\u8868\u793A\u3059\u308B\uFF08\u65E2\u5B9A\u306F10\u884C\uFF09","Print the last part of files (default 10 lines)",[["-n|--lines","\u8868\u793A\u3059\u308B\u884C\u6570\uFF08`+N` \u3067 N \u884C\u76EE\u4EE5\u964D\uFF09","number of lines (`+N`: from line N)","arg"],["-c|--bytes","\u8868\u793A\u3059\u308B\u30D0\u30A4\u30C8\u6570","number of bytes","arg"],["-f|--follow","\u8FFD\u8A18\u3092\u76E3\u8996\u3057\u7D9A\u3051\u3066\u8868\u793A\u3059\u308B\uFF08\u30ED\u30B0\u76E3\u8996\uFF09","keep following appended data (log watching)"],["-F","\u30D5\u30A1\u30A4\u30EB\u304C\u4F5C\u308A\u76F4\u3055\u308C\u3066\u3082\u8FFD\u3044\u7D9A\u3051\u308B","follow by name, retrying"]],{positional:[ke]}),wc:y("\u884C\u6570\u30FB\u5358\u8A9E\u6570\u30FB\u30D0\u30A4\u30C8\u6570\u3092\u6570\u3048\u308B","Count lines, words and bytes",[["-l|--lines","\u884C\u6570\u3092\u6570\u3048\u308B","count lines"],["-w|--words","\u5358\u8A9E\u6570\u3092\u6570\u3048\u308B","count words"],["-c|--bytes","\u30D0\u30A4\u30C8\u6570\u3092\u6570\u3048\u308B","count bytes"],["-m|--chars","\u6587\u5B57\u6570\u3092\u6570\u3048\u308B","count characters"]],{positional:[ke]}),tee:y("\u6A19\u6E96\u5165\u529B\u3092\u6A19\u6E96\u51FA\u529B\u3068\u30D5\u30A1\u30A4\u30EB\u306E\u4E21\u65B9\u306B\u66F8\u304D\u51FA\u3059","Copy stdin to stdout and to files",[["-a|--append","\u30D5\u30A1\u30A4\u30EB\u306B\u8FFD\u8A18\u3059\u308B\uFF08\u4E0A\u66F8\u304D\u3057\u306A\u3044\uFF09","append instead of overwrite"]],{positional:[$("\u66F8\u304D\u51FA\u3059\u30D5\u30A1\u30A4\u30EB","file to write")]}),curl:y("URL \u3092\u6307\u5B9A\u3057\u3066\u30C7\u30FC\u30BF\u3092\u9001\u53D7\u4FE1\u3059\u308B\uFF08HTTP \u30EA\u30AF\u30A8\u30B9\u30C8\u306A\u3069\uFF09","Transfer data to or from a URL (HTTP requests etc.)",[["-s|--silent","\u9032\u6357\u3084\u30A8\u30E9\u30FC\u3092\u8868\u793A\u3057\u306A\u3044","silent mode"],["-S|--show-error","`-s` \u3068\u4F75\u7528\u6642\u3082\u30A8\u30E9\u30FC\u306F\u8868\u793A\u3059\u308B","show errors even with `-s`"],["-f|--fail","HTTP \u30A8\u30E9\u30FC(4xx/5xx)\u6642\u306B\u5931\u6557\u306E\u7D42\u4E86\u30B9\u30C6\u30FC\u30BF\u30B9\u3092\u8FD4\u3059","fail with non-zero exit on HTTP errors"],["-L|--location","\u30EA\u30C0\u30A4\u30EC\u30AF\u30C8\u3092\u305F\u3069\u308B","follow redirects"],["-o|--output","\u30EC\u30B9\u30DD\u30F3\u30B9\u3092\u30D5\u30A1\u30A4\u30EB\u306B\u4FDD\u5B58","write output to a file","arg"],["-O|--remote-name","URL \u306E\u30D5\u30A1\u30A4\u30EB\u540D\u3067\u4FDD\u5B58","save with the remote file name"],["-X|--request","HTTP \u30E1\u30BD\u30C3\u30C9\u3092\u6307\u5B9A\uFF08GET, POST \u306A\u3069\uFF09","HTTP method (GET, POST\u2026)","arg"],["-H|--header","\u30EA\u30AF\u30A8\u30B9\u30C8\u30D8\u30C3\u30C0\u3092\u8FFD\u52A0","add a request header","arg"],["-d|--data","\u30EA\u30AF\u30A8\u30B9\u30C8\u30DC\u30C7\u30A3\u3068\u3057\u3066\u9001\u308B\u30C7\u30FC\u30BF\uFF08POST \u306B\u306A\u308B\uFF09","request body data (implies POST)","arg"],["-u|--user","\u8A8D\u8A3C\u60C5\u5831 `user:password`","credentials `user:password`","arg"],["-i|--include","\u30EC\u30B9\u30DD\u30F3\u30B9\u30D8\u30C3\u30C0\u3082\u8868\u793A","include response headers"],["-I|--head","\u30D8\u30C3\u30C0\u3060\u3051\u3092\u53D6\u5F97\uFF08HEAD \u30EA\u30AF\u30A8\u30B9\u30C8\uFF09","fetch headers only (HEAD)"],["-k|--insecure","TLS \u8A3C\u660E\u66F8\u306E\u691C\u8A3C\u3092\u3057\u306A\u3044\uFF08\u6CE8\u610F\uFF09","skip TLS verification (careful!)"],["-v|--verbose","\u901A\u4FE1\u306E\u8A73\u7D30\u3092\u8868\u793A","verbose output"],["-w|--write-out","\u5B8C\u4E86\u5F8C\u306B\u8868\u793A\u3059\u308B\u60C5\u5831\u306E\u66F8\u5F0F","output format after completion","arg"]],{positional:[$("\u30A2\u30AF\u30BB\u30B9\u3059\u308B URL","URL")]}),wget:y("URL \u304B\u3089\u30D5\u30A1\u30A4\u30EB\u3092\u30C0\u30A6\u30F3\u30ED\u30FC\u30C9\u3059\u308B","Download files from URLs",[["-O","\u4FDD\u5B58\u3059\u308B\u30D5\u30A1\u30A4\u30EB\u540D\uFF08`-` \u3067\u6A19\u6E96\u51FA\u529B\uFF09","output file (`-` = stdout)","arg"],["-q|--quiet","\u4F55\u3082\u8868\u793A\u3057\u306A\u3044","quiet"],["-c|--continue","\u9014\u4E2D\u307E\u3067\u843D\u3068\u3057\u305F\u30D5\u30A1\u30A4\u30EB\u3092\u518D\u958B","resume a partial download"]],{positional:[$("\u30C0\u30A6\u30F3\u30ED\u30FC\u30C9\u3059\u308B URL","URL to download")]}),tar:y("tar \u30A2\u30FC\u30AB\u30A4\u30D6\u3092\u4F5C\u6210\u30FB\u5C55\u958B\u3059\u308B","Create or extract tar archives",[["-c|--create","\u30A2\u30FC\u30AB\u30A4\u30D6\u3092\u4F5C\u6210\u3059\u308B","create an archive"],["-x|--extract","\u30A2\u30FC\u30AB\u30A4\u30D6\u3092\u5C55\u958B\u3059\u308B","extract an archive"],["-t|--list","\u30A2\u30FC\u30AB\u30A4\u30D6\u306E\u4E2D\u8EAB\u3092\u4E00\u89A7\u8868\u793A","list contents"],["-f|--file","\u30A2\u30FC\u30AB\u30A4\u30D6\u30D5\u30A1\u30A4\u30EB\u540D","archive file name","arg"],["-z|--gzip","gzip \u3067\u5727\u7E2E\u30FB\u5C55\u958B\u3059\u308B\uFF08.tar.gz\uFF09","gzip (.tar.gz)"],["-j|--bzip2","bzip2 \u3067\u5727\u7E2E\u30FB\u5C55\u958B\u3059\u308B","bzip2"],["-J|--xz","xz \u3067\u5727\u7E2E\u30FB\u5C55\u958B\u3059\u308B","xz"],["-v|--verbose","\u51E6\u7406\u3057\u305F\u30D5\u30A1\u30A4\u30EB\u540D\u3092\u8868\u793A","list processed files"],["-C|--directory","\u3053\u306E\u30C7\u30A3\u30EC\u30AF\u30C8\u30EA\u306B\u79FB\u52D5\u3057\u3066\u304B\u3089\u51E6\u7406","change to this directory first","arg"],["--exclude","\u9664\u5916\u3059\u308B\u30D1\u30BF\u30FC\u30F3","exclude pattern","arg"]]),gzip:y("\u30D5\u30A1\u30A4\u30EB\u3092 gzip \u5727\u7E2E\u3059\u308B\uFF08\u5143\u30D5\u30A1\u30A4\u30EB\u306F .gz \u306B\u7F6E\u304D\u63DB\u308F\u308B\uFF09","Compress files with gzip",[["-d|--decompress","\u5C55\u958B\u3059\u308B","decompress"],["-c|--stdout","\u7D50\u679C\u3092\u6A19\u6E96\u51FA\u529B\u306B\u51FA\u3059\uFF08\u5143\u30D5\u30A1\u30A4\u30EB\u3092\u6B8B\u3059\uFF09","write to stdout, keep originals"],["-k|--keep","\u5143\u30D5\u30A1\u30A4\u30EB\u3092\u6B8B\u3059","keep the original"]]),gunzip:y("gzip \u30D5\u30A1\u30A4\u30EB\u3092\u5C55\u958B\u3059\u308B","Decompress gzip files"),zip:y("ZIP \u30A2\u30FC\u30AB\u30A4\u30D6\u3092\u4F5C\u6210\u3059\u308B","Create ZIP archives",[["-r","\u30C7\u30A3\u30EC\u30AF\u30C8\u30EA\u3092\u518D\u5E30\u7684\u306B\u8FFD\u52A0","recurse into directories"]]),unzip:y("ZIP \u30A2\u30FC\u30AB\u30A4\u30D6\u3092\u5C55\u958B\u3059\u308B","Extract ZIP archives",[["-d","\u5C55\u958B\u5148\u30C7\u30A3\u30EC\u30AF\u30C8\u30EA","destination directory","arg"],["-o","\u78BA\u8A8D\u305B\u305A\u4E0A\u66F8\u304D","overwrite without asking"],["-q","\u4F55\u3082\u8868\u793A\u3057\u306A\u3044","quiet"]]),cp:y("\u30D5\u30A1\u30A4\u30EB\u3084\u30C7\u30A3\u30EC\u30AF\u30C8\u30EA\u3092\u30B3\u30D4\u30FC\u3059\u308B","Copy files and directories",[["-r|-R|--recursive","\u30C7\u30A3\u30EC\u30AF\u30C8\u30EA\u3092\u518D\u5E30\u7684\u306B\u30B3\u30D4\u30FC","copy directories recursively"],["-a|--archive","\u5C5E\u6027\uFF08\u6A29\u9650\u30FB\u65E5\u6642\u30FB\u30EA\u30F3\u30AF\uFF09\u3092\u4FDD\u3063\u305F\u307E\u307E\u518D\u5E30\u7684\u306B\u30B3\u30D4\u30FC","archive mode: recursive, preserve attributes"],["-f|--force","\u66F8\u304D\u8FBC\u3081\u306A\u3044\u65E2\u5B58\u30D5\u30A1\u30A4\u30EB\u3082\u4E0A\u66F8\u304D","force overwrite"],["-i|--interactive","\u4E0A\u66F8\u304D\u524D\u306B\u78BA\u8A8D\u3059\u308B","prompt before overwrite"],["-n|--no-clobber","\u65E2\u5B58\u30D5\u30A1\u30A4\u30EB\u3092\u4E0A\u66F8\u304D\u3057\u306A\u3044","do not overwrite existing files"],["-p","\u6A29\u9650\u30FB\u6240\u6709\u8005\u30FB\u65E5\u6642\u3092\u4FDD\u6301","preserve mode, ownership, timestamps"],["-v|--verbose","\u51E6\u7406\u5185\u5BB9\u3092\u8868\u793A","explain what is being done"],["-u|--update","\u30B3\u30D4\u30FC\u5143\u306E\u65B9\u304C\u65B0\u3057\u3044\u5834\u5408\u306E\u307F\u30B3\u30D4\u30FC","copy only when source is newer"]],{positional:[$("\u30B3\u30D4\u30FC\u5143","source"),$("\u30B3\u30D4\u30FC\u5143\u307E\u305F\u306F\u30B3\u30D4\u30FC\u5148\uFF08\u6700\u5F8C\u306E\u5F15\u6570\u304C\u30B3\u30D4\u30FC\u5148\uFF09","source or destination (last argument is the destination)")]}),mv:y("\u30D5\u30A1\u30A4\u30EB\u3092\u79FB\u52D5\u30FB\u540D\u524D\u5909\u66F4\u3059\u308B","Move or rename files",[["-f|--force","\u78BA\u8A8D\u305B\u305A\u4E0A\u66F8\u304D","do not prompt before overwriting"],["-i|--interactive","\u4E0A\u66F8\u304D\u524D\u306B\u78BA\u8A8D\u3059\u308B","prompt before overwrite"],["-n|--no-clobber","\u65E2\u5B58\u30D5\u30A1\u30A4\u30EB\u3092\u4E0A\u66F8\u304D\u3057\u306A\u3044","do not overwrite"],["-v|--verbose","\u51E6\u7406\u5185\u5BB9\u3092\u8868\u793A","explain what is being done"]],{positional:[$("\u79FB\u52D5\u5143","source"),$("\u79FB\u52D5\u5143\u307E\u305F\u306F\u79FB\u52D5\u5148\uFF08\u6700\u5F8C\u306E\u5F15\u6570\u304C\u79FB\u52D5\u5148\uFF09","source or destination (last argument is the destination)")]}),rm:y("\u30D5\u30A1\u30A4\u30EB\u3092\u524A\u9664\u3059\u308B\uFF08\u30B4\u30DF\u7BB1\u306B\u306F\u5165\u3089\u306A\u3044\uFF09","Remove files (no trash; permanent)",[["-r|-R|--recursive","\u30C7\u30A3\u30EC\u30AF\u30C8\u30EA\u3092\u4E2D\u8EAB\u3054\u3068\u518D\u5E30\u7684\u306B\u524A\u9664","remove directories and their contents"],["-f|--force","\u5B58\u5728\u3057\u306A\u3044\u30D5\u30A1\u30A4\u30EB\u3092\u7121\u8996\u3057\u3001\u78BA\u8A8D\u3082\u3057\u306A\u3044","ignore nonexistent files, never prompt"],["-i","\u524A\u9664\u524D\u306B1\u4EF6\u305A\u3064\u78BA\u8A8D\u3059\u308B","prompt before every removal"],["-v|--verbose","\u51E6\u7406\u5185\u5BB9\u3092\u8868\u793A","explain what is being done"],["-d|--dir","\u7A7A\u306E\u30C7\u30A3\u30EC\u30AF\u30C8\u30EA\u3092\u524A\u9664","remove empty directories"]],{positional:[$("\u524A\u9664\u3059\u308B\u30D5\u30A1\u30A4\u30EB","file to remove")]}),mkdir:y("\u30C7\u30A3\u30EC\u30AF\u30C8\u30EA\u3092\u4F5C\u6210\u3059\u308B","Create directories",[["-p|--parents","\u89AA\u30C7\u30A3\u30EC\u30AF\u30C8\u30EA\u3082\u307E\u3068\u3081\u3066\u4F5C\u6210\u3057\u3001\u65E2\u306B\u5B58\u5728\u3057\u3066\u3082\u30A8\u30E9\u30FC\u306B\u3057\u306A\u3044","create parents as needed; no error if it exists"],["-m|--mode","\u4F5C\u6210\u3059\u308B\u30C7\u30A3\u30EC\u30AF\u30C8\u30EA\u306E\u6A29\u9650","permission mode","arg lang:mode"],["-v|--verbose","\u4F5C\u6210\u3057\u305F\u30C7\u30A3\u30EC\u30AF\u30C8\u30EA\u3092\u8868\u793A","print each created directory"]],{positional:[$("\u4F5C\u6210\u3059\u308B\u30C7\u30A3\u30EC\u30AF\u30C8\u30EA","directory to create")]}),rmdir:y("\u7A7A\u306E\u30C7\u30A3\u30EC\u30AF\u30C8\u30EA\u3092\u524A\u9664\u3059\u308B","Remove empty directories"),touch:y("\u30D5\u30A1\u30A4\u30EB\u306E\u66F4\u65B0\u65E5\u6642\u3092\u73FE\u5728\u6642\u523B\u306B\u3059\u308B\u3002\u5B58\u5728\u3057\u306A\u3051\u308C\u3070\u7A7A\u30D5\u30A1\u30A4\u30EB\u3092\u4F5C\u6210","Update file timestamps; create empty files if missing",[],{positional:[ke]}),chmod:y("\u30D5\u30A1\u30A4\u30EB\u306E\u6A29\u9650\uFF08\u30D1\u30FC\u30DF\u30C3\u30B7\u30E7\u30F3\uFF09\u3092\u5909\u66F4\u3059\u308B","Change file permissions",[["-R|--recursive","\u30C7\u30A3\u30EC\u30AF\u30C8\u30EA\u5185\u3092\u518D\u5E30\u7684\u306B\u5909\u66F4","change recursively"]],{positional:[$("\u6A29\u9650\uFF08\u4F8B: `755`, `+x` \u306F\u5B9F\u884C\u6A29\u9650\u3092\u4ED8\u4E0E, `u+w`\uFF09","mode (e.g. `755`, `+x`, `u+w`)"),ke],positionalLang:["mode"]}),chown:y("\u30D5\u30A1\u30A4\u30EB\u306E\u6240\u6709\u8005\u30FB\u30B0\u30EB\u30FC\u30D7\u3092\u5909\u66F4\u3059\u308B","Change file owner and group",[["-R|--recursive","\u30C7\u30A3\u30EC\u30AF\u30C8\u30EA\u5185\u3092\u518D\u5E30\u7684\u306B\u5909\u66F4","change recursively"]],{positional:[$("\u6240\u6709\u8005\uFF08`user:group` \u5F62\u5F0F\uFF09","owner (`user:group`)"),ke]}),ln:y("\u30D5\u30A1\u30A4\u30EB\u3078\u306E\u30EA\u30F3\u30AF\u3092\u4F5C\u6210\u3059\u308B","Create links between files",[["-s|--symbolic","\u30B7\u30F3\u30DC\u30EA\u30C3\u30AF\u30EA\u30F3\u30AF\u3092\u4F5C\u6210\uFF08\u306A\u3051\u308C\u3070\u30CF\u30FC\u30C9\u30EA\u30F3\u30AF\uFF09","make a symbolic link (otherwise hard link)"],["-f|--force","\u65E2\u5B58\u306E\u30EA\u30F3\u30AF\u5148\u30D5\u30A1\u30A4\u30EB\u3092\u7F6E\u304D\u63DB\u3048\u308B","remove existing destination files"],["-n|--no-dereference","\u30EA\u30F3\u30AF\u5148\u304C\u30C7\u30A3\u30EC\u30AF\u30C8\u30EA\u3078\u306E\u30B7\u30F3\u30DC\u30EA\u30C3\u30AF\u30EA\u30F3\u30AF\u3067\u3082\u305D\u306E\u4E2D\u306B\u4F5C\u3089\u306A\u3044","treat a symlinked destination directory as a file"]],{positional:[$("\u30EA\u30F3\u30AF\u5148\uFF08\u5B9F\u4F53\uFF09","target"),$("\u4F5C\u6210\u3059\u308B\u30EA\u30F3\u30AF\u306E\u540D\u524D","link name")]}),basename:y("\u30D1\u30B9\u304B\u3089\u30C7\u30A3\u30EC\u30AF\u30C8\u30EA\u90E8\u5206\u3092\u9664\u3044\u305F\u30D5\u30A1\u30A4\u30EB\u540D\u3092\u53D6\u308A\u51FA\u3059","Strip directory (and optional suffix) from a path",[],{positional:[$("\u30D1\u30B9","path"),$("\u53D6\u308A\u9664\u304F\u62E1\u5F35\u5B50","suffix to remove")]}),dirname:y("\u30D1\u30B9\u304B\u3089\u30C7\u30A3\u30EC\u30AF\u30C8\u30EA\u90E8\u5206\u3092\u53D6\u308A\u51FA\u3059","Strip the last component from a path",[],{positional:[$("\u30D1\u30B9","path")]}),realpath:y("\u30B7\u30F3\u30DC\u30EA\u30C3\u30AF\u30EA\u30F3\u30AF\u3084 `..` \u3092\u89E3\u6C7A\u3057\u305F\u7D76\u5BFE\u30D1\u30B9\u3092\u8868\u793A\u3059\u308B","Print the resolved absolute path",[],{positional:[$("\u30D1\u30B9","path")]}),readlink:y("\u30B7\u30F3\u30DC\u30EA\u30C3\u30AF\u30EA\u30F3\u30AF\u306E\u30EA\u30F3\u30AF\u5148\u3092\u8868\u793A\u3059\u308B","Print the target of a symbolic link",[["-f|--canonicalize","\u5168\u3066\u306E\u30EA\u30F3\u30AF\u3092\u518D\u5E30\u7684\u306B\u89E3\u6C7A\u3057\u305F\u7D76\u5BFE\u30D1\u30B9\u3092\u8868\u793A","canonicalize by following every symlink"]]),date:y("\u65E5\u6642\u3092\u8868\u793A\u30FB\u8A2D\u5B9A\u3059\u308B","Print or set the date and time",[["-d|--date","\u73FE\u5728\u6642\u523B\u306E\u4EE3\u308F\u308A\u306B\u6307\u5B9A\u3057\u305F\u65E5\u6642\u3092\u4F7F\u3046\uFF08\u4F8B: `yesterday`\uFF09","use the given date instead of now (e.g. `yesterday`)","arg"],["-u|--utc","UTC \u3067\u8868\u793A","use UTC"],["-I|--iso-8601","ISO 8601 \u5F62\u5F0F\u3067\u8868\u793A","ISO 8601 format"]],{positional:[$("\u8868\u793A\u66F8\u5F0F\uFF08`+` \u3067\u59CB\u307E\u308B\u3002\u4F8B: `+%Y-%m-%d`, `+%F` \u306F\u5E74-\u6708-\u65E5, `+%s` \u306F UNIX \u6642\u523B\uFF09","output format starting with `+` (e.g. `+%Y-%m-%d`, `+%F`, `+%s`)")],positionalLang:["date"]}),sleep:y("\u6307\u5B9A\u3057\u305F\u6642\u9593\u3060\u3051\u5F85\u3064","Pause for a duration",[],{positional:[$("\u5F85\u3064\u6642\u9593\uFF08\u79D2\u3002`1m`, `0.5` \u306A\u3069\u3082\u53EF\uFF09","duration in seconds (`1m`, `0.5`\u2026 also allowed)")]}),diff:y("2\u3064\u306E\u30D5\u30A1\u30A4\u30EB\u306E\u5DEE\u5206\u3092\u8868\u793A\u3059\u308B","Compare files line by line",[["-u|--unified","unified \u5F62\u5F0F\u3067\u8868\u793A\uFF08\u30D1\u30C3\u30C1\u7528\u306E\u4E00\u822C\u7684\u306A\u5F62\u5F0F\uFF09","unified format"],["-r|--recursive","\u30C7\u30A3\u30EC\u30AF\u30C8\u30EA\u3092\u518D\u5E30\u7684\u306B\u6BD4\u8F03","compare directories recursively"],["-q|--brief","\u9055\u3044\u304C\u3042\u308B\u304B\u3069\u3046\u304B\u3060\u3051\u8868\u793A","only report whether files differ"],["-y|--side-by-side","\u5DE6\u53F3\u306B\u4E26\u3079\u3066\u8868\u793A","side-by-side output"]],{positional:[$("\u6BD4\u8F03\u5143","first file"),$("\u6BD4\u8F03\u5148","second file")]}),ssh:y("\u30EA\u30E2\u30FC\u30C8\u30DB\u30B9\u30C8\u306B SSH \u3067\u63A5\u7D9A\u3059\u308B\uFF08\u30B3\u30DE\u30F3\u30C9\u3092\u6E21\u3059\u3068\u30EA\u30E2\u30FC\u30C8\u3067\u5B9F\u884C\uFF09","Connect to a remote host over SSH (optionally run a command)",[["-i","\u79D8\u5BC6\u9375\u30D5\u30A1\u30A4\u30EB","identity (private key) file","arg"],["-p","\u30DD\u30FC\u30C8\u756A\u53F7","port","arg"],["-o","ssh \u306E\u8A2D\u5B9A\u30AA\u30D7\u30B7\u30E7\u30F3\uFF08\u4F8B: `StrictHostKeyChecking=no`\uFF09","config option (e.g. `StrictHostKeyChecking=no`)","arg"],["-L","\u30ED\u30FC\u30AB\u30EB\u30DD\u30FC\u30C8\u30D5\u30A9\u30EF\u30FC\u30C7\u30A3\u30F3\u30B0","local port forwarding","arg"],["-N","\u30EA\u30E2\u30FC\u30C8\u30B3\u30DE\u30F3\u30C9\u3092\u5B9F\u884C\u3057\u306A\u3044\uFF08\u8EE2\u9001\u5C02\u7528\uFF09","do not run a remote command"],["-t","\u7591\u4F3C\u7AEF\u672B\u3092\u5272\u308A\u5F53\u3066\u308B","force pseudo-terminal allocation"]],{positional:[$("\u63A5\u7D9A\u5148\uFF08`user@host`\uFF09","destination (`user@host`)"),$("\u30EA\u30E2\u30FC\u30C8\u3067\u5B9F\u884C\u3059\u308B\u30B3\u30DE\u30F3\u30C9","remote command")]}),scp:y("SSH \u7D4C\u7531\u3067\u30D5\u30A1\u30A4\u30EB\u3092\u30B3\u30D4\u30FC\u3059\u308B","Copy files over SSH",[["-r","\u30C7\u30A3\u30EC\u30AF\u30C8\u30EA\u3092\u518D\u5E30\u7684\u306B\u30B3\u30D4\u30FC","copy recursively"],["-P","\u30DD\u30FC\u30C8\u756A\u53F7","port","arg"],["-i","\u79D8\u5BC6\u9375\u30D5\u30A1\u30A4\u30EB","identity file","arg"]]),rsync:y("\u30D5\u30A1\u30A4\u30EB\u3092\u5DEE\u5206\u8EE2\u9001\u3067\u540C\u671F\u3059\u308B\uFF08\u30ED\u30FC\u30AB\u30EB\u30FB\u30EA\u30E2\u30FC\u30C8\u9593\uFF09","Sync files efficiently (local or remote)",[["-a|--archive","\u5C5E\u6027\u3092\u4FDD\u3063\u305F\u307E\u307E\u518D\u5E30\u7684\u306B\u540C\u671F\uFF08`-rlptgoD` \u3068\u540C\u3058\uFF09","archive mode (recursive, preserve attributes)"],["-v|--verbose","\u8A73\u7D30\u3092\u8868\u793A","verbose"],["-z|--compress","\u8EE2\u9001\u6642\u306B\u5727\u7E2E","compress during transfer"],["-n|--dry-run","\u5B9F\u969B\u306B\u306F\u8EE2\u9001\u305B\u305A\u4F55\u304C\u8D77\u304D\u308B\u304B\u8868\u793A","show what would happen"],["-P","\u9032\u6357\u8868\u793A\u3068\u9014\u4E2D\u518D\u958B\u3092\u6709\u52B9\u306B\u3059\u308B","show progress and keep partial files"],["--delete","\u8EE2\u9001\u5143\u306B\u306A\u3044\u30D5\u30A1\u30A4\u30EB\u3092\u8EE2\u9001\u5148\u304B\u3089\u524A\u9664\uFF08\u6CE8\u610F\uFF09","delete extraneous files from the destination (careful!)"],["--exclude","\u9664\u5916\u3059\u308B\u30D1\u30BF\u30FC\u30F3","exclude pattern","arg"],["-e","\u4F7F\u3046\u30EA\u30E2\u30FC\u30C8\u30B7\u30A7\u30EB\uFF08\u4F8B: `ssh -p 2222`\uFF09","remote shell to use","arg"]],{positional:[$("\u8EE2\u9001\u5143\uFF08\u672B\u5C3E `/` \u306E\u6709\u7121\u3067\u610F\u5473\u304C\u5909\u308F\u308B\uFF09","source (trailing `/` matters)"),$("\u8EE2\u9001\u5148","destination")]}),sudo:y("\u4ED6\u306E\u30E6\u30FC\u30B6\u30FC\uFF08\u65E2\u5B9A\u306F root\uFF09\u306E\u6A29\u9650\u3067\u30B3\u30DE\u30F3\u30C9\u3092\u5B9F\u884C\u3059\u308B","Run a command as another user (root by default)",[["-u|--user","\u5B9F\u884C\u3059\u308B\u30E6\u30FC\u30B6\u30FC","run as this user","arg"],["-E|--preserve-env","\u73FE\u5728\u306E\u74B0\u5883\u5909\u6570\u3092\u5F15\u304D\u7D99\u3050","preserve the environment"],["-i|--login","\u30ED\u30B0\u30A4\u30F3\u30B7\u30A7\u30EB\u3068\u3057\u3066\u5B9F\u884C","run a login shell"],["-n|--non-interactive","\u30D1\u30B9\u30EF\u30FC\u30C9\u3092\u5C0B\u306D\u306A\u3044\uFF08\u5FC5\u8981\u306A\u3089\u5931\u6557\uFF09","never prompt for a password"]],{wraps:!0}),env:y("\u74B0\u5883\u5909\u6570\u3092\u8A2D\u5B9A\u3057\u3066\u30B3\u30DE\u30F3\u30C9\u3092\u5B9F\u884C\u3059\u308B\u3002\u5F15\u6570\u306A\u3057\u306A\u3089\u74B0\u5883\u5909\u6570\u3092\u4E00\u89A7\u8868\u793A","Run a command with a modified environment, or print the environment",[["-i|--ignore-environment","\u7A7A\u306E\u74B0\u5883\u304B\u3089\u59CB\u3081\u308B","start with an empty environment"],["-u|--unset","\u6307\u5B9A\u3057\u305F\u5909\u6570\u3092\u9664\u5916","remove a variable","arg"]],{wraps:!0}),nohup:y("\u30ED\u30B0\u30A2\u30A6\u30C8(\u30CF\u30F3\u30B0\u30A2\u30C3\u30D7)\u3057\u3066\u3082\u30B3\u30DE\u30F3\u30C9\u304C\u6B62\u307E\u3089\u306A\u3044\u3088\u3046\u306B\u5B9F\u884C\u3059\u308B","Run a command immune to hangups (survives logout)",[],{wraps:!0}),timeout:y("\u5236\u9650\u6642\u9593\u3092\u8D85\u3048\u305F\u3089\u30B3\u30DE\u30F3\u30C9\u3092\u7D42\u4E86\u3055\u305B\u308B","Run a command with a time limit",[["-s|--signal","\u30BF\u30A4\u30E0\u30A2\u30A6\u30C8\u6642\u306B\u9001\u308B\u30B7\u30B0\u30CA\u30EB","signal to send on timeout","arg"],["-k|--kill-after","\u3055\u3089\u306B\u3053\u306E\u6642\u9593\u7D4C\u3063\u3066\u3082\u7D42\u308F\u3089\u306A\u3051\u308C\u3070 KILL","also send KILL after this long","arg"]],{wraps:!0}),nice:y("\u512A\u5148\u5EA6\u3092\u5909\u3048\u3066\u30B3\u30DE\u30F3\u30C9\u3092\u5B9F\u884C\u3059\u308B","Run a command with modified priority",[["-n","\u512A\u5148\u5EA6\u306E\u8ABF\u6574\u5024","niceness adjustment","arg"]],{wraps:!0}),watch:y("\u30B3\u30DE\u30F3\u30C9\u3092\u5B9A\u671F\u7684\u306B\u5B9F\u884C\u3057\u3066\u7D50\u679C\u3092\u5168\u753B\u9762\u8868\u793A\u3059\u308B","Run a command periodically and show its output",[["-n|--interval","\u5B9F\u884C\u9593\u9694\uFF08\u79D2\uFF09","interval in seconds","arg"]],{wraps:!0}),which:y("\u30B3\u30DE\u30F3\u30C9\u306E\u5B9F\u884C\u30D5\u30A1\u30A4\u30EB\u306E\u30D1\u30B9\u3092\u8868\u793A\u3059\u308B","Show the full path of a command"),jq:y("JSON \u3092\u6574\u5F62\u30FB\u62BD\u51FA\u30FB\u5909\u63DB\u3059\u308B","Filter and transform JSON",[["-r|--raw-output","\u6587\u5B57\u5217\u3092\u30AF\u30A9\u30FC\u30C8\u306A\u3057\u3067\u51FA\u529B","output raw strings without quotes"],["-c|--compact-output","1\u884C\u306B\u8A70\u3081\u3066\u51FA\u529B","compact output"],["-e|--exit-status","\u7D50\u679C\u304C null/false \u306A\u3089\u5931\u6557\u306E\u7D42\u4E86\u30B9\u30C6\u30FC\u30BF\u30B9","set exit status from the output"],["-n|--null-input","\u5165\u529B\u3092\u8AAD\u307E\u306A\u3044","do not read input"],["-s|--slurp","\u5168\u5165\u529B\u30921\u3064\u306E\u914D\u5217\u3068\u3057\u3066\u8AAD\u3080","read all inputs into one array"],["--arg","jq \u306E\u5909\u6570\u306B\u6587\u5B57\u5217\u3092\u6E21\u3059\uFF08`--arg name value`\uFF09","pass a string variable (`--arg name value`)","arg"]],{positional:[$("jq \u30D5\u30A3\u30EB\u30BF\uFF08\u4F8B: `.items[].name`\uFF09","jq filter (e.g. `.items[].name`)"),$("\u5165\u529B JSON \u30D5\u30A1\u30A4\u30EB","input JSON file")],positionalLang:["jq"]}),ps:y("\u5B9F\u884C\u4E2D\u306E\u30D7\u30ED\u30BB\u30B9\u3092\u8868\u793A\u3059\u308B","Report running processes",[["-e|-A","\u5168\u3066\u306E\u30D7\u30ED\u30BB\u30B9\u3092\u8868\u793A","select all processes"],["-f","\u8A73\u7D30\u5F62\u5F0F\u3067\u8868\u793A","full format"],["-p","\u6307\u5B9A\u3057\u305F PID \u306E\u307F","only these PIDs","arg"],["-o","\u8868\u793A\u3059\u308B\u5217\u3092\u6307\u5B9A","output columns","arg"]]),pgrep:y("\u540D\u524D\u306B\u4E00\u81F4\u3059\u308B\u30D7\u30ED\u30BB\u30B9\u306E PID \u3092\u8868\u793A\u3059\u308B","Find PIDs by process name",[["-f","\u30B3\u30DE\u30F3\u30C9\u30E9\u30A4\u30F3\u5168\u4F53\u3067\u7167\u5408","match the full command line"]]),pkill:y("\u540D\u524D\u306B\u4E00\u81F4\u3059\u308B\u30D7\u30ED\u30BB\u30B9\u306B\u30B7\u30B0\u30CA\u30EB\u3092\u9001\u308B","Signal processes by name",[["-f","\u30B3\u30DE\u30F3\u30C9\u30E9\u30A4\u30F3\u5168\u4F53\u3067\u7167\u5408","match the full command line"]]),seq:y("\u9023\u7D9A\u3057\u305F\u6570\u5024\u30921\u884C\u305A\u3064\u51FA\u529B\u3059\u308B","Print a sequence of numbers",[["-w|--equal-width","\u6841\u6570\u3092\u30BC\u30ED\u57CB\u3081\u3067\u63C3\u3048\u308B","pad with leading zeros"],["-s|--separator","\u533A\u5207\u308A\u6587\u5B57","separator","arg"]],{positional:[$("\u958B\u59CB\u5024\uFF08\u5F15\u6570\u304C1\u3064\u306A\u3089\u7D42\u4E86\u5024\uFF09","first (or last, if only one argument)"),$("\u5897\u5206\u307E\u305F\u306F\u7D42\u4E86\u5024","increment or last")]}),mktemp:y("\u4E00\u610F\u306A\u540D\u524D\u306E\u4E00\u6642\u30D5\u30A1\u30A4\u30EB\u3092\u4F5C\u308A\u3001\u305D\u306E\u30D1\u30B9\u3092\u8868\u793A\u3059\u308B","Create a unique temporary file and print its path",[["-d|--directory","\u30D5\u30A1\u30A4\u30EB\u3067\u306F\u306A\u304F\u4E00\u6642\u30C7\u30A3\u30EC\u30AF\u30C8\u30EA\u3092\u4F5C\u308B","create a directory"],["-t","TMPDIR \u4EE5\u4E0B\u306B\u30C6\u30F3\u30D7\u30EC\u30FC\u30C8\u3067\u4F5C\u308B","use TMPDIR with a template"]]),stat:y("\u30D5\u30A1\u30A4\u30EB\u306E\u8A73\u7D30\u60C5\u5831\uFF08\u30B5\u30A4\u30BA\u30FB\u6A29\u9650\u30FB\u65E5\u6642\u306A\u3069\uFF09\u3092\u8868\u793A\u3059\u308B","Display file status (size, permissions, times\u2026)",[["-c|--format","\u8868\u793A\u66F8\u5F0F\uFF08\u4F8B: `%s` \u306F\u30B5\u30A4\u30BA\uFF09","output format (e.g. `%s` = size)","arg"]]),du:y("\u30D5\u30A1\u30A4\u30EB\u30FB\u30C7\u30A3\u30EC\u30AF\u30C8\u30EA\u306E\u30C7\u30A3\u30B9\u30AF\u4F7F\u7528\u91CF\u3092\u8868\u793A\u3059\u308B","Estimate disk usage",[["-s|--summarize","\u5408\u8A08\u3060\u3051\u3092\u8868\u793A","show only a total"],["-h|--human-readable","\u8AAD\u307F\u3084\u3059\u3044\u5358\u4F4D\u3067\u8868\u793A","human-readable sizes"],["-d|--max-depth","\u8868\u793A\u3059\u308B\u968E\u5C64\u306E\u6DF1\u3055","depth limit","arg"]]),df:y("\u30D5\u30A1\u30A4\u30EB\u30B7\u30B9\u30C6\u30E0\u306E\u7A7A\u304D\u5BB9\u91CF\u3092\u8868\u793A\u3059\u308B","Report file system disk space",[["-h|--human-readable","\u8AAD\u307F\u3084\u3059\u3044\u5358\u4F4D\u3067\u8868\u793A","human-readable sizes"]]),tput:y("\u7AEF\u672B\u306E\u6A5F\u80FD\uFF08\u8272\u30FB\u30AB\u30FC\u30BD\u30EB\u4F4D\u7F6E\u306A\u3069\uFF09\u3092\u64CD\u4F5C\u3059\u308B","Query or control terminal capabilities (colors, cursor\u2026)"),less:y("\u30D5\u30A1\u30A4\u30EB\u3092\u30DA\u30FC\u30B8\u5358\u4F4D\u3067\u30B9\u30AF\u30ED\u30FC\u30EB\u8868\u793A\u3059\u308B","View text one screen at a time"),file:y("\u30D5\u30A1\u30A4\u30EB\u306E\u7A2E\u985E\u3092\u5224\u5B9A\u3057\u3066\u8868\u793A\u3059\u308B","Determine file type"),install:y("\u30D5\u30A1\u30A4\u30EB\u3092\u30B3\u30D4\u30FC\u3057\u3001\u6A29\u9650\u3084\u6240\u6709\u8005\u3092\u8A2D\u5B9A\u3059\u308B","Copy files and set attributes",[["-m|--mode","\u6A29\u9650","permission mode","arg lang:mode"],["-d|--directory","\u30C7\u30A3\u30EC\u30AF\u30C8\u30EA\u3092\u4F5C\u6210","create directories"]]),tac:y("\u30D5\u30A1\u30A4\u30EB\u3092\u672B\u5C3E\u306E\u884C\u304B\u3089\u9006\u9806\u306B\u8868\u793A\u3059\u308B","Print files in reverse line order"),rev:y("\u5404\u884C\u306E\u6587\u5B57\u3092\u5DE6\u53F3\u53CD\u8EE2\u3059\u308B","Reverse characters of each line"),nl:y("\u884C\u756A\u53F7\u3092\u4ED8\u3051\u3066\u8868\u793A\u3059\u308B","Number lines of files"),paste:y("\u8907\u6570\u30D5\u30A1\u30A4\u30EB\u306E\u884C\u3092\u6A2A\u306B\u9023\u7D50\u3059\u308B","Merge lines of files side by side",[["-d|--delimiters","\u533A\u5207\u308A\u6587\u5B57","delimiter","arg"],["-s|--serial","1\u30D5\u30A1\u30A4\u30EB\u306E\u5168\u884C\u30921\u884C\u306B\u9023\u7D50","join all lines of each file"]]),column:y("\u5165\u529B\u3092\u5217\u306B\u63C3\u3048\u3066\u8868\u793A\u3059\u308B","Format input into columns",[["-t|--table","\u8868\u5F62\u5F0F\u306B\u63C3\u3048\u308B","create a table"],["-s|--separator","\u5165\u529B\u306E\u533A\u5207\u308A\u6587\u5B57","input separator","arg"]]),comm:y("\u30BD\u30FC\u30C8\u6E08\u307F\u306E2\u30D5\u30A1\u30A4\u30EB\u3092\u6BD4\u8F03\u3057\u3001\u5171\u901A\u884C\u30FB\u7247\u65B9\u3060\u3051\u306E\u884C\u3092\u8868\u793A\u3059\u308B","Compare two sorted files line by line"),split:y("\u30D5\u30A1\u30A4\u30EB\u3092\u8907\u6570\u306B\u5206\u5272\u3059\u308B","Split a file into pieces",[["-l|--lines","1\u30D5\u30A1\u30A4\u30EB\u3042\u305F\u308A\u306E\u884C\u6570","lines per file","arg"],["-b|--bytes","1\u30D5\u30A1\u30A4\u30EB\u3042\u305F\u308A\u306E\u30B5\u30A4\u30BA","size per file","arg"]]),md5sum:y("MD5 \u30CF\u30C3\u30B7\u30E5\u5024\u3092\u8A08\u7B97\u3059\u308B","Compute MD5 checksums",[["-c|--check","\u30CF\u30C3\u30B7\u30E5\u5024\u306E\u4E00\u89A7\u30D5\u30A1\u30A4\u30EB\u3068\u7167\u5408\u3059\u308B","verify against a checksum list"]]),sha256sum:y("SHA-256 \u30CF\u30C3\u30B7\u30E5\u5024\u3092\u8A08\u7B97\u3059\u308B","Compute SHA-256 checksums",[["-c|--check","\u30CF\u30C3\u30B7\u30E5\u5024\u306E\u4E00\u89A7\u30D5\u30A1\u30A4\u30EB\u3068\u7167\u5408\u3059\u308B","verify against a checksum list"]]),base64:y("Base64 \u3067\u30A8\u30F3\u30B3\u30FC\u30C9\u30FB\u30C7\u30B3\u30FC\u30C9\u3059\u308B","Base64 encode or decode",[["-d|--decode","\u30C7\u30B3\u30FC\u30C9\u3059\u308B","decode"],["-w|--wrap","\u6307\u5B9A\u6587\u5B57\u6570\u3067\u6298\u308A\u8FD4\u3059\uFF080 \u3067\u6298\u308A\u8FD4\u3055\u306A\u3044\uFF09","wrap at N columns (0 disables)","arg"]]),bash:y("bash \u30B7\u30A7\u30EB\u3092\u8D77\u52D5\u3059\u308B\uFF08\u30B9\u30AF\u30EA\u30D7\u30C8\u3084\u30B3\u30DE\u30F3\u30C9\u6587\u5B57\u5217\u3092\u5B9F\u884C\uFF09","Run the bash shell (a script or a command string)",[["-c","\u7D9A\u304F\u6587\u5B57\u5217\u3092\u30B3\u30DE\u30F3\u30C9\u3068\u3057\u3066\u5B9F\u884C","run the following string as a command","arg"],["-e","\u30A8\u30E9\u30FC\u3067\u5373\u7D42\u4E86","exit on error"],["-u","\u672A\u5B9A\u7FA9\u306E\u5909\u6570\u3092\u53C2\u7167\u3057\u305F\u3089\u30A8\u30E9\u30FC\u306B\u3059\u308B","treat unset variables as an error"],["-x","\u5B9F\u884C\u3059\u308B\u30B3\u30DE\u30F3\u30C9\u3092\u8868\u793A","trace commands"],["-n","\u69CB\u6587\u30C1\u30A7\u30C3\u30AF\u306E\u307F","syntax check only"],["-o","\u540D\u524D\u3067\u30AA\u30D7\u30B7\u30E7\u30F3\u3092\u6709\u52B9\u306B\u3059\u308B\uFF08`set -o` \u3068\u540C\u3058\uFF09","enable an option by name (as `set -o`)","arg",Pt],["-l|--login","\u30ED\u30B0\u30A4\u30F3\u30B7\u30A7\u30EB\u3068\u3057\u3066\u8D77\u52D5","act as a login shell"],["-i","\u5BFE\u8A71\u30B7\u30A7\u30EB\u3068\u3057\u3066\u8D77\u52D5","act as an interactive shell"],["-s","\u30B3\u30DE\u30F3\u30C9\u3092\u6A19\u6E96\u5165\u529B\u304B\u3089\u8AAD\u3080","read commands from stdin"],["--norc","~/.bashrc \u3092\u8AAD\u307E\u306A\u3044","do not read ~/.bashrc"],["--noprofile","\u30ED\u30B0\u30A4\u30F3\u6642\u306E\u8A2D\u5B9A\u30D5\u30A1\u30A4\u30EB\u3092\u8AAD\u307E\u306A\u3044","do not read the login profile files"]],{positional:[$("\u5B9F\u884C\u3059\u308B\u30B9\u30AF\u30EA\u30D7\u30C8","script to run")]}),sh:y("POSIX \u30B7\u30A7\u30EB\u3092\u8D77\u52D5\u3059\u308B","Run the POSIX shell",[["-c","\u7D9A\u304F\u6587\u5B57\u5217\u3092\u30B3\u30DE\u30F3\u30C9\u3068\u3057\u3066\u5B9F\u884C","run the following string as a command","arg"],["-e","\u30A8\u30E9\u30FC\u3067\u5373\u7D42\u4E86","exit on error"],["-u","\u672A\u5B9A\u7FA9\u306E\u5909\u6570\u3092\u53C2\u7167\u3057\u305F\u3089\u30A8\u30E9\u30FC\u306B\u3059\u308B","treat unset variables as an error"],["-x","\u5B9F\u884C\u3059\u308B\u30B3\u30DE\u30F3\u30C9\u3092\u8868\u793A","trace commands"],["-o","\u540D\u524D\u3067\u30AA\u30D7\u30B7\u30E7\u30F3\u3092\u6709\u52B9\u306B\u3059\u308B\uFF08`set -o` \u3068\u540C\u3058\uFF09","enable an option by name (as `set -o`)","arg",Pt]],{positional:[$("\u5B9F\u884C\u3059\u308B\u30B9\u30AF\u30EA\u30D7\u30C8","script to run")]}),perl:y("Perl \u3092\u5B9F\u884C\u3059\u308B\uFF08`-e` \u3067\u305D\u306E\u5834\u306E\u30B3\u30FC\u30C9\u3092\u5B9F\u884C\u3002sed \u3084 awk \u306E\u4EE3\u308F\u308A\u306E\u30EF\u30F3\u30E9\u30A4\u30CA\u30FC\u306B\u3088\u304F\u4F7F\u3046\uFF09","Run Perl (`-e` runs code given on the command line; common for one-liners instead of sed/awk)",[["-e","\u5B9F\u884C\u3059\u308B Perl \u306E\u30B3\u30FC\u30C9","Perl code to run","arg fills lang:perl"],["-E","\u5B9F\u884C\u3059\u308B Perl \u306E\u30B3\u30FC\u30C9\uFF08say \u306A\u3069\u306E\u65B0\u6A5F\u80FD\u3092\u6709\u52B9\u306B\u3057\u3066\uFF09","Perl code to run, with newer features like say","arg fills lang:perl"],["-n","\u5165\u529B\u306E\u5404\u884C\u306B\u3064\u3044\u3066\u30B3\u30FC\u30C9\u3092\u5B9F\u884C\u3059\u308B\uFF08\u81EA\u52D5\u3067\u306F\u51FA\u529B\u3057\u306A\u3044\uFF09","run the code for each input line (no automatic printing)"],["-p","\u5165\u529B\u306E\u5404\u884C\u306B\u3064\u3044\u3066\u30B3\u30FC\u30C9\u3092\u5B9F\u884C\u3057\u3001`$_` \u3092\u51FA\u529B\u3059\u308B\uFF08sed \u98A8\uFF09","run the code for each line and print `$_` (sed-like)"],["-i","\u30D5\u30A1\u30A4\u30EB\u3092\u76F4\u63A5\u66F8\u304D\u63DB\u3048\u308B\uFF08`-i.bak` \u3067\u30D0\u30C3\u30AF\u30A2\u30C3\u30D7\u3092\u4F5C\u308B\uFF09","edit files in place (`-i.bak` keeps a backup)","attached"],["-l","\u5404\u884C\u672B\u306E\u6539\u884C\u3092\u53D6\u308A\u9664\u304D\u3001print \u3067\u6539\u884C\u3092\u4ED8\u3051\u308B","chomp input lines and add a newline to print"],["-a","\u5404\u884C\u3092\u7A7A\u767D\u3067\u5206\u5272\u3057\u3066 `@F` \u306B\u5165\u308C\u308B\uFF08-n \u304B -p \u3068\u4F7F\u3046\uFF09","split each line into `@F` (with -n or -p)"],["-F","`-a` \u306E\u533A\u5207\u308A\uFF08\u4F8B: `-F:`\u3001`-F,`\uFF09","separator for `-a` (e.g. `-F:`)","attached"],["-0","\u5165\u529B\u306E\u533A\u5207\u308A\uFF08`-0777` \u3067\u30D5\u30A1\u30A4\u30EB\u5168\u4F53\u30921\u3064\u3068\u3057\u3066\u8AAD\u3080\uFF09","input record separator (`-0777` reads whole files)","attached"],["-M","\u30E2\u30B8\u30E5\u30FC\u30EB\u3092\u8AAD\u307F\u8FBC\u3080\uFF08\u4F8B: `-MJSON::PP`\uFF09","load a module (e.g. `-MJSON::PP`)","attached"],["-w","\u8B66\u544A\u3092\u8868\u793A\u3059\u308B","enable warnings"],["-c","\u69CB\u6587\u30C1\u30A7\u30C3\u30AF\u3060\u3051\u3092\u884C\u3046","check syntax only"]],{positional:[$("\u5B9F\u884C\u3059\u308B\u30B9\u30AF\u30EA\u30D7\u30C8\u30D5\u30A1\u30A4\u30EB","script file to run"),ke]}),python3:y("Python 3 \u30A4\u30F3\u30BF\u30D7\u30EA\u30BF\u3092\u5B9F\u884C\u3059\u308B","Run the Python 3 interpreter",[["-c","\u7D9A\u304F\u6587\u5B57\u5217\u3092 Python \u30B3\u30FC\u30C9\u3068\u3057\u3066\u5B9F\u884C","run the string as Python code","arg"],["-m","\u30E2\u30B8\u30E5\u30FC\u30EB\u3092\u30B9\u30AF\u30EA\u30D7\u30C8\u3068\u3057\u3066\u5B9F\u884C","run a module as a script","arg"]]),make:y("Makefile \u306B\u5F93\u3063\u3066\u30D3\u30EB\u30C9\u3092\u5B9F\u884C\u3059\u308B","Build targets from a Makefile",[["-C","\u3053\u306E\u30C7\u30A3\u30EC\u30AF\u30C8\u30EA\u3067\u5B9F\u884C","run in this directory","arg"],["-j|--jobs","\u4E26\u5217\u30B8\u30E7\u30D6\u6570","parallel jobs","arg"],["-f|--file","\u4F7F\u3046 Makefile","makefile to use","arg"]],{positional:[$("\u30D3\u30EB\u30C9\u3059\u308B\u30BF\u30FC\u30B2\u30C3\u30C8","target to build")]}),git:y("Git \u30D0\u30FC\u30B8\u30E7\u30F3\u7BA1\u7406\u30B7\u30B9\u30C6\u30E0","Git version control",[["-C","\u3053\u306E\u30C7\u30A3\u30EC\u30AF\u30C8\u30EA\u3067\u5B9F\u884C","run as if started in this directory","arg"]],{subcommands:{clone:y("\u30EA\u30DD\u30B8\u30C8\u30EA\u3092\u8907\u88FD\u3059\u308B","Clone a repository",[["--depth","\u53D6\u5F97\u3059\u308B\u5C65\u6B74\u306E\u6DF1\u3055\uFF08\u6D45\u3044\u30AF\u30ED\u30FC\u30F3\uFF09","shallow clone depth","arg"],["-b|--branch","\u30C1\u30A7\u30C3\u30AF\u30A2\u30A6\u30C8\u3059\u308B\u30D6\u30E9\u30F3\u30C1","branch to check out","arg"]]),add:y("\u5909\u66F4\u3092\u30B9\u30C6\u30FC\u30B8\u3059\u308B","Stage changes",[["-A|--all","\u5168\u3066\u306E\u5909\u66F4\u3092\u30B9\u30C6\u30FC\u30B8","stage all changes"],["-p|--patch","\u5909\u66F4\u3092\u5BFE\u8A71\u7684\u306B\u9078\u3093\u3067\u30B9\u30C6\u30FC\u30B8","stage hunks interactively"]]),commit:y("\u30B9\u30C6\u30FC\u30B8\u3057\u305F\u5909\u66F4\u3092\u30B3\u30DF\u30C3\u30C8\u3059\u308B","Record staged changes",[["-m|--message","\u30B3\u30DF\u30C3\u30C8\u30E1\u30C3\u30BB\u30FC\u30B8","commit message","arg"],["-a|--all","\u8FFD\u8DE1\u4E2D\u30D5\u30A1\u30A4\u30EB\u306E\u5909\u66F4\u3092\u81EA\u52D5\u3067\u30B9\u30C6\u30FC\u30B8","stage tracked changes automatically"],["--amend","\u76F4\u524D\u306E\u30B3\u30DF\u30C3\u30C8\u3092\u4FEE\u6B63","amend the previous commit"]]),push:y("\u30EA\u30E2\u30FC\u30C8\u306B\u9001\u4FE1\u3059\u308B","Push to a remote",[["-u|--set-upstream","\u4E0A\u6D41\u30D6\u30E9\u30F3\u30C1\u3068\u3057\u3066\u8A2D\u5B9A","set upstream"],["-f|--force","\u5F37\u5236\u7684\u306B\u4E0A\u66F8\u304D\uFF08\u6CE8\u610F\uFF09","force push (careful!)"],["--tags","\u30BF\u30B0\u3082\u9001\u4FE1","push tags"]]),pull:y("\u30EA\u30E2\u30FC\u30C8\u304B\u3089\u53D6\u5F97\u3057\u3066\u7D71\u5408\u3059\u308B","Fetch and integrate from a remote",[["--rebase","\u30DE\u30FC\u30B8\u3067\u306F\u306A\u304F\u30EA\u30D9\u30FC\u30B9\u3067\u7D71\u5408","rebase instead of merge"]]),fetch:y("\u30EA\u30E2\u30FC\u30C8\u304B\u3089\u53D6\u5F97\u3059\u308B\uFF08\u7D71\u5408\u306F\u3057\u306A\u3044\uFF09","Download objects from a remote",[["--all","\u5168\u3066\u306E\u30EA\u30E2\u30FC\u30C8\u304B\u3089\u53D6\u5F97","fetch all remotes"],["--prune","\u524A\u9664\u3055\u308C\u305F\u30EA\u30E2\u30FC\u30C8\u30D6\u30E9\u30F3\u30C1\u3092\u6383\u9664","prune deleted branches"]]),checkout:y("\u30D6\u30E9\u30F3\u30C1\u3092\u5207\u308A\u66FF\u3048\u308B\u30FB\u30D5\u30A1\u30A4\u30EB\u3092\u5FA9\u5143\u3059\u308B","Switch branches or restore files",[["-b","\u65B0\u3057\u3044\u30D6\u30E9\u30F3\u30C1\u3092\u4F5C\u3063\u3066\u5207\u308A\u66FF\u3048\u308B","create and switch to a new branch","arg"]]),switch:y("\u30D6\u30E9\u30F3\u30C1\u3092\u5207\u308A\u66FF\u3048\u308B","Switch branches",[["-c|--create","\u65B0\u3057\u3044\u30D6\u30E9\u30F3\u30C1\u3092\u4F5C\u3063\u3066\u5207\u308A\u66FF\u3048\u308B","create a new branch","arg"]]),branch:y("\u30D6\u30E9\u30F3\u30C1\u3092\u4E00\u89A7\u30FB\u4F5C\u6210\u30FB\u524A\u9664\u3059\u308B","List, create or delete branches",[["-d|--delete","\u30D6\u30E9\u30F3\u30C1\u3092\u524A\u9664","delete a branch"],["-D","\u5F37\u5236\u524A\u9664","force delete"],["-a|--all","\u30EA\u30E2\u30FC\u30C8\u30D6\u30E9\u30F3\u30C1\u3082\u8868\u793A","list remote branches too"]]),status:y("\u4F5C\u696D\u30C4\u30EA\u30FC\u306E\u72B6\u614B\u3092\u8868\u793A\u3059\u308B","Show working tree status",[["-s|--short","\u77ED\u3044\u5F62\u5F0F","short format"],["--porcelain","\u30B9\u30AF\u30EA\u30D7\u30C8\u5411\u3051\u306E\u5B89\u5B9A\u3057\u305F\u5F62\u5F0F","stable machine-readable format"]]),log:y("\u30B3\u30DF\u30C3\u30C8\u5C65\u6B74\u3092\u8868\u793A\u3059\u308B","Show commit logs",[["--oneline","1\u30B3\u30DF\u30C3\u30C81\u884C\u3067\u8868\u793A","one line per commit"],["-n","\u8868\u793A\u3059\u308B\u4EF6\u6570","number of commits","arg"],["--graph","\u30D6\u30E9\u30F3\u30C1\u3092\u30B0\u30E9\u30D5\u8868\u793A","draw a graph"],["--pretty|--format","\u5404\u30B3\u30DF\u30C3\u30C8\u306E\u8868\u793A\u5F62\u5F0F","how each commit is shown","arg lang:gitformat"],["--date","\u65E5\u6642\u306E\u8868\u793A\u5F62\u5F0F","how dates are shown","arg lang:gitdate"],["--since|--after","\u3053\u306E\u65E5\u6642\u4EE5\u964D\u306E\u30B3\u30DF\u30C3\u30C8\u3060\u3051","commits after this date","arg"],["--until|--before","\u3053\u306E\u65E5\u6642\u4EE5\u524D\u306E\u30B3\u30DF\u30C3\u30C8\u3060\u3051","commits before this date","arg"],["--author","\u4F5C\u8005\u3067\u7D5E\u308B","filter by author","arg"],["--grep","\u30B3\u30DF\u30C3\u30C8\u30E1\u30C3\u30BB\u30FC\u30B8\u3067\u7D5E\u308B","filter by message","arg"],["--no-merges","\u30DE\u30FC\u30B8\u30B3\u30DF\u30C3\u30C8\u3092\u9664\u304F","exclude merge commits"],["--all","\u3059\u3079\u3066\u306E\u30D6\u30E9\u30F3\u30C1\u306E\u5C65\u6B74","history of all branches"],["-p|--patch","\u5DEE\u5206\u3082\u8868\u793A","show the diff"]]),diff:y("\u5DEE\u5206\u3092\u8868\u793A\u3059\u308B","Show changes",[["--cached|--staged","\u30B9\u30C6\u30FC\u30B8\u6E08\u307F\u306E\u5DEE\u5206","staged changes"],["--stat","\u5909\u66F4\u306E\u7D71\u8A08\u3060\u3051\u8868\u793A","show a diffstat"],["--name-only","\u30D5\u30A1\u30A4\u30EB\u540D\u306E\u307F\u8868\u793A","names only"]]),merge:y("\u30D6\u30E9\u30F3\u30C1\u3092\u7D71\u5408\u3059\u308B","Merge branches",[["--no-ff","\u65E9\u9001\u308A\u305B\u305A\u30DE\u30FC\u30B8\u30B3\u30DF\u30C3\u30C8\u3092\u4F5C\u308B","always create a merge commit"]]),rebase:y("\u30B3\u30DF\u30C3\u30C8\u3092\u5225\u306E\u57FA\u70B9\u306B\u4ED8\u3051\u66FF\u3048\u308B","Reapply commits on another base",[["-i|--interactive","\u5BFE\u8A71\u7684\u306B\u30EA\u30D9\u30FC\u30B9","interactive rebase"]]),reset:y("HEAD \u3084\u30B9\u30C6\u30FC\u30B8\u3092\u6307\u5B9A\u72B6\u614B\u306B\u623B\u3059","Reset HEAD or the index",[["--hard","\u4F5C\u696D\u30C4\u30EA\u30FC\u3082\u542B\u3081\u3066\u5B8C\u5168\u306B\u623B\u3059\uFF08\u5909\u66F4\u306F\u5931\u308F\u308C\u308B\uFF09","discard all changes (destructive)"],["--soft","\u30B3\u30DF\u30C3\u30C8\u3060\u3051\u623B\u3057\u3001\u5909\u66F4\u306F\u30B9\u30C6\u30FC\u30B8\u306B\u6B8B\u3059","keep changes staged"]]),stash:y("\u5909\u66F4\u3092\u4E00\u6642\u9000\u907F\u3059\u308B","Stash changes away"),tag:y("\u30BF\u30B0\u3092\u4F5C\u6210\u30FB\u4E00\u89A7\u8868\u793A\u3059\u308B","Create or list tags",[["-a","\u6CE8\u91C8\u4ED8\u304D\u30BF\u30B0\u3092\u4F5C\u308B","annotated tag","arg"],["-m","\u30BF\u30B0\u30E1\u30C3\u30BB\u30FC\u30B8","tag message","arg"]]),"rev-parse":y("\u30EA\u30D3\u30B8\u30E7\u30F3\u3084\u30EA\u30DD\u30B8\u30C8\u30EA\u60C5\u5831\u3092\u89E3\u6C7A\u3057\u3066\u8868\u793A\u3059\u308B","Resolve revisions and repository info",[["--show-toplevel","\u30EA\u30DD\u30B8\u30C8\u30EA\u306E\u30EB\u30FC\u30C8\u30C7\u30A3\u30EC\u30AF\u30C8\u30EA\u3092\u8868\u793A","print the repository root"],["--abbrev-ref","\u77ED\u3044\u30D6\u30E9\u30F3\u30C1\u540D\u3067\u8868\u793A\uFF08`HEAD` \u306A\u3089\u73FE\u5728\u306E\u30D6\u30E9\u30F3\u30C1\uFF09","short ref name (`HEAD` = current branch)"],["--short","\u77ED\u3044\u30CF\u30C3\u30B7\u30E5\u3092\u8868\u793A","short hash"]]),remote:y("\u30EA\u30E2\u30FC\u30C8\u3092\u7BA1\u7406\u3059\u308B","Manage remotes",[["-v","URL \u3082\u8868\u793A","show URLs"]]),config:y("\u8A2D\u5B9A\u3092\u53D6\u5F97\u30FB\u5909\u66F4\u3059\u308B","Get or set configuration",[["--global","\u30E6\u30FC\u30B6\u30FC\u5168\u4F53\u306E\u8A2D\u5B9A","user-wide config"],["--get","\u5024\u3092\u53D6\u5F97","get a value"]])}}),docker:y("Docker \u30B3\u30F3\u30C6\u30CA\u3092\u64CD\u4F5C\u3059\u308B","Manage Docker containers",[],{subcommands:{run:y("\u30A4\u30E1\u30FC\u30B8\u304B\u3089\u65B0\u3057\u3044\u30B3\u30F3\u30C6\u30CA\u3092\u8D77\u52D5\u3059\u308B","Run a new container",[["-d|--detach","\u30D0\u30C3\u30AF\u30B0\u30E9\u30A6\u30F3\u30C9\u3067\u5B9F\u884C","run in the background"],["-it","\u5BFE\u8A71\u7684\u306B\u7AEF\u672B\u4ED8\u304D\u3067\u5B9F\u884C\uFF08`-i` \u3068 `-t`\uFF09","interactive with a TTY (`-i` + `-t`)"],["-i|--interactive","\u6A19\u6E96\u5165\u529B\u3092\u958B\u3044\u305F\u307E\u307E\u306B\u3059\u308B","keep stdin open"],["-t|--tty","\u7591\u4F3C\u7AEF\u672B\u3092\u5272\u308A\u5F53\u3066\u308B","allocate a TTY"],["--rm","\u7D42\u4E86\u5F8C\u306B\u30B3\u30F3\u30C6\u30CA\u3092\u524A\u9664","remove the container on exit"],["-p|--publish","\u30DD\u30FC\u30C8\u516C\u958B\uFF08`\u30DB\u30B9\u30C8:\u30B3\u30F3\u30C6\u30CA`\uFF09","publish a port (`host:container`)","arg"],["-v|--volume","\u30DC\u30EA\u30E5\u30FC\u30E0\u3092\u30DE\u30A6\u30F3\u30C8\uFF08`\u30DB\u30B9\u30C8:\u30B3\u30F3\u30C6\u30CA`\uFF09","bind-mount a volume (`host:container`)","arg"],["-e|--env","\u74B0\u5883\u5909\u6570\u3092\u8A2D\u5B9A","set an environment variable","arg"],["--name","\u30B3\u30F3\u30C6\u30CA\u540D","container name","arg"],["-w|--workdir","\u4F5C\u696D\u30C7\u30A3\u30EC\u30AF\u30C8\u30EA","working directory","arg"]]),build:y("Dockerfile \u304B\u3089\u30A4\u30E1\u30FC\u30B8\u3092\u30D3\u30EB\u30C9\u3059\u308B","Build an image from a Dockerfile",[["-t|--tag","\u30A4\u30E1\u30FC\u30B8\u540D\u3068\u30BF\u30B0","name and tag","arg"],["-f|--file","Dockerfile \u306E\u30D1\u30B9","Dockerfile path","arg"]]),exec:y("\u5B9F\u884C\u4E2D\u306E\u30B3\u30F3\u30C6\u30CA\u5185\u3067\u30B3\u30DE\u30F3\u30C9\u3092\u5B9F\u884C\u3059\u308B","Run a command in a running container",[["-it","\u5BFE\u8A71\u7684\u306B\u7AEF\u672B\u4ED8\u304D\u3067\u5B9F\u884C","interactive with a TTY"],["-i|--interactive","\u6A19\u6E96\u5165\u529B\u3092\u958B\u3044\u305F\u307E\u307E\u306B\u3059\u308B","keep stdin open"],["-t|--tty","\u7591\u4F3C\u7AEF\u672B\u3092\u5272\u308A\u5F53\u3066\u308B","allocate a TTY"]]),ps:y("\u30B3\u30F3\u30C6\u30CA\u4E00\u89A7\u3092\u8868\u793A\u3059\u308B","List containers",[["-a|--all","\u505C\u6B62\u4E2D\u306E\u3082\u306E\u3082\u8868\u793A","show all containers"],["-q|--quiet","ID \u3060\u3051\u8868\u793A","only IDs"]]),images:y("\u30A4\u30E1\u30FC\u30B8\u4E00\u89A7\u3092\u8868\u793A\u3059\u308B","List images"),pull:y("\u30A4\u30E1\u30FC\u30B8\u3092\u53D6\u5F97\u3059\u308B","Pull an image"),push:y("\u30A4\u30E1\u30FC\u30B8\u3092\u9001\u4FE1\u3059\u308B","Push an image"),logs:y("\u30B3\u30F3\u30C6\u30CA\u306E\u30ED\u30B0\u3092\u8868\u793A\u3059\u308B","Fetch container logs",[["-f|--follow","\u30ED\u30B0\u3092\u8FFD\u3044\u7D9A\u3051\u308B","follow log output"]]),stop:y("\u30B3\u30F3\u30C6\u30CA\u3092\u505C\u6B62\u3059\u308B","Stop containers"),rm:y("\u30B3\u30F3\u30C6\u30CA\u3092\u524A\u9664\u3059\u308B","Remove containers",[["-f|--force","\u5B9F\u884C\u4E2D\u3067\u3082\u5F37\u5236\u524A\u9664","force removal"]]),compose:y("\u8907\u6570\u30B3\u30F3\u30C6\u30CA\u306E\u69CB\u6210\uFF08compose.yaml\uFF09\u3092\u64CD\u4F5C\u3059\u308B","Manage multi-container apps (compose.yaml)")}}),npm:y("Node.js \u306E\u30D1\u30C3\u30B1\u30FC\u30B8\u30DE\u30CD\u30FC\u30B8\u30E3","Node.js package manager",[],{subcommands:{install:y("\u4F9D\u5B58\u30D1\u30C3\u30B1\u30FC\u30B8\u3092\u30A4\u30F3\u30B9\u30C8\u30FC\u30EB\u3059\u308B","Install dependencies",[["-D|--save-dev","\u958B\u767A\u7528\u4F9D\u5B58\u3068\u3057\u3066\u8FFD\u52A0","save as a dev dependency"],["-g|--global","\u30B0\u30ED\u30FC\u30D0\u30EB\u306B\u30A4\u30F3\u30B9\u30C8\u30FC\u30EB","install globally"]]),ci:y("lock \u30D5\u30A1\u30A4\u30EB\u901A\u308A\u306B\u30AF\u30EA\u30FC\u30F3\u30A4\u30F3\u30B9\u30C8\u30FC\u30EB\u3059\u308B","Clean install from the lock file"),run:y("package.json \u306E scripts \u3092\u5B9F\u884C\u3059\u308B","Run a package.json script"),test:y("\u30C6\u30B9\u30C8\u30B9\u30AF\u30EA\u30D7\u30C8\u3092\u5B9F\u884C\u3059\u308B","Run the test script")}})};var Wa={alpha:["\u82F1\u5B57","letters"],digit:["\u6570\u5B57","digits"],alnum:["\u82F1\u6570\u5B57","letters and digits"],upper:["\u5927\u6587\u5B57","uppercase letters"],lower:["\u5C0F\u6587\u5B57","lowercase letters"],space:["\u7A7A\u767D\u6587\u5B57","whitespace"],blank:["\u30B9\u30DA\u30FC\u30B9\u3068\u30BF\u30D6","spaces and tabs"],punct:["\u8A18\u53F7","punctuation"],xdigit:["16\u9032\u6570\u5B57","hex digits"],cntrl:["\u5236\u5FA1\u6587\u5B57","control characters"],print:["\u8868\u793A\u53EF\u80FD\u306A\u6587\u5B57","printable characters"],graph:["\u7A7A\u767D\u4EE5\u5916\u306E\u8868\u793A\u53EF\u80FD\u306A\u6587\u5B57","visible characters"]},zs={w:{ja:"\u82F1\u6570\u5B57\u307E\u305F\u306F\u30A2\u30F3\u30C0\u30FC\u30B9\u30B3\u30A21\u6587\u5B57",en:"a word character (letter, digit or underscore)",gnu:!0},W:{ja:"\u82F1\u6570\u5B57\u3068\u30A2\u30F3\u30C0\u30FC\u30B9\u30B3\u30A2\u4EE5\u5916\u306E1\u6587\u5B57",en:"a non-word character",gnu:!0},s:{ja:"\u7A7A\u767D\u6587\u5B571\u6587\u5B57",en:"a whitespace character",gnu:!0},S:{ja:"\u7A7A\u767D\u4EE5\u5916\u306E1\u6587\u5B57",en:"a non-whitespace character",gnu:!0},d:{ja:"\u6570\u5B571\u6587\u5B57",en:"a digit",gnu:!1},D:{ja:"\u6570\u5B57\u4EE5\u5916\u306E1\u6587\u5B57",en:"a non-digit",gnu:!1},b:{ja:"\u5358\u8A9E\u306E\u5883\u754C\uFF08\u6587\u5B57\u306F\u6D88\u8CBB\u3057\u306A\u3044\uFF09",en:"a word boundary (matches no character)",gnu:!0},B:{ja:"\u5358\u8A9E\u306E\u5883\u754C\u3067\u306F\u306A\u3044\u4F4D\u7F6E",en:"a position that is not a word boundary",gnu:!0},"<":{ja:"\u5358\u8A9E\u306E\u5148\u982D",en:"the start of a word",gnu:!0},">":{ja:"\u5358\u8A9E\u306E\u672B\u5C3E",en:"the end of a word",gnu:!0},A:{ja:"\u6587\u5B57\u5217\u306E\u5148\u982D",en:"the start of the subject",gnu:!1},z:{ja:"\u6587\u5B57\u5217\u306E\u672B\u5C3E",en:"the end of the subject",gnu:!1},Z:{ja:"\u6587\u5B57\u5217\u306E\u672B\u5C3E\uFF08\u672B\u5C3E\u306E\u6539\u884C\u306E\u524D\u3082\u53EF\uFF09",en:"the end of the subject (or before a final newline)",gnu:!1},t:{ja:"\u30BF\u30D6",en:"a tab",gnu:!1},n:{ja:"\u6539\u884C",en:"a newline",gnu:!1},r:{ja:"\u5FA9\u5E30\u6587\u5B57(CR)",en:"a carriage return",gnu:!1}},Ke={t:["\u30BF\u30D6","a tab"],n:["\u6539\u884C","a newline"],r:["\u5FA9\u5E30\u6587\u5B57(CR)","a carriage return"],f:["\u6539\u30DA\u30FC\u30B8","a form feed"],v:["\u5782\u76F4\u30BF\u30D6","a vertical tab"]};function Se(s,e,t,n={}){let r={src:s,i:0,flavor:e,groups:0,s:A(t),literals:new Set,sedEscapes:!!n.sedEscapes};return Vs(Ws(r,0),r)}function Va(s){let{src:e,i:t,flavor:n}=s;return n==="bre"?e.startsWith("\\(",t)?2:0:e[t]==="("?1:0}function kn(s){let{src:e,i:t,flavor:n}=s;return n==="bre"?e.startsWith("\\)",t)?2:0:e[t]===")"?1:0}function Ds(s){let{src:e,i:t,flavor:n}=s;return n==="bre"?e.startsWith("\\|",t)?2:0:e[t]==="|"?1:0}function Ja(s,e){let{src:t,i:n,flavor:r}=s,a=0;if(t[n]==="*"&&!(r==="bre"&&e))a=1;else if(r!=="bre"&&(t[n]==="+"||t[n]==="?"))a=1;else if(r==="bre"&&(t.startsWith("\\+",n)||t.startsWith("\\?",n)))a=2;else if(r!=="bre"&&t[n]==="{"){let o=/^\{(\d*)(,?)(\d*)\}/.exec(t.slice(n));o&&(o[1]||o[3])&&(a=o[0].length)}else if(r==="bre"&&t.startsWith("\\{",n)){let o=/^\\\{(\d*)(,?)(\d*)\\\}/.exec(t.slice(n));o&&(o[1]||o[3])&&(a=o[0].length)}return a&&r==="pcre"&&(t[n+a]==="?"||t[n+a]==="+")&&a++,a}function Ws(s,e){let{s:t}=s,n=[],r=()=>n.length===0||n[n.length-1].kind==="operator"&&n[n.length-1].label==="|";for(;s.i<s.src.length;){let a=s.i,o=s.src[a];if(e>0&&kn(s))return n;let l;if(l=Ds(s)){s.i+=l,n.push({start:a,end:s.i,kind:"operator",label:"|",explanation:t("`|`: \u5DE6\u53F3\u3069\u3061\u3089\u304B\u306B\u4E00\u81F4\u3059\u308C\u3070\u3088\u3044\uFF08\u307E\u305F\u306F\uFF09","`|`: either the left or the right side (or)"),children:[]});continue}if(l=Ja(s,r())){s.i+=l,n.push(Ha(s,a,n[n.length-1]));continue}if(l=Va(s)){n.push(Ga(s,l));continue}if(o==="["){n.push(Ya(s));continue}if(o==="\\"){n.push(Za(s));continue}s.i++,o==="."?n.push({start:a,end:s.i,kind:"pattern",explanation:t("`.`: \u4EFB\u610F\u306E1\u6587\u5B57","`.`: any single character"),children:[]}):o==="^"&&(s.flavor!=="bre"||r())?n.push({start:a,end:s.i,kind:"keyword",explanation:t("`^`: \u884C\u306E\u5148\u982D","`^`: start of the line"),children:[]}):o==="$"&&(s.flavor!=="bre"||s.i===s.src.length||kn(s)||Ds(s))?n.push({start:a,end:s.i,kind:"keyword",explanation:t("`$`: \u884C\u306E\u672B\u5C3E","`$`: end of the line"),children:[]}):s.flavor==="bre"&&"+?{}()|".includes(o)?n.push({start:a,end:s.i,kind:"string",explanation:t(`\u6587\u5B57\u300C${o}\u300D\u305D\u306E\u3082\u306E\uFF08\u57FA\u672C\u6B63\u898F\u8868\u73FE\u3067\u306F \`${o}\` \u306F\u7279\u5225\u306A\u610F\u5473\u3092\u6301\u305F\u306A\u3044\u3002\`-E\` \u3092\u4ED8\u3051\u308B\u3068\u62E1\u5F35\u6B63\u898F\u8868\u73FE\u306E\u8A18\u53F7\u306B\u306A\u308B\uFF09`,`A literal "${o}" (in basic regex \`${o}\` is not special; with \`-E\` it is an operator)`),children:[]}):n.push(Ba(s,a,o))}return n}function Ba(s,e,t){let n={start:e,end:s.i,kind:"string",explanation:s.s(`\u6587\u5B57\u300C${t}\u300D`,`Literal "${t}"`),children:[]};return s.literals.add(n),n}function Vs(s,e){let t=[],n=r=>r?.kind==="operator"&&r.label!=="|";return s.forEach((r,a)=>{r.children=Vs(r.children,e);let o=t[t.length-1];if(o&&e.literals.has(o)&&e.literals.has(r)&&o.end===r.start&&!n(s[a+1])){o.end=r.end;let l=e.src.slice(o.start,o.end);o.explanation=e.s(`\u6587\u5B57\u5217\u300C${l}\u300D`,`Literal "${l}"`);return}t.push(r)}),t}function Ha(s,e,t){let{s:n}=s,r=s.src.slice(e,s.i),a=t?`\`${s.src.slice(t.start,t.end)}\``:n("\u76F4\u524D\u306E\u8981\u7D20","the previous item"),o=r.replace(/^\\/,"").replace(/\\\}$/,"}").replace(/^\\\{/,"{"),l="";(s.flavor==="pcre"&&o.length>1&&/[?+]$/.test(o)&&!/^\{.*\}$/.test(o)||s.flavor==="pcre"&&/\}[?+]$/.test(o))&&(l=o.slice(-1),o=o.slice(0,-1));let c,u=/^\{(\d*)(,?)(\d*)\}$/.exec(o);o==="*"?c=n("0\u56DE\u4EE5\u4E0A","zero or more times"):o==="+"?c=n("1\u56DE\u4EE5\u4E0A","one or more times"):o==="?"?c=n("0\u56DE\u304B1\u56DE\uFF08\u3042\u3063\u3066\u3082\u306A\u304F\u3066\u3082\u3088\u3044\uFF09","zero or one time (optional)"):u&&!u[2]?c=n(`\u3061\u3087\u3046\u3069${u[1]}\u56DE`,`exactly ${u[1]} times`):u&&!u[3]?c=n(`${u[1]}\u56DE\u4EE5\u4E0A`,`${u[1]} or more times`):u&&!u[1]?c=n(`${u[3]}\u56DE\u4EE5\u4E0B`,`at most ${u[3]} times`):u?c=n(`${u[1]}\u301C${u[3]}\u56DE`,`${u[1]} to ${u[3]} times`):c=r;let h=l==="?"?n("\uFF08\u3067\u304D\u308B\u3060\u3051\u5C11\u306A\u304F\uFF09"," (as few as possible)"):l==="+"?n("\uFF08\u30D0\u30C3\u30AF\u30C8\u30E9\u30C3\u30AF\u3057\u306A\u3044\uFF09"," (possessive, no backtracking)"):"";return{start:e,end:s.i,kind:"operator",explanation:n(`\`${r}\`: ${a} \u3092${c}\u7E70\u308A\u8FD4\u3059${h}`,`\`${r}\`: repeat ${a} ${c}${h}`),children:[]}}function Ga(s,e){let{s:t}=s,n=s.i;s.i+=e;let r,a,o=s.src.slice(s.i),l=s.flavor==="pcre"?/^\?(:|=|!|<=|<!|P?<([A-Za-z_]\w*)>|[imsx-]+\))/.exec(o):null;if(l){s.i+=l[0].length;let h=l[1];if(h===":")r=t("`(?:\u2026)`: \u307E\u3068\u3081\u308B\u3060\u3051\u306E\u30B0\u30EB\u30FC\u30D7\uFF08\u756A\u53F7\u306F\u4ED8\u304B\u306A\u3044\uFF09","`(?:\u2026)`: non-capturing group");else if(h==="=")r=t("`(?=\u2026)`: \u76F4\u5F8C\u306B \u2026 \u304C\u7D9A\u304F\u4F4D\u7F6E\uFF08\u5148\u8AAD\u307F\u3002\u6587\u5B57\u306F\u6D88\u8CBB\u3057\u306A\u3044\uFF09","`(?=\u2026)`: followed by \u2026 (lookahead, consumes nothing)");else if(h==="!")r=t("`(?!\u2026)`: \u76F4\u5F8C\u306B \u2026 \u304C\u7D9A\u304B\u306A\u3044\u4F4D\u7F6E\uFF08\u5426\u5B9A\u5148\u8AAD\u307F\uFF09","`(?!\u2026)`: not followed by \u2026 (negative lookahead)");else if(h==="<=")r=t("`(?<=\u2026)`: \u76F4\u524D\u304C \u2026 \u3067\u3042\u308B\u4F4D\u7F6E\uFF08\u5F8C\u8AAD\u307F\uFF09","`(?<=\u2026)`: preceded by \u2026 (lookbehind)");else if(h==="<!")r=t("`(?<!\u2026)`: \u76F4\u524D\u304C \u2026 \u3067\u306F\u306A\u3044\u4F4D\u7F6E\uFF08\u5426\u5B9A\u5F8C\u8AAD\u307F\uFF09","`(?<!\u2026)`: not preceded by \u2026 (negative lookbehind)");else if(l[2])a=++s.groups,r=t(`\u540D\u524D\u4ED8\u304D\u30B0\u30EB\u30FC\u30D7 \`${l[2]}\`\uFF08\u30B0\u30EB\u30FC\u30D7 ${a}\uFF09: \u4E00\u81F4\u3057\u305F\u90E8\u5206\u3092\u540D\u524D\u3067\u53C2\u7167\u3067\u304D\u308B`,`Named group \`${l[2]}\` (group ${a})`);else return{start:n,end:s.i,kind:"keyword",explanation:t(`\`(?${h}\`: \u4EE5\u964D\u306E\u30DE\u30C3\u30C1\u306E\u30AA\u30D7\u30B7\u30E7\u30F3\u3092\u5207\u308A\u66FF\u3048\u308B\uFF08i: \u5927\u5C0F\u6587\u5B57\u3092\u533A\u5225\u3057\u306A\u3044 \u306A\u3069\uFF09`,`\`(?${h}\`: set matching options from here (i: case-insensitive, \u2026)`),children:[]}}else a=++s.groups,r=t(`\u30B0\u30EB\u30FC\u30D7 ${a}: \u4E2D\u8EAB\u3092\u3072\u3068\u307E\u3068\u3081\u306B\u3059\u308B\uFF08\`\\${a}\` \u3067\u4E00\u81F4\u3057\u305F\u6587\u5B57\u5217\u3092\u53C2\u7167\u3067\u304D\u308B\uFF09`,`Group ${a}: treats its contents as one unit (\`\\${a}\` refers to what it matched)`);let c=Ws(s,1),u=kn(s);return u?s.i+=u:r+=t("\uFF08\u9589\u3058\u62EC\u5F27\u304C\u306A\u3044\uFF09"," (missing closing parenthesis)"),{start:n,end:s.i,kind:"block",explanation:r,children:c,...a?{group:a}:{}}}function Ya(s){let{s:e,src:t}=s,n=s.i,r=n+1,a=!1;t[r]==="^"&&(a=!0,r++);let o=[],l=!0;for(;r<t.length&&(t[r]!=="]"||l);){l=!1;let u=/^\[:(\w+):\]/.exec(t.slice(r));if(u){let h=Wa[u[1]];o.push(h?e(h[0],h[1]):u[0]),r+=u[0].length;continue}if(s.sedEscapes&&t[r]==="\\"&&Ke[t[r+1]]){o.push(e(Ke[t[r+1]][0],Ke[t[r+1]][1])),r+=2;continue}if(s.flavor==="pcre"&&t[r]==="\\"&&r+1<t.length){let h=zs[t[r+1]];o.push(h?e(h.ja,h.en):`\u300C${t[r+1]}\u300D`),r+=2;continue}if(t[r+1]==="-"&&t[r+2]&&t[r+2]!=="]"){o.push(e(`${t[r]}\u301C${t[r+2]}`,`${t[r]}-${t[r+2]}`)),r+=3;continue}o.push(e(`\u300C${t[r]}\u300D`,`"${t[r]}"`)),r++}if(r>=t.length)return s.i=n+1,{start:n,end:s.i,kind:"error",explanation:e("`[` \u306B\u5BFE\u5FDC\u3059\u308B `]` \u304C\u306A\u3044","Unclosed `[`"),children:[]};s.i=r+1;let c=o.join(e("\u3001",", "));return{start:n,end:s.i,kind:"pattern",children:[],explanation:a?e(`\u6587\u5B57\u30AF\u30E9\u30B9: ${c} \u4EE5\u5916\u306E1\u6587\u5B57`,`Character class: one character other than ${c}`):e(`\u6587\u5B57\u30AF\u30E9\u30B9: ${c} \u306E\u3069\u308C\u304B1\u6587\u5B57`,`Character class: one of ${c}`)}}function Za(s){let{s:e,src:t}=s,n=s.i,r=t[n+1];if(s.i+=r===void 0?1:2,r===void 0)return{start:n,end:s.i,kind:"error",explanation:e("\u672B\u5C3E\u306E `\\` \u306E\u5F8C\u306B\u6587\u5B57\u304C\u306A\u3044","Trailing `\\`"),children:[]};if(/[1-9]/.test(r)){let o=Number(r)>s.groups;return{start:n,end:s.i,kind:"variable",children:[],group:Number(r),explanation:e(`\u5F8C\u65B9\u53C2\u7167 \`\\${r}\`: \u30B0\u30EB\u30FC\u30D7 ${r} \u306B\u4E00\u81F4\u3057\u305F\u306E\u3068\u540C\u3058\u6587\u5B57\u5217${o?"\uFF08\u3053\u3053\u307E\u3067\u306B\u30B0\u30EB\u30FC\u30D7 "+r+" \u304C\u306A\u3044\uFF09":""}`,`Backreference \`\\${r}\`: the same text group ${r} matched${o?` (no group ${r} before this point)`:""}`)}}if(s.sedEscapes&&Ke[r])return{start:n,end:s.i,kind:"pattern",explanation:`\`\\${r}\`: ${e(Ke[r][0],Ke[r][1])}`,children:[]};let a=zs[r];if(a&&(s.flavor==="pcre"||a.gnu)){let o=/[bB<>AzZ]/.test(r)?"keyword":"pattern";return{start:n,end:s.i,kind:o,explanation:`\`\\${r}\`: ${e(a.ja,a.en)}`,children:[]}}return a&&!a.gnu?{start:n,end:s.i,kind:"string",children:[],explanation:e(`\`\\${r}\`: \u3053\u306E\u6B63\u898F\u8868\u73FE\uFF08POSIX\uFF09\u3067\u306F\u6587\u5B57\u300C${r}\u300D\u6271\u3044\u3002\u300C${a.ja}\u300D\u306E\u610F\u5473\u306B\u3059\u308B\u306B\u306F \`-P\` \u304C\u5FC5\u8981`,`\`\\${r}\`: just "${r}" in POSIX regex; it means ${a.en} only with \`-P\``)}:s.flavor!=="bre"&&"(){}|+?".includes(r)||/[.[\]*^$\\/]/.test(r)?{start:n,end:s.i,kind:"string",explanation:e(`\u6587\u5B57\u300C${r}\u300D\u305D\u306E\u3082\u306E\uFF08\`\\\` \u3067\u7279\u5225\u306A\u610F\u5473\u3092\u6253\u3061\u6D88\u3057\u3066\u3044\u308B\uFF09`,`A literal "${r}" (escaped)`),children:[]}:{start:n,end:s.i,kind:"string",explanation:e(`\u6587\u5B57\u300C${r}\u300D`,`Literal "${r}"`),children:[]}}function Js(s,e){let t=A(e);switch(s){case"bre":return t("\u57FA\u672C\u6B63\u898F\u8868\u73FE (BRE)","basic regex (BRE)");case"ere":return t("\u62E1\u5F35\u6B63\u898F\u8868\u73FE (ERE)","extended regex (ERE)");case"pcre":return t("Perl \u4E92\u63DB\u6B63\u898F\u8868\u73FE (PCRE)","Perl-compatible regex (PCRE)");case"fixed":return t("\u56FA\u5B9A\u6587\u5B57\u5217\uFF08\u6B63\u898F\u8868\u73FE\u3068\u3057\u3066\u89E3\u91C8\u3057\u306A\u3044\uFF09","fixed string (not a regex)")}}var Bs={digit:"0-9",alpha:"A-Za-z",alnum:"A-Za-z0-9",upper:"A-Z",lower:"a-z",space:"\\s",blank:" \\t",xdigit:"0-9A-Fa-f",punct:"!-\\/:-@\\[-`{-~",word:"A-Za-z0-9_",cntrl:"\\x00-\\x1f",print:" -~",graph:"!-~"},qt={t:"\\t",n:"\\n",r:"\\r",f:"\\f",v:"\\v"};function Xa(s,e,t){let n=e+1,r="[";s[n]==="^"&&(r+="^",n++);let a=!0;for(;n<s.length&&(s[n]!=="]"||a);){a=!1;let o=/^\[:(\w+):\]/.exec(s.slice(n));if(o){if(!Bs[o[1]])return;r+=Bs[o[1]],n+=o[0].length;continue}if(/^\[[.=]/.test(s.slice(n)))return;let l=s[n];if(t&&l==="\\"&&qt[s[n+1]]){r+=qt[s[n+1]],n+=2;continue}r+=l==="\\"||l==="]"||l==="["?`\\${l}`:l,n++}if(!(n>=s.length))return[r+"]",n+1]}function ie(s,e,t={}){let n=t.ignoreCase?"i":"",r="",a=0,o=()=>r===""||r.endsWith("(")||r.endsWith("|")||r==="^";if(e==="pcre"){let l=/^\(\?([imsx]+)\)/.exec(s);if(l&&(l[1].includes("i")&&(n+="i"),l[1].includes("s")&&(n+="s"),a=l[0].length),/\(\?>|[*+?}][+]|\\Q|\(\?[imsx-]+\)|\\[pPXRK]/.test(s.slice(a)))return}for(;a<s.length;){let l=s[a],c=s[a+1];if(e==="pcre"){if(l==="\\"&&c==="A"){r+="^",a+=2;continue}if(l==="\\"&&(c==="z"||c==="Z")){r+="$",a+=2;continue}if(l==="\\"&&c==="h"){r+="[ \\t]",a+=2;continue}if(s.startsWith("(?P<",a)){r+="(?<",a+=4;continue}if(l==="\\"&&c!==void 0){r+=l+c,a+=2;continue}r+=l,a++;continue}if(l==="["){let u=Xa(s,a,!!t.sedEscapes);if(!u)return;r+=u[0],a=u[1];continue}if(l==="\\"){if(c===void 0)return;if(a+=2,/[1-9]/.test(c)){r+="\\"+c;continue}if(c==="<"||c===">"){r+="\\b";continue}if("wWsSbB".includes(c)){r+="\\"+c;continue}if(t.sedEscapes&&qt[c]){r+=qt[c];continue}if(e==="bre"&&"(){}|+?".includes(c)){r+=c;continue}if(c==="`"||c==="'")return;r+=/[\\^$.*+?()[\]{}|/-]/.test(c)?"\\"+c:c;continue}if(e==="bre"){if("+?(){}|".includes(l)){r+="\\"+l,a++;continue}if(l==="*"&&o()){r+="\\*",a++;continue}if(l==="^"&&r!==""&&!r.endsWith("(")&&!r.endsWith("|")){r+="\\^",a++;continue}if(l==="$"&&a<s.length-1&&!s.startsWith("\\)",a+1)&&!s.startsWith("\\|",a+1)){r+="\\$",a++;continue}}else if(l==="{"&&!/^\{\d*,?\d*\}/.test(s.slice(a))){r+="\\{",a++;continue}r+=l==="/"?"\\/":l,a++}try{new RegExp(r,n)}catch{return}return{source:r,flags:n}}var Hs="1234567890",jt="abcdefghijklmnopqrstuvwxyz",Ka="ABCDEFGHIJKLMNOPQRSTUVWXYZ";function Qa(s){switch(s){case"d":return e=>Hs[e%9];case"w":return e=>jt[e%26];case"s":return()=>" ";case"D":return e=>jt[e%26];case"W":return()=>"-";case"S":return e=>jt[e%26];default:return()=>{}}}function eo(s,e){let t=new RegExp(`[${e?"^":""}${s}]`),r=(e?"xyzabc_-.1 ":`${Ka}${jt}${Hs}-_. :/@,;!#%&=+*?$^()[]{}|<>'"\\~\` `).split("").filter(l=>t.test(l)),a=s.match(/(.)-(.)/g)?.flatMap(l=>{let c=l.charCodeAt(0),u=l.charCodeAt(2);return Array.from({length:Math.min(u-c+1,26)},(h,d)=>String.fromCharCode(c+d))})??[],o=[...new Set([...a.filter(l=>t.test(l)),...r])];return l=>o.length?o[l%o.length]:void 0}var $n=class{constructor(e){this.s=e}s;i=0;groups=0;alt(){let e=[this.seq()];for(;this.s[this.i]==="|";)this.i++,e.push(this.seq());return e.length===1?e[0]:{t:"alt",options:e}}seq(){let e=[];for(;this.i<this.s.length&&this.s[this.i]!=="|"&&this.s[this.i]!==")";){let t=this.atom();for(;;){let n=/^(\*|\+|\?|\{(\d*)(,?)(\d*)\})\??/.exec(this.s.slice(this.i));if(!n)break;this.i+=n[0].length;let r=0,a=1/0;n[1]==="+"?r=1:n[1]==="?"?a=1:n[1].startsWith("{")&&(r=n[2]?Number(n[2]):0,a=n[3]?n[4]?Number(n[4]):1/0:r),t={t:"repeat",node:t,min:r,max:a}}e.push(t)}return{t:"seq",items:e}}atom(){let e=this.s[this.i++];if(e==="("){let t=!0,n,r=/^\?(:|=|!|<=|<!|<[A-Za-z_]\w*>)/.exec(this.s.slice(this.i));r&&(this.i+=r[0].length,r[1]===":"?t=!1:(!r[1].startsWith("<")||r[1].startsWith("<=")||r[1].startsWith("<!"))&&(t=!1,n=r[1]));let a=t?++this.groups:0,o=this.alt();return this.i++,{t:"group",node:o,no:a,look:n}}if(e==="["){let t=this.i,n=this.s[t]==="^";n&&t++;let r="";for(this.s[t]==="]"&&(r+="\\]",t++);t<this.s.length&&this.s[t]!=="]";){if(this.s[t]==="\\"){r+=this.s.slice(t,t+2),t+=2;continue}r+=this.s[t++]}return this.i=t+1,{t:"set",pick:eo(r,n)}}if(e===".")return{t:"set",pick:t=>"xyzabc"[t%6]};if(e==="^"||e==="$")return{t:"empty"};if(e==="\\"){let t=this.s[this.i++];return/[1-9]/.test(t)?{t:"backref",n:Number(t)}:t==="b"||t==="B"?{t:"empty"}:"dwsDWS".includes(t)?{t:"set",pick:Qa(t)}:{t:"char",c:{t:" ",n:`
7
- `,r:"\r",f:"\f",v:"\v"}[t]??t}}return{t:"char",c:e}}};function dt(s,e,t){switch(s.t){case"empty":return"";case"char":return s.c;case"set":return s.pick(e);case"backref":return t[s.n]??"";case"alt":return dt(s.options[e%s.options.length],Math.floor(e/s.options.length),t);case"seq":{let n="";for(let r=0;r<s.items.length;r++){let a=dt(s.items[r],e,t);if(a===void 0)return;n+=a}return n}case"group":{if(s.look==="!"||s.look==="<!")return"";let n=dt(s.node,e,t);return n===void 0?void 0:(s.no&&(t[s.no]=n),n)}case"repeat":{let{min:n,max:r}=s,a=[Math.max(n,1),n,Math.min(r,n+2)].map(c=>Math.min(c,r,n+3)),o=a[e%a.length],l="";for(let c=0;c<o;c++){let u=dt(s.node,e+c,t);if(u===void 0)return;l+=u}return l}}}function be(s,e=3){let t=new RegExp(s.source,s.flags),n;try{let u=new $n(s.source);if(n=u.alt(),u.i<s.source.length)return}catch{return}let r=[];for(let u=0;u<12&&r.length<e;u++){let h=dt(n,u,[]);h===void 0||h===""||/[\n\r]/.test(h)||r.includes(h)||t.test(h)&&r.push(h)}if(!r.length)return;let a=r[0],o=`${s.source.startsWith("^")?"":"abc "}${a}${s.source.endsWith("$")&&!s.source.endsWith("\\$")?"":" xyz"}`;o!==a&&t.test(o)&&(r.length>=e&&r.pop(),r.push(o));let l=[a.slice(0,-1),a.slice(1),a.replace(/\d/,"x"),a.replace(/[A-Za-z]/,"1"),s.flags.includes("i")?"":to(a),a.replace(/[^A-Za-z0-9]/,""),a+a.slice(-1),"x"+a],c=[...new Set(l)].filter(u=>u!==""&&!t.test(u)).slice(0,2);return{matching:r,nonMatching:c}}function Ut(s,e){return{source:s.replace(/[\\^$.*+?()[\]{}|/]/g,"\\$&"),flags:e?"i":""}}function Dt(s,e,t){return e?{...s,source:`^(?:${s.source})$`}:t?{...s,source:`(?<![A-Za-z0-9_])(?:${s.source})(?![A-Za-z0-9_])`}:s}function to(s){return s.replace(/[a-zA-Z]/g,e=>e===e.toLowerCase()?e.toUpperCase():e.toLowerCase())}var no={n:["\u6539\u884C","newline"],t:["\u30BF\u30D6","tab"],r:["\u5FA9\u5E30\u6587\u5B57(CR)","carriage return"],"\\":["\u30D0\u30C3\u30AF\u30B9\u30E9\u30C3\u30B7\u30E5","backslash"],a:["\u30D9\u30EB","bell"],b:["\u30D0\u30C3\u30AF\u30B9\u30DA\u30FC\u30B9","backspace"],e:["\u30A8\u30B9\u30B1\u30FC\u30D7\u6587\u5B57\uFF08\u8272\u4ED8\u3051\u306A\u3069\u306E\u5236\u5FA1\u306B\u4F7F\u3046\uFF09","escape character (used for colours)"],f:["\u6539\u30DA\u30FC\u30B8","form feed"],v:["\u5782\u76F4\u30BF\u30D6","vertical tab"],'"':['\u300C"\u300D','"'],"'":["\u300C'\u300D","'"]};function pt(s,e,t,n,r){n>t&&s.push({start:t,end:n,kind:"string",explanation:r(`\u305D\u306E\u307E\u307E\u51FA\u529B\u3059\u308B\u6587\u5B57\u5217\u300C${e.slice(t,n)}\u300D`,`Literal text "${e.slice(t,n)}"`),children:[]})}function so(s,e,t){let n=s[e+1];if(n===void 0)return;let r;if(r=/^\\(0[0-7]{0,3}|[0-7]{1,3})/.exec(s.slice(e)))return[{start:e,end:e+r[0].length,kind:"operator",explanation:t(`\`${r[0]}\`: 8\u9032\u6570 ${r[1]} \u306E\u6587\u5B57`,`\`${r[0]}\`: the character with octal code ${r[1]}`),children:[]},r[0].length];if(r=/^\\x[0-9a-fA-F]{1,2}/.exec(s.slice(e)))return[{start:e,end:e+r[0].length,kind:"operator",explanation:t(`\`${r[0]}\`: 16\u9032\u6570 ${r[0].slice(2)} \u306E\u6587\u5B57`,`\`${r[0]}\`: the character with hex code ${r[0].slice(2)}`),children:[]},r[0].length];if(r=/^\\(u[0-9a-fA-F]{1,4}|U[0-9a-fA-F]{1,8})/.exec(s.slice(e)))return[{start:e,end:e+r[0].length,kind:"operator",explanation:t(`\`${r[0]}\`: Unicode \u6587\u5B57 U+${r[1].slice(1).toUpperCase()}`,`\`${r[0]}\`: Unicode character U+${r[1].slice(1).toUpperCase()}`),children:[]},r[0].length];let a=no[n];if(a)return[{start:e,end:e+2,kind:"operator",explanation:`\`\\${n}\`: ${t(a[0],a[1])}`,children:[]},2]}var ro={s:["\u6587\u5B57\u5217","a string"],b:["\u6587\u5B57\u5217\uFF08\u4E2D\u306E `\\n` \u306A\u3069\u306E\u30A8\u30B9\u30B1\u30FC\u30D7\u3092\u89E3\u91C8\u3059\u308B\uFF09","a string with backslash escapes interpreted"],q:["\u30B7\u30A7\u30EB\u306B\u518D\u5165\u529B\u3067\u304D\u308B\u3088\u3046\u30AF\u30A9\u30FC\u30C8\u3057\u305F\u6587\u5B57\u5217","a string quoted for reuse as shell input"],d:["\u6574\u6570\uFF0810\u9032\u6570\uFF09","an integer (decimal)"],i:["\u6574\u6570\uFF0810\u9032\u6570\uFF09","an integer (decimal)"],u:["\u7B26\u53F7\u306A\u3057\u6574\u6570","an unsigned integer"],o:["8\u9032\u6570","an octal number"],x:["16\u9032\u6570\uFF08\u5C0F\u6587\u5B57\uFF09","a hexadecimal number (lowercase)"],X:["16\u9032\u6570\uFF08\u5927\u6587\u5B57\uFF09","a hexadecimal number (uppercase)"],f:["\u5C0F\u6570\uFF08\u56FA\u5B9A\u5C0F\u6570\u70B9\uFF09","a decimal number (fixed point)"],F:["\u5C0F\u6570\uFF08\u56FA\u5B9A\u5C0F\u6570\u70B9\uFF09","a decimal number (fixed point)"],e:["\u6307\u6570\u8868\u8A18\u306E\u6570\uFF081.5e+03 \u306A\u3069\uFF09","a number in exponent notation (1.5e+03)"],E:["\u6307\u6570\u8868\u8A18\u306E\u6570\uFF08\u5927\u6587\u5B57\u306E E\uFF09","a number in exponent notation (capital E)"],g:["\u5C0F\u6570\u304B\u6307\u6570\u8868\u8A18\u306E\u77ED\u3044\u65B9","the shorter of decimal or exponent notation"],G:["\u5C0F\u6570\u304B\u6307\u6570\u8868\u8A18\u306E\u77ED\u3044\u65B9\uFF08\u5927\u6587\u5B57\uFF09","the shorter of decimal or exponent notation (capital)"],c:["1\u6587\u5B57","a single character"],a:["16\u9032\u306E\u6D6E\u52D5\u5C0F\u6570\u70B9\u6570","a hexadecimal floating-point number"],A:["16\u9032\u306E\u6D6E\u52D5\u5C0F\u6570\u70B9\u6570\uFF08\u5927\u6587\u5B57\uFF09","a hexadecimal floating-point number (capital)"]};function ft(s,e){let t=A(e),n=[],r=0,a=0,o=0;for(;a<s.length;){if(s[a]==="\\"){let c=so(s,a,t);if(c){pt(n,s,r,a,t),n.push(c[0]),a+=c[1],r=a;continue}}if(s[a]!=="%"){a++;continue}if(pt(n,s,r,a,t),s[a+1]==="%"){n.push({start:a,end:a+2,kind:"operator",explanation:t("`%%`: \u6587\u5B57\u300C%\u300D\u305D\u306E\u3082\u306E",'`%%`: a literal "%"'),children:[]}),a+=2,r=a;continue}let l=/^%([-+ #0']*)(\*|\d+)?(?:\.(\*|\d*))?(\([^)]*\)T|[a-zA-Z])/.exec(s.slice(a));if(!l){n.push({start:a,end:a+1,kind:"error",explanation:t("`%` \u306E\u5F8C\u306E\u66F8\u5F0F\u6307\u5B9A\u304C\u4E0D\u6B63","Invalid conversion after `%`"),children:[]}),a++,r=a;continue}n.push(io(l,a,++o,t)),a+=l[0].length,r=a}return pt(n,s,r,s.length,t),n}function io(s,e,t,n){let[r,a,o,l,c]=s,u=[];if(c.startsWith("(")){let f=c.slice(1,-2);return{start:e,end:e+r.length,kind:"variable",explanation:n(`\`${r}\`: ${t} \u756A\u76EE\u306E\u5F15\u6570\uFF08UNIX \u6642\u523B\uFF09\u3092\u65E5\u6642\u66F8\u5F0F \`${f}\` \u3067\u8868\u793A\u3059\u308B\uFF08-1 \u306F\u73FE\u5728\u6642\u523B\uFF09`,`\`${r}\`: argument ${t} (a UNIX time) formatted with \`${f}\` (-1 means now)`),children:[]}}let h=ro[c];if(!h)return{start:e,end:e+r.length,kind:"error",explanation:n(`\`${r}\`: \u4E0D\u660E\u306A\u5909\u63DB\u6587\u5B57 \`${c}\``,`\`${r}\`: unknown conversion \`${c}\``),children:[]};let d=/[diouxXfFeEgGaA]/.test(c);if(o==="*"?u.push(n("\u5E45\u306F\u5F15\u6570\u3067\u6307\u5B9A","width taken from an argument")):o?u.push(a.includes("-")?n(`\u5E45 ${o} \u3067\u5DE6\u5BC4\u305B`,`left-aligned in ${o} columns`):n(`\u5E45 ${o} \u3067\u53F3\u5BC4\u305B`,`right-aligned in ${o} columns`)):a.includes("-")&&u.push(n("\u5DE6\u5BC4\u305B","left-aligned")),a.includes("0")&&o&&d&&u.push(n("\u7A7A\u304D\u306F 0 \u3067\u57CB\u3081\u308B","padded with zeros")),a.includes("+")&&u.push(n("\u6B63\u306E\u6570\u306B\u3082 + \u3092\u4ED8\u3051\u308B","always show the sign")),a.includes(" ")&&u.push(n("\u6B63\u306E\u6570\u306E\u524D\u306B\u7A7A\u767D\u3092\u7F6E\u304F","a space before positive numbers")),a.includes("#")&&u.push(n("0x \u306A\u3069\u306E\u63A5\u982D\u8F9E\u3092\u4ED8\u3051\u308B","with a 0x/0 prefix")),a.includes("'")&&u.push(n("3\u6841\u3054\u3068\u306B\u533A\u5207\u308B","with thousands separators")),l!==void 0){let f=l===""?"0":l;/[fFeEaA]/.test(c)?u.push(n(`\u5C0F\u6570\u70B9\u4EE5\u4E0B ${f} \u6841`,`${f} digits after the decimal point`)):/[gG]/.test(c)?u.push(n(`\u6709\u52B9\u6570\u5B57 ${f} \u6841`,`${f} significant digits`)):/[sbq]/.test(c)?u.push(n(`\u6700\u5927 ${f} \u6587\u5B57\u307E\u3067`,`at most ${f} characters`)):u.push(n(`\u6700\u4F4E ${f} \u6841\uFF08\u8DB3\u308A\u306A\u3051\u308C\u3070 0 \u3067\u57CB\u3081\u308B\uFF09`,`at least ${f} digits`))}let p=u.length?n(`\uFF08${u.join("\u3001")}\uFF09`,` (${u.join(", ")})`):"";return{start:e,end:e+r.length,kind:"variable",children:[],explanation:n(`\`${r}\`: ${t} \u756A\u76EE\u306E\u5024\u3092${h[0]}\u3068\u3057\u3066\u51FA\u529B${p}`,`\`${r}\`: value ${t} as ${h[1]}${p}`)}}function Gs(s,e){let t=A(e),n=ft(s,e).filter(r=>r.kind==="variable").length;if(n)return t(`\u5024\u306E\u6307\u5B9A ${n} \u500B\u3002\u5F15\u6570\u304C\u3053\u308C\u3088\u308A\u591A\u3044\u3068\u3001\u66F8\u5F0F\u3092\u7E70\u308A\u8FD4\u3057\u4F7F\u3063\u3066\u6B8B\u308A\u3082\u51FA\u529B\u3059\u308B`,`${n} value${n>1?"s":""} per use; extra arguments reuse the format`)}var vn={Y:["\u897F\u66A6\uFF084\u6841\u3001\u4F8B: 2026\uFF09","year (e.g. 2026)"],y:["\u897F\u66A6\u306E\u4E0B2\u6841\uFF08\u4F8B: 26\uFF09","last two digits of the year"],C:["\u4E16\u7D00\uFF08\u4F8B: 20\uFF09","century"],G:["ISO \u9031\u756A\u53F7\u306E\u5E74","ISO week-based year"],m:["\u6708\uFF0801\u301C12\uFF09","month (01\u201312)"],d:["\u65E5\uFF0801\u301C31\uFF09","day of month (01\u201331)"],e:["\u65E5\uFF08\u7A7A\u767D\u57CB\u3081\u3001 1\u301C31\uFF09","day of month, space-padded"],H:["\u6642\uFF0800\u301C23\uFF09","hour (00\u201323)"],I:["\u6642\uFF0801\u301C12\uFF09","hour (01\u201312)"],k:["\u6642\uFF08\u7A7A\u767D\u57CB\u3081\u30010\u301C23\uFF09","hour, space-padded (0\u201323)"],l:["\u6642\uFF08\u7A7A\u767D\u57CB\u3081\u30011\u301C12\uFF09","hour, space-padded (1\u201312)"],M:["\u5206\uFF0800\u301C59\uFF09","minute (00\u201359)"],S:["\u79D2\uFF0800\u301C60\uFF09","second (00\u201360)"],N:["\u30CA\u30CE\u79D2\uFF08000000000\u301C999999999\uFF09","nanoseconds"],p:["AM / PM","AM or PM"],P:["am / pm","am or pm"],a:["\u66DC\u65E5\u306E\u7565\u79F0\uFF08\u4F8B: Mon\uFF09","abbreviated weekday (Mon)"],A:["\u66DC\u65E5\uFF08\u4F8B: Monday\uFF09","full weekday (Monday)"],b:["\u6708\u306E\u7565\u79F0\uFF08\u4F8B: Jan\uFF09","abbreviated month (Jan)"],h:["\u6708\u306E\u7565\u79F0\uFF08%b \u3068\u540C\u3058\uFF09","abbreviated month (same as %b)"],B:["\u6708\u306E\u540D\u524D\uFF08\u4F8B: January\uFF09","full month name (January)"],j:["\u5E74\u5185\u306E\u901A\u3057\u65E5\uFF08001\u301C366\uFF09","day of year (001\u2013366)"],u:["\u66DC\u65E5\u306E\u756A\u53F7\uFF081=\u6708\u66DC\u301C7=\u65E5\u66DC\uFF09","day of week (1=Monday \u2026 7)"],w:["\u66DC\u65E5\u306E\u756A\u53F7\uFF080=\u65E5\u66DC\u301C6=\u571F\u66DC\uFF09","day of week (0=Sunday \u2026 6)"],U:["\u5E74\u5185\u306E\u9031\u756A\u53F7\uFF08\u65E5\u66DC\u59CB\u307E\u308A\uFF09","week of year (Sunday first)"],W:["\u5E74\u5185\u306E\u9031\u756A\u53F7\uFF08\u6708\u66DC\u59CB\u307E\u308A\uFF09","week of year (Monday first)"],V:["ISO \u9031\u756A\u53F7\uFF0801\u301C53\uFF09","ISO week number"],s:["UNIX \u6642\u523B\uFF081970-01-01 \u304B\u3089\u306E\u79D2\u6570\uFF09","seconds since 1970-01-01 (UNIX time)"],Z:["\u30BF\u30A4\u30E0\u30BE\u30FC\u30F3\u540D\uFF08\u4F8B: JST\uFF09","time zone abbreviation (JST)"],z:["UTC \u304B\u3089\u306E\u6642\u5DEE\uFF08\u4F8B: +0900\uFF09","UTC offset (+0900)"],F:["\u65E5\u4ED8\uFF08%Y-%m-%d \u3068\u540C\u3058\u3002\u4F8B: 2026-10-16\uFF09","date as %Y-%m-%d (2026-10-16)"],T:["\u6642\u523B\uFF08%H:%M:%S \u3068\u540C\u3058\uFF09","time as %H:%M:%S"],D:["\u65E5\u4ED8\uFF08%m/%d/%y \u3068\u540C\u3058\uFF09","date as %m/%d/%y"],R:["\u6642\u523B\uFF08%H:%M \u3068\u540C\u3058\uFF09","time as %H:%M"],r:["12\u6642\u9593\u5236\u306E\u6642\u523B\uFF08\u4F8B: 01:30:00 PM\uFF09","12-hour time (01:30:00 PM)"],c:["\u30ED\u30B1\u30FC\u30EB\u306B\u5FDC\u3058\u305F\u65E5\u6642","locale date and time"],x:["\u30ED\u30B1\u30FC\u30EB\u306B\u5FDC\u3058\u305F\u65E5\u4ED8","locale date"],X:["\u30ED\u30B1\u30FC\u30EB\u306B\u5FDC\u3058\u305F\u6642\u523B","locale time"],n:["\u6539\u884C","a newline"],t:["\u30BF\u30D6","a tab"],"%":["\u6587\u5B57\u300C%\u300D\u305D\u306E\u3082\u306E",'a literal "%"']};function zt(s,e){let t=A(e),n=[],r=0;s[0]==="+"&&(n.push({start:0,end:1,kind:"operator",explanation:t("`+`: \u3053\u3053\u304B\u3089\u5F8C\u308D\u304C\u8868\u793A\u66F8\u5F0F","`+`: introduces the output format"),children:[]}),r=1);let a=r;for(;r<s.length;){if(s[r]!=="%"){r++;continue}let o=/^%([-_0^#]?)(\d*)(:{0,3}z|[a-zA-Z%])/.exec(s.slice(r));if(!o){r++;continue}pt(n,s,a,r,t);let[l,c,u,h]=o,d=h.endsWith("z")&&h.length>1?[t(`UTC \u304B\u3089\u306E\u6642\u5DEE\uFF08\u4F8B: +09${":00".repeat(h.length-1)}\uFF09`,`UTC offset with colons (+09${":00".repeat(h.length-1)})`)]:vn[h]?[t(vn[h][0],vn[h][1])]:void 0,p=[];c==="-"&&p.push(t("\u30BC\u30ED\u57CB\u3081\u3057\u306A\u3044","no padding")),c==="_"&&p.push(t("\u7A7A\u767D\u3067\u57CB\u3081\u308B","space-padded")),c==="0"&&p.push(t("0 \u3067\u57CB\u3081\u308B","zero-padded")),c==="^"&&p.push(t("\u5927\u6587\u5B57\u306B\u3059\u308B","uppercase")),c==="#"&&p.push(t("\u5927\u6587\u5B57\u30FB\u5C0F\u6587\u5B57\u3092\u53CD\u8EE2\u3059\u308B","opposite case")),u&&p.push(t(`\u5E45 ${u}`,`width ${u}`)),n.push({start:r,end:r+l.length,kind:d?"variable":"error",children:[],explanation:d?`\`${l}\`: ${d[0]}${p.length?t(`\uFF08${p.join("\u3001")}\uFF09`,` (${p.join(", ")})`):""}`:t(`\`${l}\`: \u4E0D\u660E\u306A\u66F8\u5F0F\u6307\u5B9A`,`\`${l}\`: unknown conversion`)}),r+=l.length,a=r}return pt(n,s,a,s.length,t),n}function Ys(s,e=new Date){let t=s.startsWith("+")?s.slice(1):s;if(/%[-_0^#]?\d*(:{0,3}z|[cxXZUVWGCNsrIlkpPh])/.test(t))return;let n=(l,c=2)=>String(l).padStart(c,"0"),r=["Sunday","Monday","Tuesday","Wednesday","Thursday","Friday","Saturday"],a=["January","February","March","April","May","June","July","August","September","October","November","December"],o={Y:String(e.getFullYear()),y:n(e.getFullYear()%100),m:n(e.getMonth()+1),d:n(e.getDate()),e:String(e.getDate()).padStart(2," "),H:n(e.getHours()),M:n(e.getMinutes()),S:n(e.getSeconds()),a:r[e.getDay()].slice(0,3),A:r[e.getDay()],b:a[e.getMonth()].slice(0,3),B:a[e.getMonth()],j:n(Math.floor((e.getTime()-new Date(e.getFullYear(),0,0).getTime())/864e5),3),u:String(e.getDay()||7),w:String(e.getDay()),n:`
8
- `,t:" ","%":"%"};return o.F=`${o.Y}-${o.m}-${o.d}`,o.T=`${o.H}:${o.M}:${o.S}`,o.D=`${o.m}/${o.d}/${o.y}`,o.R=`${o.H}:${o.M}`,t.replace(/%([-_0^#]?)(\d*)([a-zA-Z%])/g,(l,c,u,h)=>{let d=o[h]??"";return c==="-"&&(d=d.replace(/^[0 ]+(?=.)/,"")),c==="^"&&(d=d.toUpperCase()),d})}var ao=new Set(["BEGIN","END","BEGINFILE","ENDFILE","function","func","if","else","while","for","do","break","continue","next","nextfile","exit","return","delete","getline","print","printf","in"]),oo=["&&","||","++","--","+=","-=","*=","/=","%=","^=","==","!=","<=",">=","!~",">>","|&","~","|","?",":","!","<",">","=","+","-","*","/","%","^","$","{","}","(",")","[","]",",",";"],En={NR:["\u3053\u308C\u307E\u3067\u306B\u8AAD\u3093\u3060\u884C\u6570\uFF08\u73FE\u5728\u306E\u884C\u756A\u53F7\uFF09","number of records read so far (the current line number)"],FNR:["\u73FE\u5728\u306E\u30D5\u30A1\u30A4\u30EB\u5185\u3067\u306E\u884C\u756A\u53F7","line number within the current file"],NF:["\u73FE\u5728\u306E\u884C\u306E\u30D5\u30A3\u30FC\u30EB\u30C9\uFF08\u5217\uFF09\u306E\u6570","number of fields on the current line"],FS:["\u5165\u529B\u306E\u30D5\u30A3\u30FC\u30EB\u30C9\u533A\u5207\u308A\uFF08\u65E2\u5B9A\u306F\u7A7A\u767D\u3002`-F` \u3067\u6307\u5B9A\uFF09","input field separator (whitespace by default; set with `-F`)"],OFS:["\u51FA\u529B\u306E\u30D5\u30A3\u30FC\u30EB\u30C9\u533A\u5207\u308A\uFF08`print a, b` \u306E `,` \u306E\u6240\u306B\u5165\u308B\u3002\u65E2\u5B9A\u306F\u7A7A\u767D\uFF09","output field separator (placed between `print a, b`; a space by default)"],RS:["\u5165\u529B\u306E\u30EC\u30B3\u30FC\u30C9\uFF08\u884C\uFF09\u533A\u5207\u308A","input record separator"],ORS:["\u51FA\u529B\u306E\u30EC\u30B3\u30FC\u30C9\u533A\u5207\u308A\uFF08\u65E2\u5B9A\u306F\u6539\u884C\uFF09","output record separator (a newline by default)"],FILENAME:["\u73FE\u5728\u306E\u5165\u529B\u30D5\u30A1\u30A4\u30EB\u540D","the current input file name"],SUBSEP:["\u591A\u6B21\u5143\u914D\u5217\u306E\u30AD\u30FC\u306E\u533A\u5207\u308A","separator for multi-dimensional array keys"],ENVIRON:['\u74B0\u5883\u5909\u6570\u306E\u914D\u5217\uFF08`ENVIRON["HOME"]` \u306A\u3069\uFF09','array of environment variables (`ENVIRON["HOME"]`)'],ARGV:["\u30B3\u30DE\u30F3\u30C9\u30E9\u30A4\u30F3\u5F15\u6570\u306E\u914D\u5217","array of command-line arguments"],ARGC:["\u30B3\u30DE\u30F3\u30C9\u30E9\u30A4\u30F3\u5F15\u6570\u306E\u6570","number of command-line arguments"],RSTART:["`match()` \u3067\u4E00\u81F4\u3057\u305F\u4F4D\u7F6E","start of the last `match()`"],RLENGTH:["`match()` \u3067\u4E00\u81F4\u3057\u305F\u9577\u3055","length of the last `match()`"],CONVFMT:["\u6570\u5024\u3092\u6587\u5B57\u5217\u306B\u3059\u308B\u3068\u304D\u306E\u66F8\u5F0F","number-to-string conversion format"],OFMT:["\u6570\u5024\u3092\u51FA\u529B\u3059\u308B\u3068\u304D\u306E\u66F8\u5F0F","output format for numbers"]},Wt={length:["\u6587\u5B57\u5217\u306E\u9577\u3055\uFF08\u5F15\u6570\u306A\u3057\u306A\u3089\u73FE\u5728\u306E\u884C\u306E\u9577\u3055\uFF09","length of a string (of the line, without an argument)"],substr:["\u90E8\u5206\u6587\u5B57\u5217\u3092\u53D6\u308A\u51FA\u3059\uFF08`substr(s, \u958B\u59CB, \u9577\u3055)`\u3001\u4F4D\u7F6E\u306F1\u59CB\u307E\u308A\uFF09","take a substring (`substr(s, start, len)`, 1-based)"],index:["\u6587\u5B57\u5217\u304C\u6700\u521D\u306B\u73FE\u308C\u308B\u4F4D\u7F6E\uFF081\u59CB\u307E\u308A\u3002\u306A\u3051\u308C\u3070 0\uFF09","position of a substring (1-based; 0 if absent)"],split:["\u6587\u5B57\u5217\u3092\u533A\u5207\u308A\u3067\u5206\u5272\u3057\u3066\u914D\u5217\u306B\u5165\u308C\u3001\u8981\u7D20\u6570\u3092\u8FD4\u3059","split a string into an array and return the count"],sub:["\u6B63\u898F\u8868\u73FE\u306B\u6700\u521D\u306B\u4E00\u81F4\u3057\u305F\u90E8\u5206\u3092\u7F6E\u63DB\u3059\u308B\uFF08\u5BFE\u8C61\u3092\u7701\u7565\u3059\u308B\u3068 `$0`\uFF09","replace the first regex match (in `$0` by default)"],gsub:["\u6B63\u898F\u8868\u73FE\u306B\u4E00\u81F4\u3059\u308B\u90E8\u5206\u3092\u3059\u3079\u3066\u7F6E\u63DB\u3059\u308B\uFF08\u5BFE\u8C61\u3092\u7701\u7565\u3059\u308B\u3068 `$0`\uFF09","replace every regex match (in `$0` by default)"],gensub:["\u6B63\u898F\u8868\u73FE\u3067\u7F6E\u63DB\u3057\u305F\u7D50\u679C\u3092\u8FD4\u3059\uFF08GNU awk\uFF09","return the result of a regex replacement (GNU awk)"],match:["\u6B63\u898F\u8868\u73FE\u306B\u4E00\u81F4\u3059\u308B\u4F4D\u7F6E\u3092\u8FD4\u3057\u3001RSTART \u3068 RLENGTH \u3092\u8A2D\u5B9A\u3059\u308B","find a regex match, setting RSTART and RLENGTH"],sprintf:["\u66F8\u5F0F\u3092\u6307\u5B9A\u3057\u3066\u6587\u5B57\u5217\u3092\u4F5C\u308B","format a string"],tolower:["\u5C0F\u6587\u5B57\u306B\u3059\u308B","lowercase"],toupper:["\u5927\u6587\u5B57\u306B\u3059\u308B","uppercase"],system:["\u30B7\u30A7\u30EB\u30B3\u30DE\u30F3\u30C9\u3092\u5B9F\u884C\u3057\u3066\u7D42\u4E86\u30B9\u30C6\u30FC\u30BF\u30B9\u3092\u8FD4\u3059","run a shell command and return its exit status"],close:["\u30D5\u30A1\u30A4\u30EB\u3084\u30D1\u30A4\u30D7\u3092\u9589\u3058\u308B","close a file or pipe"],fflush:["\u51FA\u529B\u3092\u3059\u3050\u306B\u66F8\u304D\u51FA\u3059","flush output"],int:["\u6574\u6570\u90E8\u5206\uFF08\u5C0F\u6570\u70B9\u4EE5\u4E0B\u3092\u5207\u308A\u6368\u3066\uFF09","integer part (truncated)"],sqrt:["\u5E73\u65B9\u6839","square root"],exp:["\u6307\u6570\u95A2\u6570","exponential"],log:["\u81EA\u7136\u5BFE\u6570","natural logarithm"],sin:["\u6B63\u5F26","sine"],cos:["\u4F59\u5F26","cosine"],atan2:["\u9006\u6B63\u63A5","arctangent"],rand:["0 \u4EE5\u4E0A 1 \u672A\u6E80\u306E\u4E71\u6570","a random number in [0, 1)"],srand:["\u4E71\u6570\u306E\u7A2E\u3092\u8A2D\u5B9A\u3059\u308B","seed the random number generator"],strftime:["\u65E5\u6642\u3092\u66F8\u5F0F\u306B\u5F93\u3063\u3066\u6587\u5B57\u5217\u306B\u3059\u308B\uFF08GNU awk\uFF09","format a time (GNU awk)"],systime:["\u73FE\u5728\u306E UNIX \u6642\u523B\uFF08GNU awk\uFF09","current UNIX time (GNU awk)"],asort:["\u914D\u5217\u306E\u5024\u3092\u4E26\u3079\u66FF\u3048\u308B\uFF08GNU awk\uFF09","sort array values (GNU awk)"],asorti:["\u914D\u5217\u306E\u30AD\u30FC\u3092\u4E26\u3079\u66FF\u3048\u308B\uFF08GNU awk\uFF09","sort array indices (GNU awk)"]};function Nn(s){let e=[],t=0,n=()=>{let r=e[e.length-1];return!r||r.type==="nl"?!0:r.type==="op"?!")]".includes(r.text)&&r.text!=="$"&&r.text!=="++"&&r.text!=="--":r.type==="kw"?r.text!=="getline":!1};for(;t<s.length;){let r=s[t],a=t;if(r===`
6
+ ${JSON.stringify(r,null,2)}`);let o=n[a]();return new Language(INTERNAL,o)}))}}class LookaheadIterable{constructor(e,t,n){assertInternal(e),this[0]=t,this.language=n}get currentTypeId(){return C._ts_lookahead_iterator_current_symbol(this[0])}get currentType(){return this.language.types[this.currentTypeId]||"ERROR"}delete(){C._ts_lookahead_iterator_delete(this[0]),this[0]=0}resetState(e){return C._ts_lookahead_iterator_reset_state(this[0],e)}reset(e,t){return!!C._ts_lookahead_iterator_reset(this[0],e[0],t)&&(this.language=e,!0)}[Symbol.iterator](){let e=this;return{next:()=>C._ts_lookahead_iterator_next(e[0])?{done:!1,value:e.currentType}:{done:!0,value:""}}}}class Query{constructor(e,t,n,r,a,o,l,c){assertInternal(e),this[0]=t,this.captureNames=n,this.textPredicates=r,this.predicates=a,this.setProperties=o,this.assertedProperties=l,this.refutedProperties=c,this.exceededMatchLimit=!1}delete(){C._ts_query_delete(this[0]),this[0]=0}matches(e,{startPosition:t=ZERO_POINT,endPosition:n=ZERO_POINT,startIndex:r=0,endIndex:a=0,matchLimit:o=4294967295,maxStartDepth:l=4294967295}={}){if(typeof o!="number")throw new Error("Arguments must be numbers");marshalNode(e),C._ts_query_matches_wasm(this[0],e.tree[0],t.row,t.column,n.row,n.column,r,a,o,l);let c=getValue(TRANSFER_BUFFER,"i32"),u=getValue(TRANSFER_BUFFER+SIZE_OF_INT,"i32"),h=getValue(TRANSFER_BUFFER+2*SIZE_OF_INT,"i32"),d=new Array(c);this.exceededMatchLimit=!!h;let p=0,f=u;for(let m=0;m<c;m++){let g=getValue(f,"i32");f+=SIZE_OF_INT;let _=getValue(f,"i32");f+=SIZE_OF_INT;let b=new Array(_);if(f=unmarshalCaptures(this,e.tree,f,b),this.textPredicates[g].every((w=>w(b)))){d[p]={pattern:g,captures:b};let w=this.setProperties[g];w&&(d[p].setProperties=w);let y=this.assertedProperties[g];y&&(d[p].assertedProperties=y);let N=this.refutedProperties[g];N&&(d[p].refutedProperties=N),p++}}return d.length=p,C._free(u),d}captures(e,{startPosition:t=ZERO_POINT,endPosition:n=ZERO_POINT,startIndex:r=0,endIndex:a=0,matchLimit:o=4294967295,maxStartDepth:l=4294967295}={}){if(typeof o!="number")throw new Error("Arguments must be numbers");marshalNode(e),C._ts_query_captures_wasm(this[0],e.tree[0],t.row,t.column,n.row,n.column,r,a,o,l);let c=getValue(TRANSFER_BUFFER,"i32"),u=getValue(TRANSFER_BUFFER+SIZE_OF_INT,"i32"),h=getValue(TRANSFER_BUFFER+2*SIZE_OF_INT,"i32"),d=[];this.exceededMatchLimit=!!h;let p=[],f=u;for(let m=0;m<c;m++){let g=getValue(f,"i32");f+=SIZE_OF_INT;let _=getValue(f,"i32");f+=SIZE_OF_INT;let b=getValue(f,"i32");if(f+=SIZE_OF_INT,p.length=_,f=unmarshalCaptures(this,e.tree,f,p),this.textPredicates[g].every((w=>w(p)))){let w=p[b],y=this.setProperties[g];y&&(w.setProperties=y);let N=this.assertedProperties[g];N&&(w.assertedProperties=N);let R=this.refutedProperties[g];R&&(w.refutedProperties=R),d.push(w)}}return C._free(u),d}predicatesForPattern(e){return this.predicates[e]}disableCapture(e){let t=lengthBytesUTF8(e),n=C._malloc(t+1);stringToUTF8(e,n,t+1),C._ts_query_disable_capture(this[0],n,t),C._free(n)}didExceedMatchLimit(){return this.exceededMatchLimit}}function getText(s,e,t){let n=t-e,r=s.textCallback(e,null,t);for(e+=r.length;e<t;){let a=s.textCallback(e,null,t);if(!(a&&a.length>0))break;e+=a.length,r+=a}return e>t&&(r=r.slice(0,n)),r}function unmarshalCaptures(s,e,t,n){for(let r=0,a=n.length;r<a;r++){let o=getValue(t,"i32"),l=unmarshalNode(e,t+=SIZE_OF_INT);t+=SIZE_OF_NODE,n[r]={name:s.captureNames[o],node:l}}return t}function assertInternal(s){if(s!==INTERNAL)throw new Error("Illegal constructor")}function isPoint(s){return s&&typeof s.row=="number"&&typeof s.column=="number"}function marshalNode(s){let e=TRANSFER_BUFFER;setValue(e,s.id,"i32"),e+=SIZE_OF_INT,setValue(e,s.startIndex,"i32"),e+=SIZE_OF_INT,setValue(e,s.startPosition.row,"i32"),e+=SIZE_OF_INT,setValue(e,s.startPosition.column,"i32"),e+=SIZE_OF_INT,setValue(e,s[0],"i32")}function unmarshalNode(s,e=TRANSFER_BUFFER){let t=getValue(e,"i32");if(t===0)return null;let n=getValue(e+=SIZE_OF_INT,"i32"),r=getValue(e+=SIZE_OF_INT,"i32"),a=getValue(e+=SIZE_OF_INT,"i32"),o=getValue(e+=SIZE_OF_INT,"i32"),l=new Node(INTERNAL,s);return l.id=t,l.startIndex=n,l.startPosition={row:r,column:a},l[0]=o,l}function marshalTreeCursor(s,e=TRANSFER_BUFFER){setValue(e+0*SIZE_OF_INT,s[0],"i32"),setValue(e+1*SIZE_OF_INT,s[1],"i32"),setValue(e+2*SIZE_OF_INT,s[2],"i32"),setValue(e+3*SIZE_OF_INT,s[3],"i32")}function unmarshalTreeCursor(s){s[0]=getValue(TRANSFER_BUFFER+0*SIZE_OF_INT,"i32"),s[1]=getValue(TRANSFER_BUFFER+1*SIZE_OF_INT,"i32"),s[2]=getValue(TRANSFER_BUFFER+2*SIZE_OF_INT,"i32"),s[3]=getValue(TRANSFER_BUFFER+3*SIZE_OF_INT,"i32")}function marshalPoint(s,e){setValue(s,e.row,"i32"),setValue(s+SIZE_OF_INT,e.column,"i32")}function unmarshalPoint(s){return{row:getValue(s,"i32")>>>0,column:getValue(s+SIZE_OF_INT,"i32")>>>0}}function marshalRange(s,e){marshalPoint(s,e.startPosition),marshalPoint(s+=SIZE_OF_POINT,e.endPosition),setValue(s+=SIZE_OF_POINT,e.startIndex,"i32"),setValue(s+=SIZE_OF_INT,e.endIndex,"i32"),s+=SIZE_OF_INT}function unmarshalRange(s){let e={};return e.startPosition=unmarshalPoint(s),s+=SIZE_OF_POINT,e.endPosition=unmarshalPoint(s),s+=SIZE_OF_POINT,e.startIndex=getValue(s,"i32")>>>0,s+=SIZE_OF_INT,e.endIndex=getValue(s,"i32")>>>0,e}function marshalEdit(s){let e=TRANSFER_BUFFER;marshalPoint(e,s.startPosition),e+=SIZE_OF_POINT,marshalPoint(e,s.oldEndPosition),e+=SIZE_OF_POINT,marshalPoint(e,s.newEndPosition),e+=SIZE_OF_POINT,setValue(e,s.startIndex,"i32"),e+=SIZE_OF_INT,setValue(e,s.oldEndIndex,"i32"),e+=SIZE_OF_INT,setValue(e,s.newEndIndex,"i32"),e+=SIZE_OF_INT}for(let s of Object.getOwnPropertyNames(ParserImpl.prototype))Object.defineProperty(Parser.prototype,s,{value:ParserImpl.prototype[s],enumerable:!1,writable:!1});Parser.Language=Language,Module.onRuntimeInitialized=()=>{ParserImpl.init(),resolveInitPromise()}})))}}return Parser})();typeof exports=="object"&&(module.exports=TreeSitter)});var bc={};Va(bc,{main:()=>La,parseArgs:()=>Oa});module.exports=Ja(bc);var Ot=Mn(require("fs")),Fa=Mn(require("path"));function O(s){return(e,t)=>s==="ja"?e:t}function ke(s,e){return s.map(t=>({...t,start:t.start+e,end:t.end+e,children:ke(t.children,e)}))}function Hs(s,e){let t=O(e);if(s.length<2||!s.some(d=>d.op===">&"||d.op==="<&"))return;let n=d=>[t("\u5143\u306E\u6A19\u6E96\u5165\u529B","the original stdin"),t("\u5143\u306E\u6A19\u6E96\u51FA\u529B","the original stdout"),t("\u5143\u306E\u6A19\u6E96\u30A8\u30E9\u30FC\u51FA\u529B","the original stderr")][d]??t(`\u5143\u306E fd ${d}`,`the original fd ${d}`),r=new Map([[0,n(0)],[1,n(1)],[2,n(2)]]),a=[],o=(d,p)=>{r.set(d,p),a.includes(d)||a.push(d)},l=!1;s.forEach((d,p)=>{let f=d.fd!==""?Number(d.fd):d.op.startsWith("<")?0:1;switch(d.op){case">&":case"<&":d.dest==="-"?o(f,t("\u9589\u3058\u305F\u72B6\u614B","closed")):/^\d+$/.test(d.dest)?(o(f,r.get(Number(d.dest))??n(Number(d.dest))),f===2&&d.dest==="1"&&s.slice(p+1).some(m=>(m.fd===""||m.fd==="1")&&/^>>?$|^>\|$/.test(m.op))&&(l=!0)):(o(1,d.dest),o(2,d.dest));break;case"&>":case"&>>":o(1,d.dest),o(2,d.dest);break;case"<<":case"<<-":case"<<<":o(0,t("\u30D2\u30A2\u30C9\u30AD\u30E5\u30E1\u30F3\u30C8\uFF0F\u6587\u5B57\u5217","the here-document/string"));break;default:o(f,d.dest)}});let c=d=>[t("\u6A19\u6E96\u5165\u529B","stdin"),t("\u6A19\u6E96\u51FA\u529B","stdout"),t("\u6A19\u6E96\u30A8\u30E9\u30FC\u51FA\u529B","stderr")][d]??`fd ${d}`,u=a.sort((d,p)=>d-p).map(d=>`${c(d)} \u2192 ${r.get(d)}`).join(t("\u3001",", ")),h=t(`\u30EA\u30C0\u30A4\u30EC\u30AF\u30C8\u306F\u5DE6\u304B\u3089\u9806\u306B\u9069\u7528\u3055\u308C\u308B\u3002\u6700\u7D42\u7684\u306B: ${u}`,`Redirections apply left to right. In the end: ${u}`);return r.get(1)==="/dev/null"&&r.get(2)==="/dev/null"&&(h+=t("\uFF08\u901A\u5E38\u306E\u51FA\u529B\u3082\u30A8\u30E9\u30FC\u51FA\u529B\u3082\u3059\u3079\u3066\u6368\u3066\u308B\uFF09"," (all output, including errors, is discarded)")),r.get(1)===n(2)&&r.get(2)===n(1)&&(h+=t("\uFF08\u6A19\u6E96\u51FA\u529B\u3068\u6A19\u6E96\u30A8\u30E9\u30FC\u51FA\u529B\u304C\u5165\u308C\u66FF\u308F\u308B\uFF09"," (stdout and stderr are swapped)")),l&&(h+=t("\u3002\u6CE8\u610F: `2>&1` \u304C\u30D5\u30A1\u30A4\u30EB\u3078\u306E\u30EA\u30C0\u30A4\u30EC\u30AF\u30C8\u3088\u308A\u5148\u306B\u3042\u308B\u306E\u3067\u3001\u6A19\u6E96\u30A8\u30E9\u30FC\u51FA\u529B\u306F\u30D5\u30A1\u30A4\u30EB\u3067\u306F\u306A\u304F\u5143\u306E\u6A19\u6E96\u51FA\u529B\u306B\u51FA\u308B\uFF08\u4E21\u65B9\u3092\u30D5\u30A1\u30A4\u30EB\u306B\u9001\u308B\u306A\u3089 `>file 2>&1` \u306E\u9806\u306B\u3059\u308B\uFF09",". Note: `2>&1` comes before the file redirection, so stderr goes to the original stdout, not the file (write `>file 2>&1` to send both)")),h}var Bs=[{test:/\bIFS=(''|"")? read (-[a-zA-Z]* )*-[a-zA-Z]*r/,ja:"`IFS= read -r`: 1\u884C\u3092\u52A0\u5DE5\u305B\u305A\u305D\u306E\u307E\u307E\u8AAD\u3080\uFF08`IFS=` \u3067\u524D\u5F8C\u306E\u7A7A\u767D\u3092\u53D6\u308A\u9664\u304B\u305B\u305A\u3001`-r` \u3067\u30D0\u30C3\u30AF\u30B9\u30E9\u30C3\u30B7\u30E5\u3092\u305D\u306E\u307E\u307E\u6B8B\u3059\uFF09",en:"`IFS= read -r`: reads a line exactly as is (`IFS=` keeps surrounding spaces, `-r` keeps backslashes)"},{test:/\$\(cd "?\$\(dirname "?\$(\{BASH_SOURCE(\[0\])?\}|BASH_SOURCE|0|\{0\})"?\)"? (&&|;) pwd( -P)?\)/,ja:"\u30B9\u30AF\u30EA\u30D7\u30C8\u304C\u7F6E\u304B\u308C\u3066\u3044\u308B\u30C7\u30A3\u30EC\u30AF\u30C8\u30EA\u306E\u7D76\u5BFE\u30D1\u30B9\u3092\u5F97\u308B\uFF08\u3069\u3053\u304B\u3089\u5B9F\u884C\u3057\u3066\u3082\u540C\u3058\u5834\u6240\u3092\u6307\u305B\u308B\uFF09",en:"gets the absolute path of the directory the script lives in (the same wherever it is run from)"},{test:/^cd "?\$\(dirname "?\$(\{BASH_SOURCE(\[0\])?\}|BASH_SOURCE|0|\{0\})"?\)"?/,unless:1,ja:"\u30B9\u30AF\u30EA\u30D7\u30C8\u304C\u7F6E\u304B\u308C\u3066\u3044\u308B\u30C7\u30A3\u30EC\u30AF\u30C8\u30EA\u306B\u79FB\u52D5\u3059\u308B\uFF08\u3069\u3053\u304B\u3089\u5B9F\u884C\u3057\u3066\u3082\u76F8\u5BFE\u30D1\u30B9\u304C\u540C\u3058\u3088\u3046\u306B\u4F7F\u3048\u308B\uFF09",en:"moves to the directory the script lives in (so relative paths work wherever it is run from)"},{test:/\b(command -v|type -P|which|hash) \S+ (>\s*\/dev\/null 2>&1|&>\s*\/dev\/null|>\/dev\/null 2>&1)/,ja:"\u30B3\u30DE\u30F3\u30C9\u304C\u30A4\u30F3\u30B9\u30C8\u30FC\u30EB\u3055\u308C\u3066\u3044\u308B\u304B\u3092\u3001\u51FA\u529B\u3092\u51FA\u3055\u305A\u306B\u78BA\u304B\u3081\u308B",en:"checks quietly whether a command is installed"},{test:/\[\[? "?\$\{?BASH_SOURCE(\[0\])?\}?"? (==?|-ef) "?\$\{?0\}?"? \]\]?/,ja:'\u30B9\u30AF\u30EA\u30D7\u30C8\u304C\u76F4\u63A5\u5B9F\u884C\u3055\u308C\u305F\u304B\uFF08`source` \u3067\u8AAD\u307F\u8FBC\u307E\u308C\u305F\u306E\u3067\u306F\u306A\u3044\u304B\uFF09\u3092\u5224\u5B9A\u3059\u308B\uFF08Python \u306E `if __name__ == "__main__"` \u306B\u76F8\u5F53\uFF09',en:'checks whether the script is run directly rather than sourced (like Python\'s `if __name__ == "__main__"`)'},{test:/^set -[a-zA-Z]*e[a-zA-Z]*u[a-zA-Z]*o pipefail\b|^set -[a-zA-Z]*u[a-zA-Z]*e[a-zA-Z]*o pipefail\b/,ja:"\u5B89\u5168\u306A\u30B9\u30AF\u30EA\u30D7\u30C8\u306E\u305F\u3081\u306E\u5B9A\u756A\u8A2D\u5B9A\uFF08strict mode\uFF09: \u30A8\u30E9\u30FC\u3067\u6B62\u307E\u308B\u3001\u672A\u5B9A\u7FA9\u306E\u5909\u6570\u3092\u30A8\u30E9\u30FC\u306B\u3059\u308B\u3001\u30D1\u30A4\u30D7\u306E\u9014\u4E2D\u306E\u5931\u6557\u3082\u898B\u9003\u3055\u306A\u3044",en:'the usual "strict mode": stop on errors, treat unset variables as errors, and catch failures inside pipelines'},{test:/^: "?\$\{\w+:?\?/,ja:'`: "${VAR:?\u2026}"`: \u5FC5\u9808\u306E\u5909\u6570\u304C\u8A2D\u5B9A\u3055\u308C\u3066\u3044\u308B\u304B\u78BA\u304B\u3081\u308B\uFF08\u672A\u8A2D\u5B9A\u306A\u3089\u30E1\u30C3\u30BB\u30FC\u30B8\u3092\u51FA\u3057\u3066\u7D42\u4E86\u3002`:` \u306F\u4F55\u3082\u3057\u306A\u3044\u30B3\u30DE\u30F3\u30C9\uFF09',en:'`: "${VAR:?\u2026}"`: checks that a required variable is set (exits with the message if not; `:` does nothing itself)'},{test:/^: "?\$\{\w+:?=/,ja:'`: "${VAR:=\u2026}"`: \u5909\u6570\u304C\u672A\u8A2D\u5B9A\u306A\u3089\u65E2\u5B9A\u5024\u3092\u4EE3\u5165\u3059\u308B\uFF08`:` \u306F\u4F55\u3082\u3057\u306A\u3044\u30B3\u30DE\u30F3\u30C9\u3067\u3001\u5C55\u958B\u3060\u3051\u3092\u884C\u308F\u305B\u308B\uFF09',en:'`: "${VAR:=\u2026}"`: assigns a default if the variable is unset (`:` does nothing; only the expansion matters)'},{test:/\|\| (true|:)$/,ja:"`|| true`: \u5931\u6557\u3057\u3066\u3082\u7D42\u4E86\u30B9\u30C6\u30FC\u30BF\u30B9\u3092\u6210\u529F\u306B\u3059\u308B\uFF08`set -e` \u3067\u30B9\u30AF\u30EA\u30D7\u30C8\u304C\u6B62\u307E\u3089\u306A\u3044\u3088\u3046\u306B\u3059\u308B\uFF09",en:"`|| true`: turns a failure into success (so `set -e` does not stop the script)"},{test:/^trap .+ EXIT\b/,ja:"`trap \u2026 EXIT`: \u30B9\u30AF\u30EA\u30D7\u30C8\u304C\u3069\u3046\u7D42\u308F\u3063\u3066\u3082\uFF08\u30A8\u30E9\u30FC\u3067\u3082\uFF09\u6700\u5F8C\u306B\u5F8C\u7247\u4ED8\u3051\u3092\u5B9F\u884C\u3059\u308B",en:"`trap \u2026 EXIT`: runs clean-up when the script exits, however it exits"},{test:/^exec (> >\(tee|&> >\(tee|> >\(logger)/,ja:"\u4EE5\u964D\u306E\u3059\u3079\u3066\u306E\u51FA\u529B\u3092\u753B\u9762\u306B\u51FA\u3057\u3064\u3064\u3001\u30ED\u30B0\u306B\u3082\u4FDD\u5B58\u3059\u308B",en:"from here on, everything printed also goes to a log"},{test:/^while (true|:); do|^while (true|:)$/,ja:"\u7121\u9650\u30EB\u30FC\u30D7\uFF08`break` \u3084 `exit` \u3067\u629C\u3051\u308B\uFF09",en:"an endless loop (left with `break` or `exit`)"},{test:/\$\(mktemp( -d)?( [^)]*)?\)/,ja:"`mktemp`: \u4ED6\u3068\u91CD\u306A\u3089\u306A\u3044\u4E00\u6642\u30D5\u30A1\u30A4\u30EB\uFF08-d \u306A\u3089\u30C7\u30A3\u30EC\u30AF\u30C8\u30EA\uFF09\u3092\u5B89\u5168\u306B\u4F5C\u308B",en:"`mktemp`: safely creates a unique temporary file (or directory with -d)"}];function Gs(s,e){let t=O(e),n=s.map(a=>a.replace(/\\\n/g," ").replace(/\s+/g," ").trim()),r=Bs.map(a=>n.some(o=>a.test.test(o)));return Bs.filter((a,o)=>r[o]&&!(a.unless!==void 0&&r[a.unless])).map(a=>t(`\u5B9A\u756A\u306E\u66F8\u304D\u65B9: ${a.ja}`,`Idiom: ${a.en}`))}var x=(s,e)=>({ja:s,en:e});function k(s,e,t=[],n={}){let r={};for(let[a,o,l,c="",u]of t){let h={text:x(o,l)};c.includes("arg")&&(h.arg=!0),c.includes("until")&&(h.untilTerminator=!0),c.includes("fills")&&(h.fillsPositional=!0),c.includes("attached")&&(h.attachedOnly=!0);let d=/lang:(\w+)/.exec(c)?.[1];d&&(h.lang=d),u&&(h.values=u);for(let p of a.split("|"))r[p]=h}return{summary:x(s,e),options:r,...n}}var S=(s,e)=>x(s,e);var Pt={errexit:x("\u30B3\u30DE\u30F3\u30C9\u304C\u5931\u6557\u3057\u305F\u3089\u5373\u5EA7\u306B\u30B9\u30AF\u30EA\u30D7\u30C8\u3092\u7D42\u4E86\uFF08`-e` \u3068\u540C\u3058\uFF09","exit immediately when a command fails (same as `-e`)"),nounset:x("\u672A\u5B9A\u7FA9\u306E\u5909\u6570\u3092\u53C2\u7167\u3057\u305F\u3089\u30A8\u30E9\u30FC\uFF08`-u` \u3068\u540C\u3058\uFF09","error on unset variables (same as `-u`)"),pipefail:x("\u30D1\u30A4\u30D7\u30E9\u30A4\u30F3\u4E2D\u306E\u3069\u308C\u304B\u304C\u5931\u6557\u3057\u305F\u3089\u3001\u30D1\u30A4\u30D7\u30E9\u30A4\u30F3\u5168\u4F53\u3092\u5931\u6557\u6271\u3044\u306B\u3059\u308B","a pipeline fails if any command in it fails"),xtrace:x("\u5B9F\u884C\u3059\u308B\u30B3\u30DE\u30F3\u30C9\u3092\u8868\u793A\u3059\u308B\uFF08`-x` \u3068\u540C\u3058\uFF09","print commands as they run (same as `-x`)"),noclobber:x("`>` \u3067\u65E2\u5B58\u30D5\u30A1\u30A4\u30EB\u3092\u4E0A\u66F8\u304D\u3057\u306A\u3044\uFF08`-C` \u3068\u540C\u3058\uFF09","do not overwrite files with `>` (same as `-C`)"),noglob:x("\u30B0\u30ED\u30D6\uFF08\u30EF\u30A4\u30EB\u30C9\u30AB\u30FC\u30C9\u5C55\u958B\uFF09\u3092\u7121\u52B9\u5316\uFF08`-f` \u3068\u540C\u3058\uFF09","disable globbing (same as `-f`)"),vi:x("\u884C\u7DE8\u96C6\u3092 vi \u30E2\u30FC\u30C9\u306B\u3059\u308B","use vi-style line editing"),emacs:x("\u884C\u7DE8\u96C6\u3092 emacs \u30E2\u30FC\u30C9\u306B\u3059\u308B","use emacs-style line editing"),posix:x("POSIX \u4E92\u63DB\u30E2\u30FC\u30C9\u306B\u3059\u308B","POSIX compatibility mode")},I=(s,e,t=[],n={})=>k(s,e,t,{builtin:!0,...n}),jt={echo:I("\u5F15\u6570\u3092\u7A7A\u767D\u533A\u5207\u308A\u3067\u6A19\u6E96\u51FA\u529B\u306B\u8868\u793A\u3059\u308B","Print arguments to stdout, separated by spaces",[["-n","\u672B\u5C3E\u306E\u6539\u884C\u3092\u51FA\u529B\u3057\u306A\u3044","do not print the trailing newline"],["-e","`\\n` \u306A\u3069\u306E\u30D0\u30C3\u30AF\u30B9\u30E9\u30C3\u30B7\u30E5\u30A8\u30B9\u30B1\u30FC\u30D7\u3092\u89E3\u91C8\u3059\u308B","interpret backslash escapes like `\\n`"],["-E","\u30D0\u30C3\u30AF\u30B9\u30E9\u30C3\u30B7\u30E5\u30A8\u30B9\u30B1\u30FC\u30D7\u3092\u89E3\u91C8\u3057\u306A\u3044\uFF08\u65E2\u5B9A\uFF09","do not interpret escapes (default)"]],{positional:[S("\u8868\u793A\u3059\u308B\u6587\u5B57\u5217","text to print")]}),printf:I("\u66F8\u5F0F\u3092\u6307\u5B9A\u3057\u3066\u6587\u5B57\u5217\u3092\u51FA\u529B\u3059\u308B\uFF08`%s` \u6587\u5B57\u5217, `%d` \u6574\u6570, `\\n` \u6539\u884C \u306A\u3069\uFF09","Print formatted output (`%s` string, `%d` integer, `\\n` newline\u2026)",[["-v","\u51FA\u529B\u305B\u305A\u3001\u7D50\u679C\u3092\u6307\u5B9A\u3057\u305F\u5909\u6570\u306B\u4EE3\u5165\u3059\u308B","assign the output to a variable instead of printing","arg"]],{positional:[S("\u66F8\u5F0F\u6587\u5B57\u5217","format string"),S("\u66F8\u5F0F\u306B\u57CB\u3081\u8FBC\u3080\u5024","value for the format")],positionalLang:["printf"]}),read:I("\u6A19\u6E96\u5165\u529B\u304B\u30891\u884C\u8AAD\u307F\u3001\u5909\u6570\u306B\u4EE3\u5165\u3059\u308B","Read a line from stdin into variables",[["-r","\u30D0\u30C3\u30AF\u30B9\u30E9\u30C3\u30B7\u30E5\u3092\u30A8\u30B9\u30B1\u30FC\u30D7\u6587\u5B57\u3068\u3057\u3066\u6271\u308F\u306A\u3044\uFF08\u307B\u307C\u5E38\u306B\u4ED8\u3051\u308B\u3079\u304D\uFF09","do not treat backslashes as escapes (almost always wanted)"],["-p","\u5165\u529B\u524D\u306B\u30D7\u30ED\u30F3\u30D7\u30C8\u3092\u8868\u793A\u3059\u308B","show a prompt first","arg"],["-s","\u5165\u529B\u3092\u753B\u9762\u306B\u8868\u793A\u3057\u306A\u3044\uFF08\u30D1\u30B9\u30EF\u30FC\u30C9\u5165\u529B\u7528\uFF09","silent mode (for passwords)"],["-a","\u5358\u8A9E\u306B\u5206\u5272\u3057\u3066\u914D\u5217\u306B\u4EE3\u5165\u3059\u308B","read words into an array","arg"],["-n","\u6307\u5B9A\u3057\u305F\u6587\u5B57\u6570\u3060\u3051\u8AAD\u3080","read only this many characters","arg"],["-t","\u30BF\u30A4\u30E0\u30A2\u30A6\u30C8\u79D2\u6570","timeout in seconds","arg"],["-d","\u6539\u884C\u306E\u4EE3\u308F\u308A\u306B\u3053\u306E\u6587\u5B57\u307E\u3067\u8AAD\u3080","read up to this delimiter instead of newline","arg"],["-u","\u6307\u5B9A\u3057\u305F\u30D5\u30A1\u30A4\u30EB\u30C7\u30A3\u30B9\u30AF\u30EA\u30D7\u30BF\u304B\u3089\u8AAD\u3080","read from this file descriptor","arg"]],{positional:[S("\u8AAD\u307F\u8FBC\u3093\u3060\u5024\u3092\u5165\u308C\u308B\u5909\u6570\u540D","variable to store the input")]}),cd:I("\u30AB\u30EC\u30F3\u30C8\u30C7\u30A3\u30EC\u30AF\u30C8\u30EA\u3092\u79FB\u52D5\u3059\u308B","Change the current directory",[["-P","\u30B7\u30F3\u30DC\u30EA\u30C3\u30AF\u30EA\u30F3\u30AF\u3092\u89E3\u6C7A\u3057\u305F\u7269\u7406\u30D1\u30B9\u306B\u79FB\u52D5","use the physical path (resolve symlinks)"],["-L","\u30B7\u30F3\u30DC\u30EA\u30C3\u30AF\u30EA\u30F3\u30AF\u3092\u305F\u3069\u308B\uFF08\u65E2\u5B9A\uFF09","follow symlinks (default)"]],{positional:[S("\u79FB\u52D5\u5148\u306E\u30C7\u30A3\u30EC\u30AF\u30C8\u30EA\uFF08`-` \u306F\u76F4\u524D\u306E\u30C7\u30A3\u30EC\u30AF\u30C8\u30EA\u3001\u7701\u7565\u6642\u306F $HOME\uFF09","target directory (`-` = previous, default $HOME)")]}),pwd:I("\u30AB\u30EC\u30F3\u30C8\u30C7\u30A3\u30EC\u30AF\u30C8\u30EA\u306E\u30D1\u30B9\u3092\u8868\u793A\u3059\u308B","Print the current directory",[["-P","\u30B7\u30F3\u30DC\u30EA\u30C3\u30AF\u30EA\u30F3\u30AF\u3092\u89E3\u6C7A\u3057\u305F\u7269\u7406\u30D1\u30B9\u3092\u8868\u793A","print the physical path"]]),exit:I("\u30B7\u30A7\u30EB\uFF08\u30B9\u30AF\u30EA\u30D7\u30C8\uFF09\u3092\u7D42\u4E86\u3059\u308B","Exit the shell or script",[],{positional:[S("\u7D42\u4E86\u30B9\u30C6\u30FC\u30BF\u30B9\uFF080 \u304C\u6210\u529F\u3001\u7701\u7565\u6642\u306F\u76F4\u524D\u306E\u30B3\u30DE\u30F3\u30C9\u306E\u30B9\u30C6\u30FC\u30BF\u30B9\uFF09","exit status (0 = success; default: status of last command)")]}),return:I("\u95A2\u6570\u304B\u3089\u623B\u308B","Return from a function",[],{positional:[S("\u623B\u308A\u5024\u3068\u306A\u308B\u7D42\u4E86\u30B9\u30C6\u30FC\u30BF\u30B9","exit status to return")]}),set:I("\u30B7\u30A7\u30EB\u30AA\u30D7\u30B7\u30E7\u30F3\u3084\u4F4D\u7F6E\u30D1\u30E9\u30E1\u30FC\u30BF\u3092\u8A2D\u5B9A\u3059\u308B","Set shell options or positional parameters",[["-e","\u30B3\u30DE\u30F3\u30C9\u304C\u5931\u6557\u3057\u305F\u3089\u5373\u5EA7\u306B\u30B9\u30AF\u30EA\u30D7\u30C8\u3092\u7D42\u4E86\u3059\u308B","exit immediately if a command fails"],["-u","\u672A\u5B9A\u7FA9\u306E\u5909\u6570\u3092\u53C2\u7167\u3057\u305F\u3089\u30A8\u30E9\u30FC\u306B\u3059\u308B","treat unset variables as an error"],["-x","\u5B9F\u884C\u3059\u308B\u30B3\u30DE\u30F3\u30C9\u3092\u5C55\u958B\u5F8C\u306E\u5F62\u3067\u8868\u793A\u3059\u308B\uFF08\u30C7\u30D0\u30C3\u30B0\u7528\uFF09","print each command after expansion (debugging)"],["-v","\u8AAD\u307F\u8FBC\u3093\u3060\u884C\u3092\u305D\u306E\u307E\u307E\u8868\u793A\u3059\u308B","print input lines as they are read"],["-o","\u540D\u524D\u3067\u30AA\u30D7\u30B7\u30E7\u30F3\u3092\u6709\u52B9\u306B\u3059\u308B","enable an option by name","arg",Pt],["-f","\u30B0\u30ED\u30D6\uFF08\u30EF\u30A4\u30EB\u30C9\u30AB\u30FC\u30C9\u5C55\u958B\uFF09\u3092\u7121\u52B9\u306B\u3059\u308B","disable globbing"],["-C","`>` \u3067\u65E2\u5B58\u30D5\u30A1\u30A4\u30EB\u3092\u4E0A\u66F8\u304D\u3057\u306A\u3044","do not overwrite files with `>`"],["-n","\u30B3\u30DE\u30F3\u30C9\u3092\u8AAD\u3080\u3060\u3051\u3067\u5B9F\u884C\u3057\u306A\u3044\uFF08\u69CB\u6587\u30C1\u30A7\u30C3\u30AF\uFF09","read commands but do not execute (syntax check)"],["-a","\u4EE5\u964D\u306B\u8A2D\u5B9A\u3057\u305F\u5909\u6570\u3092\u81EA\u52D5\u3067\u30A8\u30AF\u30B9\u30DD\u30FC\u30C8\u3059\u308B","export all subsequently set variables"],["--","\u4EE5\u964D\u306E\u5F15\u6570\u3092\u4F4D\u7F6E\u30D1\u30E9\u30E1\u30FC\u30BF $1, $2... \u306B\u8A2D\u5B9A\u3059\u308B","set the remaining arguments as $1, $2\u2026"]]),shopt:I("bash \u56FA\u6709\u306E\u30B7\u30A7\u30EB\u30AA\u30D7\u30B7\u30E7\u30F3\u3092\u8A2D\u5B9A\u30FB\u8868\u793A\u3059\u308B","Set or show bash-specific shell options",[["-s","\u30AA\u30D7\u30B7\u30E7\u30F3\u3092\u6709\u52B9\u306B\u3059\u308B","enable the options"],["-u","\u30AA\u30D7\u30B7\u30E7\u30F3\u3092\u7121\u52B9\u306B\u3059\u308B","disable the options"],["-q","\u4F55\u3082\u8868\u793A\u305B\u305A\u3001\u7D42\u4E86\u30B9\u30C6\u30FC\u30BF\u30B9\u3067\u72B6\u614B\u3092\u8FD4\u3059","quiet; report via exit status"]],{positional:[S("\u30AA\u30D7\u30B7\u30E7\u30F3\u540D\uFF08\u4F8B: nullglob, globstar, extglob\uFF09","option name (e.g. nullglob, globstar, extglob)")]}),print:I("\u5F15\u6570\u3092\u8868\u793A\u3059\u308B\uFF08ksh\u30FBmksh\u30FBzsh \u306E\u7D44\u307F\u8FBC\u307F\u3002bash \u306B\u306F\u306A\u3044\u3002`echo` \u3068\u9055\u3044\u30AA\u30D7\u30B7\u30E7\u30F3\u306E\u6271\u3044\u304C\u6C7A\u307E\u3063\u3066\u3044\u308B\uFF09","Print the arguments (a ksh, mksh and zsh builtin, not in bash; unlike `echo` its options are well defined)",[["-n","\u6700\u5F8C\u306B\u6539\u884C\u3092\u51FA\u3055\u306A\u3044","do not print a trailing newline"],["-r","`\\` \u306B\u3088\u308B\u30A8\u30B9\u30B1\u30FC\u30D7\u3092\u89E3\u91C8\u3057\u306A\u3044","do not interpret `\\` escapes"],["-R","`-r` \u306B\u52A0\u3048\u3066\u3001\u4EE5\u964D\u306E `-` \u3067\u59CB\u307E\u308B\u5F15\u6570\u3082\u30AA\u30D7\u30B7\u30E7\u30F3\u3068\u3057\u3066\u6271\u308F\u306A\u3044","like `-r`, and treat later `-` arguments as text"],["-u","\u6307\u5B9A\u3057\u305F\u30D5\u30A1\u30A4\u30EB\u8A18\u8FF0\u5B50\u306B\u66F8\u304D\u51FA\u3059\uFF08`-u2` \u3067\u6A19\u6E96\u30A8\u30E9\u30FC\u51FA\u529B\uFF09","write to the given file descriptor (`-u2` for stderr)","arg"],["-f","printf \u3068\u540C\u3058\u66F8\u5F0F\u3067\u8868\u793A\u3059\u308B\uFF08ksh93\uFF09","format like printf (ksh93)","arg"],["-s","\u30B3\u30DE\u30F3\u30C9\u5C65\u6B74\u306B\u8FFD\u52A0\u3059\u308B","append to the command history"],["-l","\u5F15\u6570\u30921\u884C\u305A\u3064\u8868\u793A\u3059\u308B\uFF08zsh\uFF09","print each argument on its own line (zsh)"]]),whence:I("\u30B3\u30DE\u30F3\u30C9\u540D\u304C\u3069\u3046\u89E3\u91C8\u3055\u308C\u308B\u304B\uFF08\u30D1\u30B9\u3084\u30A8\u30A4\u30EA\u30A2\u30B9\u306A\u3069\uFF09\u3092\u8868\u793A\u3059\u308B\uFF08ksh\u30FBmksh\u30FBzsh \u306E\u7D44\u307F\u8FBC\u307F\u3002bash \u306E `type`\u30FB`command -v` \u306B\u76F8\u5F53\uFF09","Show how a command name is interpreted (a ksh, mksh and zsh builtin; like bash's `type` / `command -v`)",[["-v","\u7A2E\u985E\uFF08\u7D44\u307F\u8FBC\u307F\u30FB\u95A2\u6570\u30FB\u30A8\u30A4\u30EA\u30A2\u30B9\u306A\u3069\uFF09\u3082\u8868\u793A\u3059\u308B","say what kind of command it is"],["-p","\u95A2\u6570\u3084\u30A8\u30A4\u30EA\u30A2\u30B9\u3092\u7121\u8996\u3057\u3066 PATH \u304B\u3089\u63A2\u3059","search PATH only, ignoring functions and aliases"],["-a","\u898B\u3064\u304B\u3063\u305F\u3082\u306E\u3092\u3059\u3079\u3066\u8868\u793A\u3059\u308B","show every match"]],{positional:[S("\u8ABF\u3079\u308B\u30B3\u30DE\u30F3\u30C9\u540D","command name to look up")]}),trap:I("\u30B7\u30B0\u30CA\u30EB\u3084\u7D42\u4E86\u6642\u306B\u5B9F\u884C\u3059\u308B\u30B3\u30DE\u30F3\u30C9\u3092\u767B\u9332\u3059\u308B","Run a command when a signal or event occurs",[["-l","\u30B7\u30B0\u30CA\u30EB\u540D\u306E\u4E00\u89A7\u3092\u8868\u793A","list signal names"],["-p","\u767B\u9332\u6E08\u307F\u306E trap \u3092\u8868\u793A","show registered traps"]],{positional:[S("\u5B9F\u884C\u3059\u308B\u30B3\u30DE\u30F3\u30C9\uFF08`-` \u3067\u30EA\u30BB\u30C3\u30C8\u3001\u7A7A\u6587\u5B57\u3067\u7121\u8996\uFF09","command to run (`-` resets, empty string ignores)"),S("\u5BFE\u8C61\u306E\u30B7\u30B0\u30CA\u30EB\uFF08EXIT, ERR, INT, TERM \u306A\u3069\uFF09","signal (EXIT, ERR, INT, TERM\u2026)")]}),source:I("\u30D5\u30A1\u30A4\u30EB\u3092\u8AAD\u307F\u8FBC\u307F\u3001\u73FE\u5728\u306E\u30B7\u30A7\u30EB\u3067\u5B9F\u884C\u3059\u308B\uFF08\u5909\u6570\u3084\u95A2\u6570\u304C\u73FE\u5728\u306E\u30B7\u30A7\u30EB\u306B\u6B8B\u308B\uFF09","Run a file in the current shell (its variables and functions persist)",[],{positional:[S("\u8AAD\u307F\u8FBC\u3080\u30D5\u30A1\u30A4\u30EB","file to source"),S("\u305D\u306E\u30D5\u30A1\u30A4\u30EB\u306B\u6E21\u3059\u5F15\u6570","arguments passed to it")]}),".":I("\u30D5\u30A1\u30A4\u30EB\u3092\u8AAD\u307F\u8FBC\u307F\u3001\u73FE\u5728\u306E\u30B7\u30A7\u30EB\u3067\u5B9F\u884C\u3059\u308B\uFF08`source` \u3068\u540C\u3058\uFF09","Run a file in the current shell (same as `source`)",[],{positional:[S("\u8AAD\u307F\u8FBC\u3080\u30D5\u30A1\u30A4\u30EB","file to source")]}),eval:I("\u5F15\u6570\u3092\u9023\u7D50\u3057\u3066\u6587\u5B57\u5217\u3092\u30B3\u30DE\u30F3\u30C9\u3068\u3057\u3066\u518D\u89E3\u91C8\u30FB\u5B9F\u884C\u3059\u308B\uFF08\u6CE8\u5165\u306B\u6CE8\u610F\uFF09","Concatenate arguments and execute the result as a command (beware of injection)"),exec:I("\u73FE\u5728\u306E\u30B7\u30A7\u30EB\u3092\u6307\u5B9A\u3057\u305F\u30B3\u30DE\u30F3\u30C9\u3067\u7F6E\u304D\u63DB\u3048\u308B\u3002\u5F15\u6570\u306A\u3057\u306A\u3089\u30EA\u30C0\u30A4\u30EC\u30AF\u30C8\u3092\u30B7\u30A7\u30EB\u81EA\u4F53\u306B\u9069\u7528","Replace the shell with the command; without a command, apply redirections to the shell itself",[],{wraps:!0}),shift:I("\u4F4D\u7F6E\u30D1\u30E9\u30E1\u30FC\u30BF\u3092\u5DE6\u306B\u305A\u3089\u3059\uFF08$2 \u304C $1 \u306B\u306A\u308B\uFF09","Shift positional parameters left ($2 becomes $1)",[],{positional:[S("\u305A\u3089\u3059\u6570\uFF08\u7701\u7565\u6642\u306F 1\uFF09","how many (default 1)")]}),getopts:I("\u30B9\u30AF\u30EA\u30D7\u30C8\u306E\u30AA\u30D7\u30B7\u30E7\u30F3\u5F15\u6570\u30921\u3064\u305A\u3064\u89E3\u6790\u3059\u308B\uFF08`while getopts \u2026 ; do case \u2026 esac; done` \u306E\u5F62\u3067\u4F7F\u3044\u3001\u6B21\u306B\u8AAD\u3080\u4F4D\u7F6E\u306F $OPTIND\uFF09","Parse script options one at a time (used as `while getopts \u2026; do case \u2026 esac; done`; $OPTIND tracks the position)",[],{positional:[S("\u53D7\u3051\u4ED8\u3051\u308B\u30AA\u30D7\u30B7\u30E7\u30F3\u6587\u5B57\uFF08`:` \u4ED8\u304D\u306F\u5F15\u6570\u3092\u53D6\u308B\uFF09","option letters (`:` means takes an argument)"),S("\u898B\u3064\u3051\u305F\u30AA\u30D7\u30B7\u30E7\u30F3\u306E\u6587\u5B57\u3092\u5165\u308C\u308B\u5909\u6570\u540D","variable that receives the option letter")],positionalLang:["getopts"]}),wait:I("\u30D0\u30C3\u30AF\u30B0\u30E9\u30A6\u30F3\u30C9\u30B8\u30E7\u30D6\u306E\u7D42\u4E86\u3092\u5F85\u3064","Wait for background jobs to finish",[["-n","\u3069\u308C\u304B1\u3064\u306E\u7D42\u4E86\u3092\u5F85\u3064","wait for any single job"]],{positional:[S("\u5F85\u3064\u30D7\u30ED\u30BB\u30B9ID\uFF08\u7701\u7565\u6642\u306F\u5168\u3066\uFF09","PID to wait for (default: all)")]}),kill:I("\u30D7\u30ED\u30BB\u30B9\u306B\u30B7\u30B0\u30CA\u30EB\u3092\u9001\u308B\uFF08\u65E2\u5B9A\u306F TERM \u3067\u7D42\u4E86\u8981\u6C42\uFF09","Send a signal to a process (default TERM)",[["-9|-KILL","\u5F37\u5236\u7D42\u4E86\uFF08KILL \u30B7\u30B0\u30CA\u30EB\uFF09","force kill (SIGKILL)"],["-s","\u9001\u308B\u30B7\u30B0\u30CA\u30EB\u540D","signal name to send","arg"],["-l","\u30B7\u30B0\u30CA\u30EB\u4E00\u89A7\u3092\u8868\u793A","list signals"],["-0","\u30D7\u30ED\u30BB\u30B9\u304C\u5B58\u5728\u3059\u308B\u304B\u78BA\u8A8D\u3059\u308B\u3060\u3051","only check whether the process exists"]],{positional:[S("\u5BFE\u8C61\u306E\u30D7\u30ED\u30BB\u30B9ID","target PID")]}),test:I("\u6761\u4EF6\u5F0F\u3092\u8A55\u4FA1\u3057\u3001\u771F\u306A\u3089 0\u3001\u507D\u306A\u3089 1 \u3092\u8FD4\u3059","Evaluate a conditional expression; exit 0 if true"),true:I("\u4F55\u3082\u305B\u305A\u6210\u529F\uFF08\u7D42\u4E86\u30B9\u30C6\u30FC\u30BF\u30B9 0\uFF09\u3092\u8FD4\u3059","Do nothing and succeed (exit 0)"),false:I("\u4F55\u3082\u305B\u305A\u5931\u6557\uFF08\u7D42\u4E86\u30B9\u30C6\u30FC\u30BF\u30B9 1\uFF09\u3092\u8FD4\u3059","Do nothing and fail (exit 1)"),":":I("\u4F55\u3082\u3057\u306A\u3044\u30B3\u30DE\u30F3\u30C9\uFF08\u5E38\u306B\u6210\u529F\uFF09\u3002\u7121\u9650\u30EB\u30FC\u30D7 `while :` \u3084\u5F15\u6570\u306E\u5C55\u958B\u3060\u3051\u3057\u305F\u3044\u6642\u306B\u4F7F\u3046","No-op that always succeeds; used in `while :` or to evaluate expansions"),alias:I("\u30B3\u30DE\u30F3\u30C9\u306E\u5225\u540D\u3092\u5B9A\u7FA9\u3059\u308B","Define a command alias"),unalias:I("\u5225\u540D\u3092\u524A\u9664\u3059\u308B","Remove an alias"),type:I("\u30B3\u30DE\u30F3\u30C9\u306E\u7A2E\u985E\uFF08\u30D3\u30EB\u30C8\u30A4\u30F3\u30FB\u95A2\u6570\u30FB\u5916\u90E8\u30B3\u30DE\u30F3\u30C9\u306A\u3069\uFF09\u3092\u8868\u793A\u3059\u308B","Show how a name would be interpreted (builtin, function, file\u2026)",[["-t","\u7A2E\u985E\u3060\u3051\u30921\u8A9E\u3067\u8868\u793A","print only the kind"],["-a","\u8A72\u5F53\u3059\u308B\u5168\u3066\u306E\u5019\u88DC\u3092\u8868\u793A","show all matches"],["-P","\u5916\u90E8\u30B3\u30DE\u30F3\u30C9\u306E\u30D1\u30B9\u3092\u8868\u793A","print the path of the executable"]]),command:I("\u95A2\u6570\u3084\u5225\u540D\u3092\u7121\u8996\u3057\u3066\u30B3\u30DE\u30F3\u30C9\u3092\u5B9F\u884C\u3059\u308B\u3002`-v` \u3067\u5B58\u5728\u78BA\u8A8D\u306B\u3088\u304F\u4F7F\u3046","Run a command ignoring functions/aliases; `-v` is often used to check existence",[["-v","\u30B3\u30DE\u30F3\u30C9\u306E\u30D1\u30B9\u307E\u305F\u306F\u540D\u524D\u3092\u8868\u793A\uFF08\u5B58\u5728\u78BA\u8A8D\u306B\u4F7F\u3046\uFF09","print the command path or name (existence check)"],["-V","\u30B3\u30DE\u30F3\u30C9\u306E\u8A73\u3057\u3044\u8AAC\u660E\u3092\u8868\u793A","print a verbose description"],["-p","\u6A19\u6E96\u306E PATH \u3067\u691C\u7D22\u3059\u308B","use a default PATH"]],{wraps:!0}),builtin:I("\u540C\u540D\u306E\u95A2\u6570\u304C\u3042\u3063\u3066\u3082\u30B7\u30A7\u30EB\u306E\u30D3\u30EB\u30C8\u30A4\u30F3\u3092\u5B9F\u884C\u3059\u308B","Run the shell builtin even if a function has the same name",[],{wraps:!0}),hash:I("\u30B3\u30DE\u30F3\u30C9\u306E\u30D1\u30B9\u306E\u30AD\u30E3\u30C3\u30B7\u30E5\u3092\u64CD\u4F5C\u3059\u308B","Manage the command path cache"),jobs:I("\u73FE\u5728\u306E\u30B8\u30E7\u30D6\u4E00\u89A7\u3092\u8868\u793A\u3059\u308B","List current jobs"),fg:I("\u30B8\u30E7\u30D6\u3092\u30D5\u30A9\u30A2\u30B0\u30E9\u30A6\u30F3\u30C9\u306B\u623B\u3059","Bring a job to the foreground"),bg:I("\u505C\u6B62\u4E2D\u306E\u30B8\u30E7\u30D6\u3092\u30D0\u30C3\u30AF\u30B0\u30E9\u30A6\u30F3\u30C9\u3067\u518D\u958B\u3059\u308B","Resume a stopped job in the background"),disown:I("\u30B8\u30E7\u30D6\u3092\u30B7\u30A7\u30EB\u306E\u7BA1\u7406\u304B\u3089\u5916\u3059\uFF08\u30B7\u30A7\u30EB\u7D42\u4E86\u6642\u306B\u7D42\u4E86\u3055\u305B\u306A\u3044\uFF09","Remove jobs from the job table (they survive shell exit)"),umask:I("\u65B0\u898F\u30D5\u30A1\u30A4\u30EB\u306E\u30D1\u30FC\u30DF\u30C3\u30B7\u30E7\u30F3\u30DE\u30B9\u30AF\uFF08\u4F5C\u6210\u6642\u306B\u5916\u3059\u6A29\u9650\uFF09\u3092\u8A2D\u5B9A\u30FB\u8868\u793A\u3059\u308B","Set or show the file creation mask (permissions removed from new files)",[["-S","\u8A18\u53F7\u5F62\u5F0F\uFF08u=rwx,g=rx,o=rx \u306A\u3069\uFF09\u3067\u8868\u793A\u3059\u308B","show in symbolic form (u=rwx,g=rx,\u2026)"],["-p","\u518D\u5165\u529B\u3067\u304D\u308B\u5F62\u3067\u8868\u793A\u3059\u308B","output in a reusable form"]],{positional:[S("\u30DE\u30B9\u30AF\u5024\uFF08\u4F8B: `022`\uFF09","mask (e.g. `022`)")],positionalLang:["umask"]}),ulimit:I("\u30D7\u30ED\u30BB\u30B9\u306E\u30EA\u30BD\u30FC\u30B9\u4E0A\u9650\u3092\u8A2D\u5B9A\u30FB\u8868\u793A\u3059\u308B","Set or show resource limits",[["-n","\u30AA\u30FC\u30D7\u30F3\u3067\u304D\u308B\u30D5\u30A1\u30A4\u30EB\u6570","max open files"],["-c","\u30B3\u30A2\u30C0\u30F3\u30D7\u306E\u30B5\u30A4\u30BA","core dump size"],["-a","\u5168\u3066\u306E\u4E0A\u9650\u3092\u8868\u793A","show all limits"]]),mapfile:I("\u6A19\u6E96\u5165\u529B\u306E\u5404\u884C\u3092\u914D\u5217\u306B\u8AAD\u307F\u8FBC\u3080","Read lines from stdin into an array",[["-t","\u5404\u884C\u672B\u306E\u6539\u884C\u3092\u53D6\u308A\u9664\u304F","strip trailing newlines"],["-n","\u8AAD\u3080\u884C\u6570\u306E\u4E0A\u9650","max lines to read","arg"],["-d","\u884C\u533A\u5207\u308A\u6587\u5B57","line delimiter","arg"]],{positional:[S("\u683C\u7D0D\u3059\u308B\u914D\u5217\u540D\uFF08\u7701\u7565\u6642\u306F MAPFILE\uFF09","array name (default MAPFILE)")]}),readarray:I("\u6A19\u6E96\u5165\u529B\u306E\u5404\u884C\u3092\u914D\u5217\u306B\u8AAD\u307F\u8FBC\u3080\uFF08mapfile \u3068\u540C\u3058\uFF09","Read lines from stdin into an array (same as mapfile)",[["-t","\u5404\u884C\u672B\u306E\u6539\u884C\u3092\u53D6\u308A\u9664\u304F","strip trailing newlines"]],{positional:[S("\u683C\u7D0D\u3059\u308B\u914D\u5217\u540D","array name")]}),let:I("\u7B97\u8853\u5F0F\u3092\u8A55\u4FA1\u3059\u308B\uFF08\u4F8B: `let i++`\uFF09","Evaluate arithmetic expressions (e.g. `let i++`)"),pushd:I("\u30C7\u30A3\u30EC\u30AF\u30C8\u30EA\u30B9\u30BF\u30C3\u30AF\u306B\u7A4D\u3093\u3067\u79FB\u52D5\u3059\u308B","Push a directory onto the stack and cd to it"),popd:I("\u30C7\u30A3\u30EC\u30AF\u30C8\u30EA\u30B9\u30BF\u30C3\u30AF\u304B\u3089\u53D6\u308A\u51FA\u3057\u3066\u305D\u3053\u3078\u623B\u308B","Pop the directory stack and cd to it"),dirs:I("\u30C7\u30A3\u30EC\u30AF\u30C8\u30EA\u30B9\u30BF\u30C3\u30AF\u3092\u8868\u793A\u3059\u308B","Show the directory stack"),break:I("\u30EB\u30FC\u30D7\u3092\u629C\u3051\u308B","Exit from a loop",[],{positional:[S("\u629C\u3051\u308B\u30EB\u30FC\u30D7\u306E\u6BB5\u6570","number of loop levels")]}),continue:I("\u30EB\u30FC\u30D7\u306E\u6B21\u306E\u7E70\u308A\u8FD4\u3057\u306B\u9032\u3080","Skip to the next loop iteration",[],{positional:[S("\u5BFE\u8C61\u306E\u30EB\u30FC\u30D7\u306E\u6BB5\u6570","number of loop levels")]}),unset:I("\u5909\u6570\u3084\u95A2\u6570\u3092\u524A\u9664\u3059\u308B","Unset variables or functions",[["-v","\u5909\u6570\u3092\u524A\u9664","unset variables"],["-f","\u95A2\u6570\u3092\u524A\u9664","unset functions"]],{positional:[S("\u524A\u9664\u3059\u308B\u540D\u524D","name to unset")]}),enable:I("\u30D3\u30EB\u30C8\u30A4\u30F3\u3092\u6709\u52B9\u30FB\u7121\u52B9\u306B\u3059\u308B","Enable or disable builtins"),help:I("\u30D3\u30EB\u30C8\u30A4\u30F3\u306E\u30D8\u30EB\u30D7\u3092\u8868\u793A\u3059\u308B","Show help for builtins"),history:I("\u30B3\u30DE\u30F3\u30C9\u5C65\u6B74\u3092\u8868\u793A\u30FB\u64CD\u4F5C\u3059\u308B","Show or manipulate command history"),complete:I("\u30B3\u30DE\u30F3\u30C9\u306E\u88DC\u5B8C\u65B9\u6CD5\u3092\u5B9A\u7FA9\u3059\u308B","Define programmable completion"),times:I("\u30B7\u30A7\u30EB\u3068\u5B50\u30D7\u30ED\u30BB\u30B9\u306E\u7D2F\u7A4DCPU\u6642\u9593\u3092\u8868\u793A\u3059\u308B","Print accumulated CPU times"),caller:I("\u547C\u3073\u51FA\u3057\u5143\u306E\u884C\u756A\u53F7\u30FB\u95A2\u6570\u540D\u3092\u8868\u793A\u3059\u308B\uFF08\u30C7\u30D0\u30C3\u30B0\u7528\uFF09","Print the caller context (debugging)")};var $e=S("\u5BFE\u8C61\u306E\u30D5\u30A1\u30A4\u30EB","target file"),Ke={ls:k("\u30C7\u30A3\u30EC\u30AF\u30C8\u30EA\u306E\u4E2D\u8EAB\uFF08\u30D5\u30A1\u30A4\u30EB\u4E00\u89A7\uFF09\u3092\u8868\u793A\u3059\u308B","List directory contents",[["-l","\u8A73\u7D30\u5F62\u5F0F\uFF08\u6A29\u9650\u30FB\u6240\u6709\u8005\u30FB\u30B5\u30A4\u30BA\u30FB\u66F4\u65B0\u65E5\u6642\uFF09\u3067\u8868\u793A","long format (permissions, owner, size, mtime)"],["-a|--all","`.` \u3067\u59CB\u307E\u308B\u96A0\u3057\u30D5\u30A1\u30A4\u30EB\u3082\u8868\u793A","include hidden files starting with `.`"],["-A|--almost-all","`.` \u3068 `..` \u4EE5\u5916\u306E\u96A0\u3057\u30D5\u30A1\u30A4\u30EB\u3082\u8868\u793A","include hidden files except `.` and `..`"],["-h|--human-readable","\u30B5\u30A4\u30BA\u3092 K, M, G \u306A\u3069\u8AAD\u307F\u3084\u3059\u3044\u5358\u4F4D\u3067\u8868\u793A","human-readable sizes (K, M, G)"],["-t","\u66F4\u65B0\u65E5\u6642\u306E\u65B0\u3057\u3044\u9806\u306B\u4E26\u3079\u308B","sort by modification time, newest first"],["-r|--reverse","\u4E26\u3073\u9806\u3092\u9006\u306B\u3059\u308B","reverse the sort order"],["-S","\u30B5\u30A4\u30BA\u306E\u5927\u304D\u3044\u9806\u306B\u4E26\u3079\u308B","sort by size, largest first"],["-R|--recursive","\u30B5\u30D6\u30C7\u30A3\u30EC\u30AF\u30C8\u30EA\u3082\u518D\u5E30\u7684\u306B\u8868\u793A","list subdirectories recursively"],["-1","1\u884C\u306B1\u30D5\u30A1\u30A4\u30EB\u305A\u3064\u8868\u793A","one entry per line"],["-d|--directory","\u30C7\u30A3\u30EC\u30AF\u30C8\u30EA\u306E\u4E2D\u8EAB\u3067\u306F\u306A\u304F\u30C7\u30A3\u30EC\u30AF\u30C8\u30EA\u81EA\u4F53\u3092\u8868\u793A","list directories themselves, not their contents"],["-F|--classify","\u7A2E\u985E\u3092\u793A\u3059\u8A18\u53F7\uFF08`/` \u30C7\u30A3\u30EC\u30AF\u30C8\u30EA, `*` \u5B9F\u884C\u53EF\u80FD \u306A\u3069\uFF09\u3092\u4ED8\u3051\u308B","append type indicators (`/`, `*`\u2026)"],["--color","\u8272\u4ED8\u304D\u3067\u8868\u793A","colorize output"]],{positional:[S("\u8868\u793A\u3059\u308B\u30D5\u30A1\u30A4\u30EB\u307E\u305F\u306F\u30C7\u30A3\u30EC\u30AF\u30C8\u30EA\uFF08\u7701\u7565\u6642\u306F\u30AB\u30EC\u30F3\u30C8\uFF09","file or directory (default: current)")]}),cat:k("\u30D5\u30A1\u30A4\u30EB\u306E\u5185\u5BB9\u3092\u9023\u7D50\u3057\u3066\u6A19\u6E96\u51FA\u529B\u306B\u51FA\u3059","Concatenate files and print to stdout",[["-n|--number","\u884C\u756A\u53F7\u3092\u4ED8\u3051\u308B","number all lines"],["-A|--show-all","\u6539\u884C\u3084\u30BF\u30D6\u306A\u3069\u306E\u5236\u5FA1\u6587\u5B57\u3092\u53EF\u8996\u5316","show non-printing characters"],["-s|--squeeze-blank","\u9023\u7D9A\u3059\u308B\u7A7A\u884C\u30921\u884C\u306B\u307E\u3068\u3081\u308B","squeeze repeated blank lines"]],{positional:[S("\u51FA\u529B\u3059\u308B\u30D5\u30A1\u30A4\u30EB\uFF08`-` \u307E\u305F\u306F\u7701\u7565\u3067\u6A19\u6E96\u5165\u529B\uFF09","file to print (`-` or none = stdin)")]}),grep:k("\u30D1\u30BF\u30FC\u30F3\uFF08\u6B63\u898F\u8868\u73FE\uFF09\u306B\u4E00\u81F4\u3059\u308B\u884C\u3092\u691C\u7D22\u3057\u3066\u8868\u793A\u3059\u308B","Print lines matching a pattern (regex)",[["-i|--ignore-case","\u5927\u6587\u5B57\u30FB\u5C0F\u6587\u5B57\u3092\u533A\u5225\u3057\u306A\u3044","ignore case"],["-v|--invert-match","\u4E00\u81F4\u3057\u306A\u3044\u884C\u3092\u8868\u793A\u3059\u308B","select non-matching lines"],["-r|--recursive","\u30C7\u30A3\u30EC\u30AF\u30C8\u30EA\u5185\u3092\u518D\u5E30\u7684\u306B\u691C\u7D22","search directories recursively"],["-R|--dereference-recursive","\u30B7\u30F3\u30DC\u30EA\u30C3\u30AF\u30EA\u30F3\u30AF\u3082\u305F\u3069\u3063\u3066\u518D\u5E30\u7684\u306B\u691C\u7D22","recursive, following symlinks"],["-n|--line-number","\u884C\u756A\u53F7\u3092\u8868\u793A","show line numbers"],["-l|--files-with-matches","\u4E00\u81F4\u3057\u305F\u30D5\u30A1\u30A4\u30EB\u540D\u3060\u3051\u3092\u8868\u793A","print only names of matching files"],["-L|--files-without-match","\u4E00\u81F4\u3057\u306A\u304B\u3063\u305F\u30D5\u30A1\u30A4\u30EB\u540D\u3060\u3051\u3092\u8868\u793A","print names of files without matches"],["-c|--count","\u4E00\u81F4\u3057\u305F\u884C\u6570\u3092\u8868\u793A","print a count of matching lines"],["-o|--only-matching","\u884C\u5168\u4F53\u3067\u306F\u306A\u304F\u4E00\u81F4\u3057\u305F\u90E8\u5206\u3060\u3051\u3092\u8868\u793A","print only the matched parts"],["-q|--quiet|--silent","\u4F55\u3082\u51FA\u529B\u305B\u305A\u3001\u7D42\u4E86\u30B9\u30C6\u30FC\u30BF\u30B9\u3060\u3051\u3067\u7D50\u679C\u3092\u8FD4\u3059\uFF08\u6761\u4EF6\u5224\u5B9A\u7528\uFF09","print nothing; report via exit status"],["-s|--no-messages","\u30D5\u30A1\u30A4\u30EB\u304C\u8AAD\u3081\u306A\u3044\u7B49\u306E\u30A8\u30E9\u30FC\u3092\u8868\u793A\u3057\u306A\u3044","suppress error messages"],["-E|--extended-regexp","\u62E1\u5F35\u6B63\u898F\u8868\u73FE(ERE)\u3092\u4F7F\u3046\uFF08`+ ? | ()` \u304C\u305D\u306E\u307E\u307E\u4F7F\u3048\u308B\uFF09","use extended regex (ERE)"],["-F|--fixed-strings","\u30D1\u30BF\u30FC\u30F3\u3092\u6B63\u898F\u8868\u73FE\u3067\u306F\u306A\u304F\u56FA\u5B9A\u6587\u5B57\u5217\u3068\u3057\u3066\u6271\u3046","treat the pattern as a fixed string"],["-P|--perl-regexp","Perl \u4E92\u63DB\u6B63\u898F\u8868\u73FE(PCRE)\u3092\u4F7F\u3046","use Perl-compatible regex"],["-w|--word-regexp","\u5358\u8A9E\u5168\u4F53\u3068\u3057\u3066\u4E00\u81F4\u3059\u308B\u5834\u5408\u306E\u307F","match whole words only"],["-x|--line-regexp","\u884C\u5168\u4F53\u304C\u4E00\u81F4\u3059\u308B\u5834\u5408\u306E\u307F","match whole lines only"],["-e|--regexp","\u691C\u7D22\u30D1\u30BF\u30FC\u30F3\u3092\u6307\u5B9A\uFF08`-` \u3067\u59CB\u307E\u308B\u30D1\u30BF\u30FC\u30F3\u3084\u8907\u6570\u6307\u5B9A\u306B\u4F7F\u3046\uFF09","specify a pattern (useful for several or `-`-prefixed ones)","arg fills lang:regex"],["-f|--file","\u30D1\u30BF\u30FC\u30F3\u3092\u30D5\u30A1\u30A4\u30EB\u304B\u3089\u8AAD\u3080","read patterns from a file","arg fills"],["-A|--after-context","\u4E00\u81F4\u884C\u306E\u5F8C\u308D N \u884C\u3082\u8868\u793A","print N lines after each match","arg"],["-B|--before-context","\u4E00\u81F4\u884C\u306E\u524D N \u884C\u3082\u8868\u793A","print N lines before each match","arg"],["-C|--context","\u4E00\u81F4\u884C\u306E\u524D\u5F8C N \u884C\u3082\u8868\u793A","print N lines of context","arg"],["-m|--max-count","N \u4EF6\u4E00\u81F4\u3057\u305F\u3089\u691C\u7D22\u3092\u3084\u3081\u308B","stop after N matches","arg"],["-h|--no-filename","\u30D5\u30A1\u30A4\u30EB\u540D\u3092\u8868\u793A\u3057\u306A\u3044","suppress file names"],["-H|--with-filename","\u30D5\u30A1\u30A4\u30EB\u540D\u3092\u8868\u793A\u3059\u308B","print file names"],["--include","\u691C\u7D22\u5BFE\u8C61\u3092\u3053\u306E\u30B0\u30ED\u30D6\u306B\u4E00\u81F4\u3059\u308B\u30D5\u30A1\u30A4\u30EB\u306B\u9650\u5B9A","only search files matching the glob","arg"],["--exclude","\u3053\u306E\u30B0\u30ED\u30D6\u306B\u4E00\u81F4\u3059\u308B\u30D5\u30A1\u30A4\u30EB\u3092\u9664\u5916","skip files matching the glob","arg"],["--exclude-dir","\u3053\u306E\u30C7\u30A3\u30EC\u30AF\u30C8\u30EA\u3092\u9664\u5916","skip this directory","arg"],["--color","\u4E00\u81F4\u90E8\u5206\u3092\u8272\u4ED8\u3051\u3059\u308B","highlight matches"]],{positional:[S("\u691C\u7D22\u30D1\u30BF\u30FC\u30F3\uFF08\u6B63\u898F\u8868\u73FE\uFF09","search pattern (regex)"),S("\u691C\u7D22\u5BFE\u8C61\u306E\u30D5\u30A1\u30A4\u30EB\uFF08\u7701\u7565\u6642\u306F\u6A19\u6E96\u5165\u529B\uFF09","file to search (default: stdin)")],positionalLang:["regex"]}),sed:k("\u30B9\u30C8\u30EA\u30FC\u30E0\u30A8\u30C7\u30A3\u30BF: \u5165\u529B\u30921\u884C\u305A\u3064\u30B9\u30AF\u30EA\u30D7\u30C8\u3067\u7DE8\u96C6\u3057\u3066\u51FA\u529B\u3059\u308B\uFF08\u7F6E\u63DB\u306F `s/\u524D/\u5F8C/g`\uFF09","Stream editor: edit input line by line (substitute with `s/old/new/g`)",[["-i|--in-place","\u30D5\u30A1\u30A4\u30EB\u3092\u76F4\u63A5\u66F8\u304D\u63DB\u3048\u308B\uFF08`-i.bak` \u3067\u30D0\u30C3\u30AF\u30A2\u30C3\u30D7\u4F5C\u6210\uFF09","edit files in place (`-i.bak` keeps a backup)"],["-n|--quiet|--silent","\u81EA\u52D5\u51FA\u529B\u3092\u6291\u6B62\u3057\u3001`p` \u30B3\u30DE\u30F3\u30C9\u3067\u6307\u5B9A\u3057\u305F\u884C\u3060\u3051\u51FA\u529B","suppress automatic printing; print only with `p`"],["-e|--expression","\u5B9F\u884C\u3059\u308B\u30B9\u30AF\u30EA\u30D7\u30C8\u3092\u6307\u5B9A\uFF08\u8907\u6570\u6307\u5B9A\u53EF\uFF09","add a script to run","arg fills lang:sed"],["-f|--file","\u30B9\u30AF\u30EA\u30D7\u30C8\u3092\u30D5\u30A1\u30A4\u30EB\u304B\u3089\u8AAD\u3080","read the script from a file","arg fills"],["-E|-r|--regexp-extended","\u62E1\u5F35\u6B63\u898F\u8868\u73FE(ERE)\u3092\u4F7F\u3046","use extended regex (ERE)"],["-s|--separate","\u8907\u6570\u30D5\u30A1\u30A4\u30EB\u3092\u5225\u3005\u306B\u6271\u3046","treat files separately"],["-z|--null-data","\u884C\u533A\u5207\u308A\u3092 NUL \u6587\u5B57\u306B\u3059\u308B","lines are separated by NUL"]],{positional:[S("sed \u30B9\u30AF\u30EA\u30D7\u30C8\uFF08\u4F8B: `s/foo/bar/g` \u306F foo \u3092 bar \u306B\u5168\u7F6E\u63DB\uFF09","sed script (e.g. `s/foo/bar/g` replaces all foo with bar)"),$e],positionalLang:["sed"]}),awk:k("\u30C6\u30AD\u30B9\u30C8\u3092\u884C\u30FB\u30D5\u30A3\u30FC\u30EB\u30C9\u5358\u4F4D\u3067\u51E6\u7406\u3059\u308B\u30D7\u30ED\u30B0\u30E9\u30DF\u30F3\u30B0\u8A00\u8A9E\uFF08`$1` \u306F1\u5217\u76EE\uFF09","Pattern-scanning language that processes lines and fields (`$1` = first field)",[["-F","\u30D5\u30A3\u30FC\u30EB\u30C9\u533A\u5207\u308A\u6587\u5B57\u3092\u6307\u5B9A\uFF08\u65E2\u5B9A\u306F\u7A7A\u767D\uFF09","field separator (default: whitespace)","arg"],["-v","awk \u306E\u5909\u6570\u3092\u8A2D\u5B9A\uFF08`-v name=value`\uFF09","set an awk variable (`-v name=value`)","arg"],["-f","\u30D7\u30ED\u30B0\u30E9\u30E0\u3092\u30D5\u30A1\u30A4\u30EB\u304B\u3089\u8AAD\u3080","read the program from a file","arg fills"]],{positional:[S("awk \u30D7\u30ED\u30B0\u30E9\u30E0\uFF08`\u30D1\u30BF\u30FC\u30F3 { \u30A2\u30AF\u30B7\u30E7\u30F3 }`\uFF09","awk program (`pattern { action }`)"),$e],positionalLang:["awk"]}),find:k("\u6761\u4EF6\u306B\u4E00\u81F4\u3059\u308B\u30D5\u30A1\u30A4\u30EB\u3092\u30C7\u30A3\u30EC\u30AF\u30C8\u30EA\u968E\u5C64\u304B\u3089\u63A2\u3059","Search a directory tree for files matching conditions",[["-name","\u30D5\u30A1\u30A4\u30EB\u540D\u304C\u30B0\u30ED\u30D6\u30D1\u30BF\u30FC\u30F3\u306B\u4E00\u81F4\u3059\u308B","file name matches the glob","arg lang:glob"],["-iname","\u30D5\u30A1\u30A4\u30EB\u540D\u304C\u4E00\u81F4\u3059\u308B\uFF08\u5927\u6587\u5B57\u30FB\u5C0F\u6587\u5B57\u3092\u533A\u5225\u3057\u306A\u3044\uFF09","name matches, case-insensitive","arg lang:glob"],["-path|-wholename","\u30D1\u30B9\u5168\u4F53\u304C\u30D1\u30BF\u30FC\u30F3\u306B\u4E00\u81F4\u3059\u308B","whole path matches the pattern","arg lang:glob"],["-ipath","\u30D1\u30B9\u5168\u4F53\u304C\u30D1\u30BF\u30FC\u30F3\u306B\u4E00\u81F4\u3059\u308B\uFF08\u5927\u6587\u5B57\u30FB\u5C0F\u6587\u5B57\u3092\u533A\u5225\u3057\u306A\u3044\uFF09","whole path matches, case-insensitive","arg lang:glob"],["-regextype","-regex \u3067\u4F7F\u3046\u6B63\u898F\u8868\u73FE\u306E\u7A2E\u985E","regex dialect for -regex","arg"],["-atime","\u30A2\u30AF\u30BB\u30B9\u65E5\u6642\u3067\u7D5E\u308B\uFF08\u65E5\u5358\u4F4D\uFF09","accessed N days ago","arg"],["-amin","\u30A2\u30AF\u30BB\u30B9\u65E5\u6642\u3067\u7D5E\u308B\uFF08\u5206\u5358\u4F4D\uFF09","accessed N minutes ago","arg"],["-ctime","\u72B6\u614B\u5909\u66F4\u65E5\u6642\u3067\u7D5E\u308B\uFF08\u65E5\u5358\u4F4D\uFF09","status changed N days ago","arg"],["-cmin","\u72B6\u614B\u5909\u66F4\u65E5\u6642\u3067\u7D5E\u308B\uFF08\u5206\u5358\u4F4D\uFF09","status changed N minutes ago","arg"],["-group","\u30B0\u30EB\u30FC\u30D7\u3067\u7D5E\u308B","group","arg"],["-readable","\u8AAD\u307F\u53D6\u308A\u53EF\u80FD","readable"],["-writable","\u66F8\u304D\u8FBC\u307F\u53EF\u80FD","writable"],["-executable","\u5B9F\u884C\u53EF\u80FD","executable"],["-ls","\u8A73\u7D30\u3092 ls -l \u5F62\u5F0F\u3067\u8868\u793A","list in ls -l format"],["-printf","\u66F8\u5F0F\u3092\u6307\u5B9A\u3057\u3066\u8868\u793A\uFF08%p \u30D1\u30B9, %s \u30B5\u30A4\u30BA \u306A\u3069\uFF09","print with a format (%p path, %s size\u2026)","arg"],["-fprint","\u30D1\u30B9\u3092\u30D5\u30A1\u30A4\u30EB\u306B\u66F8\u304D\u51FA\u3059","print the path to a file","arg"],["-quit","\u6700\u521D\u306B\u898B\u3064\u304B\u3063\u305F\u6642\u70B9\u3067\u7D42\u4E86\u3059\u308B","stop at the first match"],["-true","\u5E38\u306B\u771F","always true"],["-false","\u5E38\u306B\u507D","always false"],["-xdev|-mount","\u4ED6\u306E\u30D5\u30A1\u30A4\u30EB\u30B7\u30B9\u30C6\u30E0\u306B\u306F\u5165\u3089\u306A\u3044","stay on one file system"],["-okdir","\u78BA\u8A8D\u3057\u3066\u304B\u3089\u30D5\u30A1\u30A4\u30EB\u306E\u3042\u308B\u30C7\u30A3\u30EC\u30AF\u30C8\u30EA\u3067\u30B3\u30DE\u30F3\u30C9\u3092\u5B9F\u884C","like -execdir, but ask first","until"],["-H","\u30B3\u30DE\u30F3\u30C9\u30E9\u30A4\u30F3\u3067\u6307\u5B9A\u3057\u305F\u30B7\u30F3\u30DC\u30EA\u30C3\u30AF\u30EA\u30F3\u30AF\u3060\u3051\u305F\u3069\u308B","follow symlinks given on the command line"],["-P","\u30B7\u30F3\u30DC\u30EA\u30C3\u30AF\u30EA\u30F3\u30AF\u3092\u305F\u3069\u3089\u306A\u3044\uFF08\u65E2\u5B9A\uFF09","never follow symlinks (default)"],["-regex","\u30D1\u30B9\u5168\u4F53\u304C\u6B63\u898F\u8868\u73FE\u306B\u4E00\u81F4\u3059\u308B","whole path matches the regex","arg"],["-type","\u7A2E\u985E\u3067\u7D5E\u308B\uFF08f: \u30D5\u30A1\u30A4\u30EB, d: \u30C7\u30A3\u30EC\u30AF\u30C8\u30EA, l: \u30B7\u30F3\u30DC\u30EA\u30C3\u30AF\u30EA\u30F3\u30AF\uFF09","file type (f file, d directory, l symlink)","arg",{f:S("\u901A\u5E38\u30D5\u30A1\u30A4\u30EB","regular file"),d:S("\u30C7\u30A3\u30EC\u30AF\u30C8\u30EA","directory"),l:S("\u30B7\u30F3\u30DC\u30EA\u30C3\u30AF\u30EA\u30F3\u30AF","symbolic link")}],["-maxdepth","\u63A2\u7D22\u3059\u308B\u968E\u5C64\u306E\u6DF1\u3055\u306E\u4E0A\u9650","descend at most N levels","arg"],["-mindepth","\u3053\u306E\u6DF1\u3055\u672A\u6E80\u306E\u968E\u5C64\u306F\u5BFE\u8C61\u5916","ignore levels shallower than N","arg"],["-mtime","\u66F4\u65B0\u65E5\u6642\u3067\u7D5E\u308B\uFF08`-7` \u306F7\u65E5\u4EE5\u5185, `+7` \u306F7\u65E5\u3088\u308A\u524D\uFF09","modified N days ago (`-7` within 7 days, `+7` older)","arg"],["-mmin","\u66F4\u65B0\u65E5\u6642\uFF08\u5206\u5358\u4F4D\uFF09\u3067\u7D5E\u308B","modified N minutes ago","arg"],["-newer","\u6307\u5B9A\u30D5\u30A1\u30A4\u30EB\u3088\u308A\u65B0\u3057\u3044","newer than the given file","arg"],["-size","\u30B5\u30A4\u30BA\u3067\u7D5E\u308B\uFF08\u4F8B: `+10M` \u306F10MiB\u8D85\uFF09","file size (e.g. `+10M` larger than 10 MiB)","arg"],["-user","\u6240\u6709\u30E6\u30FC\u30B6\u30FC\u3067\u7D5E\u308B","owned by user","arg"],["-perm","\u30D1\u30FC\u30DF\u30C3\u30B7\u30E7\u30F3\u3067\u7D5E\u308B","permission bits","arg"],["-empty","\u7A7A\u306E\u30D5\u30A1\u30A4\u30EB\u307E\u305F\u306F\u30C7\u30A3\u30EC\u30AF\u30C8\u30EA","empty file or directory"],["-exec","\u898B\u3064\u304B\u3063\u305F\u5404\u30D5\u30A1\u30A4\u30EB\u306B\u5BFE\u3057\u3066\u30B3\u30DE\u30F3\u30C9\u3092\u5B9F\u884C\uFF08`{}` \u304C\u30D5\u30A1\u30A4\u30EB\u540D\u306B\u7F6E\u304D\u63DB\u308F\u308B\u3002`\\;` \u30671\u4EF6\u305A\u3064\u3001`+` \u3067\u307E\u3068\u3081\u3066\uFF09","run a command on each match (`{}` is the file; `\\;` one at a time, `+` batched)","until"],["-execdir","\u30D5\u30A1\u30A4\u30EB\u306E\u3042\u308B\u30C7\u30A3\u30EC\u30AF\u30C8\u30EA\u3067\u30B3\u30DE\u30F3\u30C9\u3092\u5B9F\u884C","like -exec, run in the file's directory","until"],["-ok","\u78BA\u8A8D\u3057\u3066\u304B\u3089\u30B3\u30DE\u30F3\u30C9\u3092\u5B9F\u884C","like -exec, but ask first","until"],["-delete","\u898B\u3064\u304B\u3063\u305F\u30D5\u30A1\u30A4\u30EB\u3092\u524A\u9664\u3059\u308B\uFF08\u6CE8\u610F\uFF09","delete matches (careful!)"],["-print","\u30D1\u30B9\u3092\u8868\u793A\uFF08\u65E2\u5B9A\u306E\u52D5\u4F5C\uFF09","print the path (default action)"],["-print0","\u30D1\u30B9\u3092 NUL \u533A\u5207\u308A\u3067\u51FA\u529B\uFF08`xargs -0` \u3068\u7D44\u307F\u5408\u308F\u305B\u308B\uFF09","print paths separated by NUL (pair with `xargs -0`)"],["-prune","\u3053\u306E\u30C7\u30A3\u30EC\u30AF\u30C8\u30EA\u306E\u4E2D\u306B\u306F\u5165\u3089\u306A\u3044","do not descend into this directory"],["-not|!","\u76F4\u5F8C\u306E\u6761\u4EF6\u3092\u5426\u5B9A\u3059\u308B","negate the next condition"],["-o|-or","OR \u6761\u4EF6","logical OR"],["-a|-and","AND \u6761\u4EF6\uFF08\u65E2\u5B9A\uFF09","logical AND (default)"],["-L","\u30B7\u30F3\u30DC\u30EA\u30C3\u30AF\u30EA\u30F3\u30AF\u3092\u305F\u3069\u308B","follow symbolic links"]],{longSingleDash:!0,positional:[S("\u63A2\u7D22\u3092\u958B\u59CB\u3059\u308B\u30C7\u30A3\u30EC\u30AF\u30C8\u30EA","starting directory")]}),xargs:k("\u6A19\u6E96\u5165\u529B\u304B\u3089\u8AAD\u3093\u3060\u5024\u3092\u5F15\u6570\u306B\u3057\u3066\u30B3\u30DE\u30F3\u30C9\u3092\u5B9F\u884C\u3059\u308B","Build and run a command with arguments read from stdin",[["-0|--null","\u5165\u529B\u3092 NUL \u533A\u5207\u308A\u3068\u3057\u3066\u8AAD\u3080\uFF08`find -print0` \u3068\u7D44\u307F\u5408\u308F\u305B\u308B\uFF09","input is NUL-separated (pair with `find -print0`)"],["-n|--max-args","1\u56DE\u306E\u30B3\u30DE\u30F3\u30C9\u5B9F\u884C\u306B\u6E21\u3059\u5F15\u6570\u306E\u6700\u5927\u6570","max arguments per command","arg"],["-I","\u7F6E\u63DB\u6587\u5B57\u5217\uFF08\u4F8B: `-I{}` \u3067 `{}` \u3092\u5165\u529B\u5024\u306B\u7F6E\u304D\u63DB\u3048\u30661\u4EF6\u305A\u3064\u5B9F\u884C\uFF09","replace string (e.g. `-I{}`), runs once per input","arg"],["-P|--max-procs","\u4E26\u5217\u5B9F\u884C\u3059\u308B\u30D7\u30ED\u30BB\u30B9\u6570","run up to N processes in parallel","arg"],["-r|--no-run-if-empty","\u5165\u529B\u304C\u7A7A\u306A\u3089\u30B3\u30DE\u30F3\u30C9\u3092\u5B9F\u884C\u3057\u306A\u3044","do not run if input is empty"],["-t|--verbose","\u5B9F\u884C\u3059\u308B\u30B3\u30DE\u30F3\u30C9\u3092\u8868\u793A","print commands before running"],["-d|--delimiter","\u5165\u529B\u306E\u533A\u5207\u308A\u6587\u5B57","input delimiter","arg"]],{wraps:!0}),cut:k("\u5404\u884C\u304B\u3089\u6307\u5B9A\u3057\u305F\u5217\uFF08\u30D5\u30A3\u30FC\u30EB\u30C9\uFF09\u3084\u6587\u5B57\u4F4D\u7F6E\u3092\u5207\u308A\u51FA\u3059","Cut out selected fields or characters from each line",[["-d|--delimiter","\u533A\u5207\u308A\u6587\u5B57\uFF08\u65E2\u5B9A\u306F\u30BF\u30D6\uFF09","field delimiter (default: tab)","arg"],["-f|--fields","\u53D6\u308A\u51FA\u3059\u30D5\u30A3\u30FC\u30EB\u30C9\u756A\u53F7\uFF08\u4F8B: `1,3` \u3084 `2-`\uFF09","fields to select (e.g. `1,3`, `2-`)","arg lang:cutfields"],["-c|--characters","\u53D6\u308A\u51FA\u3059\u6587\u5B57\u4F4D\u7F6E","character positions to select","arg lang:cutchars"],["-b|--bytes","\u53D6\u308A\u51FA\u3059\u30D0\u30A4\u30C8\u4F4D\u7F6E","byte positions to select","arg lang:cutchars"]],{positional:[$e]}),sort:k("\u884C\u3092\u4E26\u3079\u66FF\u3048\u308B","Sort lines",[["-n|--numeric-sort","\u6570\u5024\u3068\u3057\u3066\u4E26\u3079\u308B","compare as numbers"],["-r|--reverse","\u9006\u9806\uFF08\u964D\u9806\uFF09\u306B\u3059\u308B","reverse order"],["-u|--unique","\u91CD\u8907\u884C\u30921\u3064\u306B\u307E\u3068\u3081\u308B","output only unique lines"],["-k|--key","\u4E26\u3079\u66FF\u3048\u306E\u30AD\u30FC\u3068\u306A\u308B\u5217\uFF08\u4F8B: `-k2,2`\uFF09","sort key field (e.g. `-k2,2`)","arg lang:sortkey"],["-t|--field-separator","\u5217\u306E\u533A\u5207\u308A\u6587\u5B57","field separator","arg"],["-h|--human-numeric-sort","`2K`, `1G` \u306E\u3088\u3046\u306A\u5358\u4F4D\u4ED8\u304D\u6570\u5024\u3067\u4E26\u3079\u308B","compare human-readable numbers (2K, 1G)"],["-f|--ignore-case","\u5927\u6587\u5B57\u30FB\u5C0F\u6587\u5B57\u3092\u533A\u5225\u3057\u306A\u3044","ignore case"],["-V|--version-sort","\u30D0\u30FC\u30B8\u30E7\u30F3\u756A\u53F7\u9806\u306B\u4E26\u3079\u308B","natural version sort"],["-o|--output","\u7D50\u679C\u3092\u66F8\u304D\u51FA\u3059\u30D5\u30A1\u30A4\u30EB","write result to file","arg"]],{positional:[$e]}),uniq:k("\u96A3\u63A5\u3059\u308B\u91CD\u8907\u884C\u3092\u307E\u3068\u3081\u308B\uFF08\u901A\u5E38 `sort` \u306E\u5F8C\u306B\u4F7F\u3046\uFF09","Collapse adjacent duplicate lines (usually after `sort`)",[["-c|--count","\u5404\u884C\u306E\u51FA\u73FE\u56DE\u6570\u3092\u5148\u982D\u306B\u4ED8\u3051\u308B","prefix lines with their count"],["-d|--repeated","\u91CD\u8907\u3057\u3066\u3044\u308B\u884C\u3060\u3051\u8868\u793A","only print duplicated lines"],["-u|--unique","\u91CD\u8907\u3057\u3066\u3044\u306A\u3044\u884C\u3060\u3051\u8868\u793A","only print unique lines"],["-i|--ignore-case","\u5927\u6587\u5B57\u30FB\u5C0F\u6587\u5B57\u3092\u533A\u5225\u3057\u306A\u3044","ignore case"]]),getopt:k('\u30B3\u30DE\u30F3\u30C9\u30E9\u30A4\u30F3\u5F15\u6570\u3092\u89E3\u6790\u3057\u3066\u3001\u30AA\u30D7\u30B7\u30E7\u30F3\u3092\u5148\u30FB\u305D\u308C\u4EE5\u5916\u3092 `--` \u306E\u5F8C\u308D\u306B\u4E26\u3079\u76F4\u3057\u305F\u5F62\u3067\u51FA\u529B\u3059\u308B\uFF08`eval set -- "$(getopt \u2026)"` \u3067\u4F7F\u3046\u3002\u9577\u3044\u30AA\u30D7\u30B7\u30E7\u30F3\u3082\u6271\u3048\u308B\uFF09','Parse command-line arguments and print them normalised: options first, other arguments after `--` (used as `eval set -- "$(getopt \u2026)"`; supports long options)',[["-o|--options","\u53D7\u3051\u4ED8\u3051\u308B\u77ED\u3044\u30AA\u30D7\u30B7\u30E7\u30F3\u306E\u4E00\u89A7","the short options to accept","arg fills lang:getoptshort"],["-l|--longoptions|--long","\u53D7\u3051\u4ED8\u3051\u308B\u9577\u3044\u30AA\u30D7\u30B7\u30E7\u30F3\u306E\u4E00\u89A7\uFF08\u30AB\u30F3\u30DE\u533A\u5207\u308A\uFF09","the long options to accept (comma-separated)","arg lang:getoptlong"],["-n|--name",'\u30A8\u30E9\u30FC\u30E1\u30C3\u30BB\u30FC\u30B8\u306B\u51FA\u3059\u30D7\u30ED\u30B0\u30E9\u30E0\u540D\uFF08\u901A\u5E38\u306F `"$0"`\uFF09','program name used in error messages (usually `"$0"`)',"arg"],["-a|--alternative","\u9577\u3044\u30AA\u30D7\u30B7\u30E7\u30F3\u3092 `-name` \u306E\u3088\u3046\u306B `-` 1\u3064\u3067\u3082\u66F8\u3051\u308B\u3088\u3046\u306B\u3059\u308B","allow long options with a single `-`"],["-q|--quiet","\u4E0D\u6B63\u306A\u30AA\u30D7\u30B7\u30E7\u30F3\u306E\u30A8\u30E9\u30FC\u30E1\u30C3\u30BB\u30FC\u30B8\u3092\u51FA\u3055\u306A\u3044","do not report unknown options"],["-Q|--quiet-output","\u89E3\u6790\u7D50\u679C\u3092\u51FA\u529B\u3057\u306A\u3044\uFF08\u5F15\u6570\u304C\u6B63\u3057\u3044\u304B\u306E\u78BA\u8A8D\u3060\u3051\uFF09","print nothing; only check the arguments"],["-s|--shell","\u30AF\u30A9\u30FC\u30C8\u306E\u4ED5\u65B9\u3092\u3053\u306E\u30B7\u30A7\u30EB\u306B\u5408\u308F\u305B\u308B\uFF08sh, bash, csh, tcsh\uFF09","quote for this shell (sh, bash, csh, tcsh)","arg"],["-u|--unquoted","\u51FA\u529B\u3092\u30AF\u30A9\u30FC\u30C8\u3057\u306A\u3044\uFF08\u7A7A\u767D\u3092\u542B\u3080\u5F15\u6570\u304C\u58CA\u308C\u308B\uFF09","do not quote the output (breaks arguments with spaces)"],["-T|--test","\u62E1\u5F35\u7248\u306E getopt \u304B\u78BA\u8A8D\u3059\u308B\uFF08\u62E1\u5F35\u7248\u306A\u3089\u7D42\u4E86\u30B9\u30C6\u30FC\u30BF\u30B9 4\uFF09","test for the enhanced getopt (exits 4 if so)"]],{positional:[S("\uFF08\u65E7\u5F62\u5F0F\uFF09\u53D7\u3051\u4ED8\u3051\u308B\u30AA\u30D7\u30B7\u30E7\u30F3\u6587\u5B57","(old form) the option letters"),S('\u89E3\u6790\u3059\u308B\u5F15\u6570\uFF08\u901A\u5E38\u306F `"$@"`\uFF09','the arguments to parse (usually `"$@"`)')],positionalLang:["getoptshort"]}),tr:k("\u6587\u5B57\u3092\u7F6E\u63DB\u30FB\u524A\u9664\u3059\u308B\uFF08\u6A19\u6E96\u5165\u529B\u306E\u307F\uFF09","Translate or delete characters (stdin only)",[["-d|--delete","\u6307\u5B9A\u3057\u305F\u6587\u5B57\u3092\u524A\u9664\u3059\u308B","delete the characters"],["-s|--squeeze-repeats","\u9023\u7D9A\u3059\u308B\u540C\u3058\u6587\u5B57\u30921\u3064\u306B\u307E\u3068\u3081\u308B","squeeze repeated characters"],["-c|--complement","\u6307\u5B9A\u3057\u305F\u6587\u5B57\u4EE5\u5916\u3092\u5BFE\u8C61\u306B\u3059\u308B","use the complement of the set"]],{positional:[S("\u5909\u63DB\u5143\u306E\u6587\u5B57\u96C6\u5408\uFF08\u4F8B: `a-z`\uFF09","source character set (e.g. `a-z`)"),S("\u5909\u63DB\u5148\u306E\u6587\u5B57\u96C6\u5408\uFF08\u4F8B: `A-Z`\uFF09","target character set (e.g. `A-Z`)")],positionalLang:["trset","trset"]}),head:k("\u30D5\u30A1\u30A4\u30EB\u306E\u5148\u982D\u90E8\u5206\u3092\u8868\u793A\u3059\u308B\uFF08\u65E2\u5B9A\u306F10\u884C\uFF09","Print the first part of files (default 10 lines)",[["-n|--lines","\u8868\u793A\u3059\u308B\u884C\u6570\uFF08`-n -5` \u306F\u6700\u5F8C\u306E5\u884C\u4EE5\u5916\uFF09","number of lines (`-n -5`: all but the last 5)","arg"],["-c|--bytes","\u8868\u793A\u3059\u308B\u30D0\u30A4\u30C8\u6570","number of bytes","arg"]],{positional:[$e]}),tail:k("\u30D5\u30A1\u30A4\u30EB\u306E\u672B\u5C3E\u90E8\u5206\u3092\u8868\u793A\u3059\u308B\uFF08\u65E2\u5B9A\u306F10\u884C\uFF09","Print the last part of files (default 10 lines)",[["-n|--lines","\u8868\u793A\u3059\u308B\u884C\u6570\uFF08`+N` \u3067 N \u884C\u76EE\u4EE5\u964D\uFF09","number of lines (`+N`: from line N)","arg"],["-c|--bytes","\u8868\u793A\u3059\u308B\u30D0\u30A4\u30C8\u6570","number of bytes","arg"],["-f|--follow","\u8FFD\u8A18\u3092\u76E3\u8996\u3057\u7D9A\u3051\u3066\u8868\u793A\u3059\u308B\uFF08\u30ED\u30B0\u76E3\u8996\uFF09","keep following appended data (log watching)"],["-F","\u30D5\u30A1\u30A4\u30EB\u304C\u4F5C\u308A\u76F4\u3055\u308C\u3066\u3082\u8FFD\u3044\u7D9A\u3051\u308B","follow by name, retrying"]],{positional:[$e]}),wc:k("\u884C\u6570\u30FB\u5358\u8A9E\u6570\u30FB\u30D0\u30A4\u30C8\u6570\u3092\u6570\u3048\u308B","Count lines, words and bytes",[["-l|--lines","\u884C\u6570\u3092\u6570\u3048\u308B","count lines"],["-w|--words","\u5358\u8A9E\u6570\u3092\u6570\u3048\u308B","count words"],["-c|--bytes","\u30D0\u30A4\u30C8\u6570\u3092\u6570\u3048\u308B","count bytes"],["-m|--chars","\u6587\u5B57\u6570\u3092\u6570\u3048\u308B","count characters"]],{positional:[$e]}),tee:k("\u6A19\u6E96\u5165\u529B\u3092\u6A19\u6E96\u51FA\u529B\u3068\u30D5\u30A1\u30A4\u30EB\u306E\u4E21\u65B9\u306B\u66F8\u304D\u51FA\u3059","Copy stdin to stdout and to files",[["-a|--append","\u30D5\u30A1\u30A4\u30EB\u306B\u8FFD\u8A18\u3059\u308B\uFF08\u4E0A\u66F8\u304D\u3057\u306A\u3044\uFF09","append instead of overwrite"]],{positional:[S("\u66F8\u304D\u51FA\u3059\u30D5\u30A1\u30A4\u30EB","file to write")]}),curl:k("URL \u3092\u6307\u5B9A\u3057\u3066\u30C7\u30FC\u30BF\u3092\u9001\u53D7\u4FE1\u3059\u308B\uFF08HTTP \u30EA\u30AF\u30A8\u30B9\u30C8\u306A\u3069\uFF09","Transfer data to or from a URL (HTTP requests etc.)",[["-s|--silent","\u9032\u6357\u3084\u30A8\u30E9\u30FC\u3092\u8868\u793A\u3057\u306A\u3044","silent mode"],["-S|--show-error","`-s` \u3068\u4F75\u7528\u6642\u3082\u30A8\u30E9\u30FC\u306F\u8868\u793A\u3059\u308B","show errors even with `-s`"],["-f|--fail","HTTP \u30A8\u30E9\u30FC(4xx/5xx)\u6642\u306B\u5931\u6557\u306E\u7D42\u4E86\u30B9\u30C6\u30FC\u30BF\u30B9\u3092\u8FD4\u3059","fail with non-zero exit on HTTP errors"],["-L|--location","\u30EA\u30C0\u30A4\u30EC\u30AF\u30C8\u3092\u305F\u3069\u308B","follow redirects"],["-o|--output","\u30EC\u30B9\u30DD\u30F3\u30B9\u3092\u30D5\u30A1\u30A4\u30EB\u306B\u4FDD\u5B58","write output to a file","arg"],["-O|--remote-name","URL \u306E\u30D5\u30A1\u30A4\u30EB\u540D\u3067\u4FDD\u5B58","save with the remote file name"],["-X|--request","HTTP \u30E1\u30BD\u30C3\u30C9\u3092\u6307\u5B9A\uFF08GET, POST \u306A\u3069\uFF09","HTTP method (GET, POST\u2026)","arg"],["-H|--header","\u30EA\u30AF\u30A8\u30B9\u30C8\u30D8\u30C3\u30C0\u3092\u8FFD\u52A0","add a request header","arg"],["-d|--data","\u30EA\u30AF\u30A8\u30B9\u30C8\u30DC\u30C7\u30A3\u3068\u3057\u3066\u9001\u308B\u30C7\u30FC\u30BF\uFF08POST \u306B\u306A\u308B\uFF09","request body data (implies POST)","arg"],["-u|--user","\u8A8D\u8A3C\u60C5\u5831 `user:password`","credentials `user:password`","arg"],["-i|--include","\u30EC\u30B9\u30DD\u30F3\u30B9\u30D8\u30C3\u30C0\u3082\u8868\u793A","include response headers"],["-I|--head","\u30D8\u30C3\u30C0\u3060\u3051\u3092\u53D6\u5F97\uFF08HEAD \u30EA\u30AF\u30A8\u30B9\u30C8\uFF09","fetch headers only (HEAD)"],["-k|--insecure","TLS \u8A3C\u660E\u66F8\u306E\u691C\u8A3C\u3092\u3057\u306A\u3044\uFF08\u6CE8\u610F\uFF09","skip TLS verification (careful!)"],["-v|--verbose","\u901A\u4FE1\u306E\u8A73\u7D30\u3092\u8868\u793A","verbose output"],["-w|--write-out","\u5B8C\u4E86\u5F8C\u306B\u8868\u793A\u3059\u308B\u60C5\u5831\u306E\u66F8\u5F0F","output format after completion","arg"]],{positional:[S("\u30A2\u30AF\u30BB\u30B9\u3059\u308B URL","URL")]}),wget:k("URL \u304B\u3089\u30D5\u30A1\u30A4\u30EB\u3092\u30C0\u30A6\u30F3\u30ED\u30FC\u30C9\u3059\u308B","Download files from URLs",[["-O","\u4FDD\u5B58\u3059\u308B\u30D5\u30A1\u30A4\u30EB\u540D\uFF08`-` \u3067\u6A19\u6E96\u51FA\u529B\uFF09","output file (`-` = stdout)","arg"],["-q|--quiet","\u4F55\u3082\u8868\u793A\u3057\u306A\u3044","quiet"],["-c|--continue","\u9014\u4E2D\u307E\u3067\u843D\u3068\u3057\u305F\u30D5\u30A1\u30A4\u30EB\u3092\u518D\u958B","resume a partial download"]],{positional:[S("\u30C0\u30A6\u30F3\u30ED\u30FC\u30C9\u3059\u308B URL","URL to download")]}),tar:k("tar \u30A2\u30FC\u30AB\u30A4\u30D6\u3092\u4F5C\u6210\u30FB\u5C55\u958B\u3059\u308B","Create or extract tar archives",[["-c|--create","\u30A2\u30FC\u30AB\u30A4\u30D6\u3092\u4F5C\u6210\u3059\u308B","create an archive"],["-x|--extract","\u30A2\u30FC\u30AB\u30A4\u30D6\u3092\u5C55\u958B\u3059\u308B","extract an archive"],["-t|--list","\u30A2\u30FC\u30AB\u30A4\u30D6\u306E\u4E2D\u8EAB\u3092\u4E00\u89A7\u8868\u793A","list contents"],["-f|--file","\u30A2\u30FC\u30AB\u30A4\u30D6\u30D5\u30A1\u30A4\u30EB\u540D","archive file name","arg"],["-z|--gzip","gzip \u3067\u5727\u7E2E\u30FB\u5C55\u958B\u3059\u308B\uFF08.tar.gz\uFF09","gzip (.tar.gz)"],["-j|--bzip2","bzip2 \u3067\u5727\u7E2E\u30FB\u5C55\u958B\u3059\u308B","bzip2"],["-J|--xz","xz \u3067\u5727\u7E2E\u30FB\u5C55\u958B\u3059\u308B","xz"],["-v|--verbose","\u51E6\u7406\u3057\u305F\u30D5\u30A1\u30A4\u30EB\u540D\u3092\u8868\u793A","list processed files"],["-C|--directory","\u3053\u306E\u30C7\u30A3\u30EC\u30AF\u30C8\u30EA\u306B\u79FB\u52D5\u3057\u3066\u304B\u3089\u51E6\u7406","change to this directory first","arg"],["--exclude","\u9664\u5916\u3059\u308B\u30D1\u30BF\u30FC\u30F3","exclude pattern","arg"]]),gzip:k("\u30D5\u30A1\u30A4\u30EB\u3092 gzip \u5727\u7E2E\u3059\u308B\uFF08\u5143\u30D5\u30A1\u30A4\u30EB\u306F .gz \u306B\u7F6E\u304D\u63DB\u308F\u308B\uFF09","Compress files with gzip",[["-d|--decompress","\u5C55\u958B\u3059\u308B","decompress"],["-c|--stdout","\u7D50\u679C\u3092\u6A19\u6E96\u51FA\u529B\u306B\u51FA\u3059\uFF08\u5143\u30D5\u30A1\u30A4\u30EB\u3092\u6B8B\u3059\uFF09","write to stdout, keep originals"],["-k|--keep","\u5143\u30D5\u30A1\u30A4\u30EB\u3092\u6B8B\u3059","keep the original"]]),gunzip:k("gzip \u30D5\u30A1\u30A4\u30EB\u3092\u5C55\u958B\u3059\u308B","Decompress gzip files"),zip:k("ZIP \u30A2\u30FC\u30AB\u30A4\u30D6\u3092\u4F5C\u6210\u3059\u308B","Create ZIP archives",[["-r","\u30C7\u30A3\u30EC\u30AF\u30C8\u30EA\u3092\u518D\u5E30\u7684\u306B\u8FFD\u52A0","recurse into directories"]]),unzip:k("ZIP \u30A2\u30FC\u30AB\u30A4\u30D6\u3092\u5C55\u958B\u3059\u308B","Extract ZIP archives",[["-d","\u5C55\u958B\u5148\u30C7\u30A3\u30EC\u30AF\u30C8\u30EA","destination directory","arg"],["-o","\u78BA\u8A8D\u305B\u305A\u4E0A\u66F8\u304D","overwrite without asking"],["-q","\u4F55\u3082\u8868\u793A\u3057\u306A\u3044","quiet"]]),cp:k("\u30D5\u30A1\u30A4\u30EB\u3084\u30C7\u30A3\u30EC\u30AF\u30C8\u30EA\u3092\u30B3\u30D4\u30FC\u3059\u308B","Copy files and directories",[["-r|-R|--recursive","\u30C7\u30A3\u30EC\u30AF\u30C8\u30EA\u3092\u518D\u5E30\u7684\u306B\u30B3\u30D4\u30FC","copy directories recursively"],["-a|--archive","\u5C5E\u6027\uFF08\u6A29\u9650\u30FB\u65E5\u6642\u30FB\u30EA\u30F3\u30AF\uFF09\u3092\u4FDD\u3063\u305F\u307E\u307E\u518D\u5E30\u7684\u306B\u30B3\u30D4\u30FC","archive mode: recursive, preserve attributes"],["-f|--force","\u66F8\u304D\u8FBC\u3081\u306A\u3044\u65E2\u5B58\u30D5\u30A1\u30A4\u30EB\u3082\u4E0A\u66F8\u304D","force overwrite"],["-i|--interactive","\u4E0A\u66F8\u304D\u524D\u306B\u78BA\u8A8D\u3059\u308B","prompt before overwrite"],["-n|--no-clobber","\u65E2\u5B58\u30D5\u30A1\u30A4\u30EB\u3092\u4E0A\u66F8\u304D\u3057\u306A\u3044","do not overwrite existing files"],["-p","\u6A29\u9650\u30FB\u6240\u6709\u8005\u30FB\u65E5\u6642\u3092\u4FDD\u6301","preserve mode, ownership, timestamps"],["-v|--verbose","\u51E6\u7406\u5185\u5BB9\u3092\u8868\u793A","explain what is being done"],["-u|--update","\u30B3\u30D4\u30FC\u5143\u306E\u65B9\u304C\u65B0\u3057\u3044\u5834\u5408\u306E\u307F\u30B3\u30D4\u30FC","copy only when source is newer"]],{positional:[S("\u30B3\u30D4\u30FC\u5143","source"),S("\u30B3\u30D4\u30FC\u5143\u307E\u305F\u306F\u30B3\u30D4\u30FC\u5148\uFF08\u6700\u5F8C\u306E\u5F15\u6570\u304C\u30B3\u30D4\u30FC\u5148\uFF09","source or destination (last argument is the destination)")]}),mv:k("\u30D5\u30A1\u30A4\u30EB\u3092\u79FB\u52D5\u30FB\u540D\u524D\u5909\u66F4\u3059\u308B","Move or rename files",[["-f|--force","\u78BA\u8A8D\u305B\u305A\u4E0A\u66F8\u304D","do not prompt before overwriting"],["-i|--interactive","\u4E0A\u66F8\u304D\u524D\u306B\u78BA\u8A8D\u3059\u308B","prompt before overwrite"],["-n|--no-clobber","\u65E2\u5B58\u30D5\u30A1\u30A4\u30EB\u3092\u4E0A\u66F8\u304D\u3057\u306A\u3044","do not overwrite"],["-v|--verbose","\u51E6\u7406\u5185\u5BB9\u3092\u8868\u793A","explain what is being done"]],{positional:[S("\u79FB\u52D5\u5143","source"),S("\u79FB\u52D5\u5143\u307E\u305F\u306F\u79FB\u52D5\u5148\uFF08\u6700\u5F8C\u306E\u5F15\u6570\u304C\u79FB\u52D5\u5148\uFF09","source or destination (last argument is the destination)")]}),rm:k("\u30D5\u30A1\u30A4\u30EB\u3092\u524A\u9664\u3059\u308B\uFF08\u30B4\u30DF\u7BB1\u306B\u306F\u5165\u3089\u306A\u3044\uFF09","Remove files (no trash; permanent)",[["-r|-R|--recursive","\u30C7\u30A3\u30EC\u30AF\u30C8\u30EA\u3092\u4E2D\u8EAB\u3054\u3068\u518D\u5E30\u7684\u306B\u524A\u9664","remove directories and their contents"],["-f|--force","\u5B58\u5728\u3057\u306A\u3044\u30D5\u30A1\u30A4\u30EB\u3092\u7121\u8996\u3057\u3001\u78BA\u8A8D\u3082\u3057\u306A\u3044","ignore nonexistent files, never prompt"],["-i","\u524A\u9664\u524D\u306B1\u4EF6\u305A\u3064\u78BA\u8A8D\u3059\u308B","prompt before every removal"],["-v|--verbose","\u51E6\u7406\u5185\u5BB9\u3092\u8868\u793A","explain what is being done"],["-d|--dir","\u7A7A\u306E\u30C7\u30A3\u30EC\u30AF\u30C8\u30EA\u3092\u524A\u9664","remove empty directories"]],{positional:[S("\u524A\u9664\u3059\u308B\u30D5\u30A1\u30A4\u30EB","file to remove")]}),mkdir:k("\u30C7\u30A3\u30EC\u30AF\u30C8\u30EA\u3092\u4F5C\u6210\u3059\u308B","Create directories",[["-p|--parents","\u89AA\u30C7\u30A3\u30EC\u30AF\u30C8\u30EA\u3082\u307E\u3068\u3081\u3066\u4F5C\u6210\u3057\u3001\u65E2\u306B\u5B58\u5728\u3057\u3066\u3082\u30A8\u30E9\u30FC\u306B\u3057\u306A\u3044","create parents as needed; no error if it exists"],["-m|--mode","\u4F5C\u6210\u3059\u308B\u30C7\u30A3\u30EC\u30AF\u30C8\u30EA\u306E\u6A29\u9650","permission mode","arg lang:mode"],["-v|--verbose","\u4F5C\u6210\u3057\u305F\u30C7\u30A3\u30EC\u30AF\u30C8\u30EA\u3092\u8868\u793A","print each created directory"]],{positional:[S("\u4F5C\u6210\u3059\u308B\u30C7\u30A3\u30EC\u30AF\u30C8\u30EA","directory to create")]}),rmdir:k("\u7A7A\u306E\u30C7\u30A3\u30EC\u30AF\u30C8\u30EA\u3092\u524A\u9664\u3059\u308B","Remove empty directories"),touch:k("\u30D5\u30A1\u30A4\u30EB\u306E\u66F4\u65B0\u65E5\u6642\u3092\u73FE\u5728\u6642\u523B\u306B\u3059\u308B\u3002\u5B58\u5728\u3057\u306A\u3051\u308C\u3070\u7A7A\u30D5\u30A1\u30A4\u30EB\u3092\u4F5C\u6210","Update file timestamps; create empty files if missing",[],{positional:[$e]}),chmod:k("\u30D5\u30A1\u30A4\u30EB\u306E\u6A29\u9650\uFF08\u30D1\u30FC\u30DF\u30C3\u30B7\u30E7\u30F3\uFF09\u3092\u5909\u66F4\u3059\u308B","Change file permissions",[["-R|--recursive","\u30C7\u30A3\u30EC\u30AF\u30C8\u30EA\u5185\u3092\u518D\u5E30\u7684\u306B\u5909\u66F4","change recursively"]],{positional:[S("\u6A29\u9650\uFF08\u4F8B: `755`, `+x` \u306F\u5B9F\u884C\u6A29\u9650\u3092\u4ED8\u4E0E, `u+w`\uFF09","mode (e.g. `755`, `+x`, `u+w`)"),$e],positionalLang:["mode"]}),chown:k("\u30D5\u30A1\u30A4\u30EB\u306E\u6240\u6709\u8005\u30FB\u30B0\u30EB\u30FC\u30D7\u3092\u5909\u66F4\u3059\u308B","Change file owner and group",[["-R|--recursive","\u30C7\u30A3\u30EC\u30AF\u30C8\u30EA\u5185\u3092\u518D\u5E30\u7684\u306B\u5909\u66F4","change recursively"]],{positional:[S("\u6240\u6709\u8005\uFF08`user:group` \u5F62\u5F0F\uFF09","owner (`user:group`)"),$e]}),ln:k("\u30D5\u30A1\u30A4\u30EB\u3078\u306E\u30EA\u30F3\u30AF\u3092\u4F5C\u6210\u3059\u308B","Create links between files",[["-s|--symbolic","\u30B7\u30F3\u30DC\u30EA\u30C3\u30AF\u30EA\u30F3\u30AF\u3092\u4F5C\u6210\uFF08\u306A\u3051\u308C\u3070\u30CF\u30FC\u30C9\u30EA\u30F3\u30AF\uFF09","make a symbolic link (otherwise hard link)"],["-f|--force","\u65E2\u5B58\u306E\u30EA\u30F3\u30AF\u5148\u30D5\u30A1\u30A4\u30EB\u3092\u7F6E\u304D\u63DB\u3048\u308B","remove existing destination files"],["-n|--no-dereference","\u30EA\u30F3\u30AF\u5148\u304C\u30C7\u30A3\u30EC\u30AF\u30C8\u30EA\u3078\u306E\u30B7\u30F3\u30DC\u30EA\u30C3\u30AF\u30EA\u30F3\u30AF\u3067\u3082\u305D\u306E\u4E2D\u306B\u4F5C\u3089\u306A\u3044","treat a symlinked destination directory as a file"]],{positional:[S("\u30EA\u30F3\u30AF\u5148\uFF08\u5B9F\u4F53\uFF09","target"),S("\u4F5C\u6210\u3059\u308B\u30EA\u30F3\u30AF\u306E\u540D\u524D","link name")]}),basename:k("\u30D1\u30B9\u304B\u3089\u30C7\u30A3\u30EC\u30AF\u30C8\u30EA\u90E8\u5206\u3092\u9664\u3044\u305F\u30D5\u30A1\u30A4\u30EB\u540D\u3092\u53D6\u308A\u51FA\u3059","Strip directory (and optional suffix) from a path",[],{positional:[S("\u30D1\u30B9","path"),S("\u53D6\u308A\u9664\u304F\u62E1\u5F35\u5B50","suffix to remove")]}),dirname:k("\u30D1\u30B9\u304B\u3089\u30C7\u30A3\u30EC\u30AF\u30C8\u30EA\u90E8\u5206\u3092\u53D6\u308A\u51FA\u3059","Strip the last component from a path",[],{positional:[S("\u30D1\u30B9","path")]}),realpath:k("\u30B7\u30F3\u30DC\u30EA\u30C3\u30AF\u30EA\u30F3\u30AF\u3084 `..` \u3092\u89E3\u6C7A\u3057\u305F\u7D76\u5BFE\u30D1\u30B9\u3092\u8868\u793A\u3059\u308B","Print the resolved absolute path",[],{positional:[S("\u30D1\u30B9","path")]}),readlink:k("\u30B7\u30F3\u30DC\u30EA\u30C3\u30AF\u30EA\u30F3\u30AF\u306E\u30EA\u30F3\u30AF\u5148\u3092\u8868\u793A\u3059\u308B","Print the target of a symbolic link",[["-f|--canonicalize","\u5168\u3066\u306E\u30EA\u30F3\u30AF\u3092\u518D\u5E30\u7684\u306B\u89E3\u6C7A\u3057\u305F\u7D76\u5BFE\u30D1\u30B9\u3092\u8868\u793A","canonicalize by following every symlink"]]),date:k("\u65E5\u6642\u3092\u8868\u793A\u30FB\u8A2D\u5B9A\u3059\u308B","Print or set the date and time",[["-d|--date","\u73FE\u5728\u6642\u523B\u306E\u4EE3\u308F\u308A\u306B\u6307\u5B9A\u3057\u305F\u65E5\u6642\u3092\u4F7F\u3046\uFF08\u4F8B: `yesterday`\uFF09","use the given date instead of now (e.g. `yesterday`)","arg"],["-u|--utc","UTC \u3067\u8868\u793A","use UTC"],["-I|--iso-8601","ISO 8601 \u5F62\u5F0F\u3067\u8868\u793A","ISO 8601 format"]],{positional:[S("\u8868\u793A\u66F8\u5F0F\uFF08`+` \u3067\u59CB\u307E\u308B\u3002\u4F8B: `+%Y-%m-%d`, `+%F` \u306F\u5E74-\u6708-\u65E5, `+%s` \u306F UNIX \u6642\u523B\uFF09","output format starting with `+` (e.g. `+%Y-%m-%d`, `+%F`, `+%s`)")],positionalLang:["date"]}),sleep:k("\u6307\u5B9A\u3057\u305F\u6642\u9593\u3060\u3051\u5F85\u3064","Pause for a duration",[],{positional:[S("\u5F85\u3064\u6642\u9593\uFF08\u79D2\u3002`1m`, `0.5` \u306A\u3069\u3082\u53EF\uFF09","duration in seconds (`1m`, `0.5`\u2026 also allowed)")]}),diff:k("2\u3064\u306E\u30D5\u30A1\u30A4\u30EB\u306E\u5DEE\u5206\u3092\u8868\u793A\u3059\u308B","Compare files line by line",[["-u|--unified","unified \u5F62\u5F0F\u3067\u8868\u793A\uFF08\u30D1\u30C3\u30C1\u7528\u306E\u4E00\u822C\u7684\u306A\u5F62\u5F0F\uFF09","unified format"],["-r|--recursive","\u30C7\u30A3\u30EC\u30AF\u30C8\u30EA\u3092\u518D\u5E30\u7684\u306B\u6BD4\u8F03","compare directories recursively"],["-q|--brief","\u9055\u3044\u304C\u3042\u308B\u304B\u3069\u3046\u304B\u3060\u3051\u8868\u793A","only report whether files differ"],["-y|--side-by-side","\u5DE6\u53F3\u306B\u4E26\u3079\u3066\u8868\u793A","side-by-side output"]],{positional:[S("\u6BD4\u8F03\u5143","first file"),S("\u6BD4\u8F03\u5148","second file")]}),ssh:k("\u30EA\u30E2\u30FC\u30C8\u30DB\u30B9\u30C8\u306B SSH \u3067\u63A5\u7D9A\u3059\u308B\uFF08\u30B3\u30DE\u30F3\u30C9\u3092\u6E21\u3059\u3068\u30EA\u30E2\u30FC\u30C8\u3067\u5B9F\u884C\uFF09","Connect to a remote host over SSH (optionally run a command)",[["-i","\u79D8\u5BC6\u9375\u30D5\u30A1\u30A4\u30EB","identity (private key) file","arg"],["-p","\u30DD\u30FC\u30C8\u756A\u53F7","port","arg"],["-o","ssh \u306E\u8A2D\u5B9A\u30AA\u30D7\u30B7\u30E7\u30F3\uFF08\u4F8B: `StrictHostKeyChecking=no`\uFF09","config option (e.g. `StrictHostKeyChecking=no`)","arg"],["-L","\u30ED\u30FC\u30AB\u30EB\u30DD\u30FC\u30C8\u30D5\u30A9\u30EF\u30FC\u30C7\u30A3\u30F3\u30B0","local port forwarding","arg"],["-N","\u30EA\u30E2\u30FC\u30C8\u30B3\u30DE\u30F3\u30C9\u3092\u5B9F\u884C\u3057\u306A\u3044\uFF08\u8EE2\u9001\u5C02\u7528\uFF09","do not run a remote command"],["-t","\u7591\u4F3C\u7AEF\u672B\u3092\u5272\u308A\u5F53\u3066\u308B","force pseudo-terminal allocation"]],{positional:[S("\u63A5\u7D9A\u5148\uFF08`user@host`\uFF09","destination (`user@host`)"),S("\u30EA\u30E2\u30FC\u30C8\u3067\u5B9F\u884C\u3059\u308B\u30B3\u30DE\u30F3\u30C9","remote command")]}),scp:k("SSH \u7D4C\u7531\u3067\u30D5\u30A1\u30A4\u30EB\u3092\u30B3\u30D4\u30FC\u3059\u308B","Copy files over SSH",[["-r","\u30C7\u30A3\u30EC\u30AF\u30C8\u30EA\u3092\u518D\u5E30\u7684\u306B\u30B3\u30D4\u30FC","copy recursively"],["-P","\u30DD\u30FC\u30C8\u756A\u53F7","port","arg"],["-i","\u79D8\u5BC6\u9375\u30D5\u30A1\u30A4\u30EB","identity file","arg"]]),rsync:k("\u30D5\u30A1\u30A4\u30EB\u3092\u5DEE\u5206\u8EE2\u9001\u3067\u540C\u671F\u3059\u308B\uFF08\u30ED\u30FC\u30AB\u30EB\u30FB\u30EA\u30E2\u30FC\u30C8\u9593\uFF09","Sync files efficiently (local or remote)",[["-a|--archive","\u5C5E\u6027\u3092\u4FDD\u3063\u305F\u307E\u307E\u518D\u5E30\u7684\u306B\u540C\u671F\uFF08`-rlptgoD` \u3068\u540C\u3058\uFF09","archive mode (recursive, preserve attributes)"],["-v|--verbose","\u8A73\u7D30\u3092\u8868\u793A","verbose"],["-z|--compress","\u8EE2\u9001\u6642\u306B\u5727\u7E2E","compress during transfer"],["-n|--dry-run","\u5B9F\u969B\u306B\u306F\u8EE2\u9001\u305B\u305A\u4F55\u304C\u8D77\u304D\u308B\u304B\u8868\u793A","show what would happen"],["-P","\u9032\u6357\u8868\u793A\u3068\u9014\u4E2D\u518D\u958B\u3092\u6709\u52B9\u306B\u3059\u308B","show progress and keep partial files"],["--delete","\u8EE2\u9001\u5143\u306B\u306A\u3044\u30D5\u30A1\u30A4\u30EB\u3092\u8EE2\u9001\u5148\u304B\u3089\u524A\u9664\uFF08\u6CE8\u610F\uFF09","delete extraneous files from the destination (careful!)"],["--exclude","\u9664\u5916\u3059\u308B\u30D1\u30BF\u30FC\u30F3","exclude pattern","arg"],["-e","\u4F7F\u3046\u30EA\u30E2\u30FC\u30C8\u30B7\u30A7\u30EB\uFF08\u4F8B: `ssh -p 2222`\uFF09","remote shell to use","arg"]],{positional:[S("\u8EE2\u9001\u5143\uFF08\u672B\u5C3E `/` \u306E\u6709\u7121\u3067\u610F\u5473\u304C\u5909\u308F\u308B\uFF09","source (trailing `/` matters)"),S("\u8EE2\u9001\u5148","destination")]}),sudo:k("\u4ED6\u306E\u30E6\u30FC\u30B6\u30FC\uFF08\u65E2\u5B9A\u306F root\uFF09\u306E\u6A29\u9650\u3067\u30B3\u30DE\u30F3\u30C9\u3092\u5B9F\u884C\u3059\u308B","Run a command as another user (root by default)",[["-u|--user","\u5B9F\u884C\u3059\u308B\u30E6\u30FC\u30B6\u30FC","run as this user","arg"],["-E|--preserve-env","\u73FE\u5728\u306E\u74B0\u5883\u5909\u6570\u3092\u5F15\u304D\u7D99\u3050","preserve the environment"],["-i|--login","\u30ED\u30B0\u30A4\u30F3\u30B7\u30A7\u30EB\u3068\u3057\u3066\u5B9F\u884C","run a login shell"],["-n|--non-interactive","\u30D1\u30B9\u30EF\u30FC\u30C9\u3092\u5C0B\u306D\u306A\u3044\uFF08\u5FC5\u8981\u306A\u3089\u5931\u6557\uFF09","never prompt for a password"]],{wraps:!0}),env:k("\u74B0\u5883\u5909\u6570\u3092\u8A2D\u5B9A\u3057\u3066\u30B3\u30DE\u30F3\u30C9\u3092\u5B9F\u884C\u3059\u308B\u3002\u5F15\u6570\u306A\u3057\u306A\u3089\u74B0\u5883\u5909\u6570\u3092\u4E00\u89A7\u8868\u793A","Run a command with a modified environment, or print the environment",[["-i|--ignore-environment","\u7A7A\u306E\u74B0\u5883\u304B\u3089\u59CB\u3081\u308B","start with an empty environment"],["-u|--unset","\u6307\u5B9A\u3057\u305F\u5909\u6570\u3092\u9664\u5916","remove a variable","arg"]],{wraps:!0}),nohup:k("\u30ED\u30B0\u30A2\u30A6\u30C8(\u30CF\u30F3\u30B0\u30A2\u30C3\u30D7)\u3057\u3066\u3082\u30B3\u30DE\u30F3\u30C9\u304C\u6B62\u307E\u3089\u306A\u3044\u3088\u3046\u306B\u5B9F\u884C\u3059\u308B","Run a command immune to hangups (survives logout)",[],{wraps:!0}),timeout:k("\u5236\u9650\u6642\u9593\u3092\u8D85\u3048\u305F\u3089\u30B3\u30DE\u30F3\u30C9\u3092\u7D42\u4E86\u3055\u305B\u308B","Run a command with a time limit",[["-s|--signal","\u30BF\u30A4\u30E0\u30A2\u30A6\u30C8\u6642\u306B\u9001\u308B\u30B7\u30B0\u30CA\u30EB","signal to send on timeout","arg"],["-k|--kill-after","\u3055\u3089\u306B\u3053\u306E\u6642\u9593\u7D4C\u3063\u3066\u3082\u7D42\u308F\u3089\u306A\u3051\u308C\u3070 KILL","also send KILL after this long","arg"]],{wraps:!0}),nice:k("\u512A\u5148\u5EA6\u3092\u5909\u3048\u3066\u30B3\u30DE\u30F3\u30C9\u3092\u5B9F\u884C\u3059\u308B","Run a command with modified priority",[["-n","\u512A\u5148\u5EA6\u306E\u8ABF\u6574\u5024","niceness adjustment","arg"]],{wraps:!0}),watch:k("\u30B3\u30DE\u30F3\u30C9\u3092\u5B9A\u671F\u7684\u306B\u5B9F\u884C\u3057\u3066\u7D50\u679C\u3092\u5168\u753B\u9762\u8868\u793A\u3059\u308B","Run a command periodically and show its output",[["-n|--interval","\u5B9F\u884C\u9593\u9694\uFF08\u79D2\uFF09","interval in seconds","arg"]],{wraps:!0}),which:k("\u30B3\u30DE\u30F3\u30C9\u306E\u5B9F\u884C\u30D5\u30A1\u30A4\u30EB\u306E\u30D1\u30B9\u3092\u8868\u793A\u3059\u308B","Show the full path of a command"),jq:k("JSON \u3092\u6574\u5F62\u30FB\u62BD\u51FA\u30FB\u5909\u63DB\u3059\u308B","Filter and transform JSON",[["-r|--raw-output","\u6587\u5B57\u5217\u3092\u30AF\u30A9\u30FC\u30C8\u306A\u3057\u3067\u51FA\u529B","output raw strings without quotes"],["-c|--compact-output","1\u884C\u306B\u8A70\u3081\u3066\u51FA\u529B","compact output"],["-e|--exit-status","\u7D50\u679C\u304C null/false \u306A\u3089\u5931\u6557\u306E\u7D42\u4E86\u30B9\u30C6\u30FC\u30BF\u30B9","set exit status from the output"],["-n|--null-input","\u5165\u529B\u3092\u8AAD\u307E\u306A\u3044","do not read input"],["-s|--slurp","\u5168\u5165\u529B\u30921\u3064\u306E\u914D\u5217\u3068\u3057\u3066\u8AAD\u3080","read all inputs into one array"],["--arg","jq \u306E\u5909\u6570\u306B\u6587\u5B57\u5217\u3092\u6E21\u3059\uFF08`--arg name value`\uFF09","pass a string variable (`--arg name value`)","arg"]],{positional:[S("jq \u30D5\u30A3\u30EB\u30BF\uFF08\u4F8B: `.items[].name`\uFF09","jq filter (e.g. `.items[].name`)"),S("\u5165\u529B JSON \u30D5\u30A1\u30A4\u30EB","input JSON file")],positionalLang:["jq"]}),ps:k("\u5B9F\u884C\u4E2D\u306E\u30D7\u30ED\u30BB\u30B9\u3092\u8868\u793A\u3059\u308B","Report running processes",[["-e|-A","\u5168\u3066\u306E\u30D7\u30ED\u30BB\u30B9\u3092\u8868\u793A","select all processes"],["-f","\u8A73\u7D30\u5F62\u5F0F\u3067\u8868\u793A","full format"],["-p","\u6307\u5B9A\u3057\u305F PID \u306E\u307F","only these PIDs","arg"],["-o","\u8868\u793A\u3059\u308B\u5217\u3092\u6307\u5B9A","output columns","arg"]]),pgrep:k("\u540D\u524D\u306B\u4E00\u81F4\u3059\u308B\u30D7\u30ED\u30BB\u30B9\u306E PID \u3092\u8868\u793A\u3059\u308B","Find PIDs by process name",[["-f","\u30B3\u30DE\u30F3\u30C9\u30E9\u30A4\u30F3\u5168\u4F53\u3067\u7167\u5408","match the full command line"]]),pkill:k("\u540D\u524D\u306B\u4E00\u81F4\u3059\u308B\u30D7\u30ED\u30BB\u30B9\u306B\u30B7\u30B0\u30CA\u30EB\u3092\u9001\u308B","Signal processes by name",[["-f","\u30B3\u30DE\u30F3\u30C9\u30E9\u30A4\u30F3\u5168\u4F53\u3067\u7167\u5408","match the full command line"]]),seq:k("\u9023\u7D9A\u3057\u305F\u6570\u5024\u30921\u884C\u305A\u3064\u51FA\u529B\u3059\u308B","Print a sequence of numbers",[["-w|--equal-width","\u6841\u6570\u3092\u30BC\u30ED\u57CB\u3081\u3067\u63C3\u3048\u308B","pad with leading zeros"],["-s|--separator","\u533A\u5207\u308A\u6587\u5B57","separator","arg"]],{positional:[S("\u958B\u59CB\u5024\uFF08\u5F15\u6570\u304C1\u3064\u306A\u3089\u7D42\u4E86\u5024\uFF09","first (or last, if only one argument)"),S("\u5897\u5206\u307E\u305F\u306F\u7D42\u4E86\u5024","increment or last")]}),mktemp:k("\u4E00\u610F\u306A\u540D\u524D\u306E\u4E00\u6642\u30D5\u30A1\u30A4\u30EB\u3092\u4F5C\u308A\u3001\u305D\u306E\u30D1\u30B9\u3092\u8868\u793A\u3059\u308B","Create a unique temporary file and print its path",[["-d|--directory","\u30D5\u30A1\u30A4\u30EB\u3067\u306F\u306A\u304F\u4E00\u6642\u30C7\u30A3\u30EC\u30AF\u30C8\u30EA\u3092\u4F5C\u308B","create a directory"],["-t","TMPDIR \u4EE5\u4E0B\u306B\u30C6\u30F3\u30D7\u30EC\u30FC\u30C8\u3067\u4F5C\u308B","use TMPDIR with a template"]]),stat:k("\u30D5\u30A1\u30A4\u30EB\u306E\u8A73\u7D30\u60C5\u5831\uFF08\u30B5\u30A4\u30BA\u30FB\u6A29\u9650\u30FB\u65E5\u6642\u306A\u3069\uFF09\u3092\u8868\u793A\u3059\u308B","Display file status (size, permissions, times\u2026)",[["-c|--format","\u8868\u793A\u66F8\u5F0F\uFF08\u4F8B: `%s` \u306F\u30B5\u30A4\u30BA\uFF09","output format (e.g. `%s` = size)","arg"]]),du:k("\u30D5\u30A1\u30A4\u30EB\u30FB\u30C7\u30A3\u30EC\u30AF\u30C8\u30EA\u306E\u30C7\u30A3\u30B9\u30AF\u4F7F\u7528\u91CF\u3092\u8868\u793A\u3059\u308B","Estimate disk usage",[["-s|--summarize","\u5408\u8A08\u3060\u3051\u3092\u8868\u793A","show only a total"],["-h|--human-readable","\u8AAD\u307F\u3084\u3059\u3044\u5358\u4F4D\u3067\u8868\u793A","human-readable sizes"],["-d|--max-depth","\u8868\u793A\u3059\u308B\u968E\u5C64\u306E\u6DF1\u3055","depth limit","arg"]]),df:k("\u30D5\u30A1\u30A4\u30EB\u30B7\u30B9\u30C6\u30E0\u306E\u7A7A\u304D\u5BB9\u91CF\u3092\u8868\u793A\u3059\u308B","Report file system disk space",[["-h|--human-readable","\u8AAD\u307F\u3084\u3059\u3044\u5358\u4F4D\u3067\u8868\u793A","human-readable sizes"]]),tput:k("\u7AEF\u672B\u306E\u6A5F\u80FD\uFF08\u8272\u30FB\u30AB\u30FC\u30BD\u30EB\u4F4D\u7F6E\u306A\u3069\uFF09\u3092\u64CD\u4F5C\u3059\u308B","Query or control terminal capabilities (colors, cursor\u2026)"),less:k("\u30D5\u30A1\u30A4\u30EB\u3092\u30DA\u30FC\u30B8\u5358\u4F4D\u3067\u30B9\u30AF\u30ED\u30FC\u30EB\u8868\u793A\u3059\u308B","View text one screen at a time"),file:k("\u30D5\u30A1\u30A4\u30EB\u306E\u7A2E\u985E\u3092\u5224\u5B9A\u3057\u3066\u8868\u793A\u3059\u308B","Determine file type"),install:k("\u30D5\u30A1\u30A4\u30EB\u3092\u30B3\u30D4\u30FC\u3057\u3001\u6A29\u9650\u3084\u6240\u6709\u8005\u3092\u8A2D\u5B9A\u3059\u308B","Copy files and set attributes",[["-m|--mode","\u6A29\u9650","permission mode","arg lang:mode"],["-d|--directory","\u30C7\u30A3\u30EC\u30AF\u30C8\u30EA\u3092\u4F5C\u6210","create directories"]]),tac:k("\u30D5\u30A1\u30A4\u30EB\u3092\u672B\u5C3E\u306E\u884C\u304B\u3089\u9006\u9806\u306B\u8868\u793A\u3059\u308B","Print files in reverse line order"),rev:k("\u5404\u884C\u306E\u6587\u5B57\u3092\u5DE6\u53F3\u53CD\u8EE2\u3059\u308B","Reverse characters of each line"),nl:k("\u884C\u756A\u53F7\u3092\u4ED8\u3051\u3066\u8868\u793A\u3059\u308B","Number lines of files"),paste:k("\u8907\u6570\u30D5\u30A1\u30A4\u30EB\u306E\u884C\u3092\u6A2A\u306B\u9023\u7D50\u3059\u308B","Merge lines of files side by side",[["-d|--delimiters","\u533A\u5207\u308A\u6587\u5B57","delimiter","arg"],["-s|--serial","1\u30D5\u30A1\u30A4\u30EB\u306E\u5168\u884C\u30921\u884C\u306B\u9023\u7D50","join all lines of each file"]]),column:k("\u5165\u529B\u3092\u5217\u306B\u63C3\u3048\u3066\u8868\u793A\u3059\u308B","Format input into columns",[["-t|--table","\u8868\u5F62\u5F0F\u306B\u63C3\u3048\u308B","create a table"],["-s|--separator","\u5165\u529B\u306E\u533A\u5207\u308A\u6587\u5B57","input separator","arg"]]),comm:k("\u30BD\u30FC\u30C8\u6E08\u307F\u306E2\u30D5\u30A1\u30A4\u30EB\u3092\u6BD4\u8F03\u3057\u3001\u5171\u901A\u884C\u30FB\u7247\u65B9\u3060\u3051\u306E\u884C\u3092\u8868\u793A\u3059\u308B","Compare two sorted files line by line"),split:k("\u30D5\u30A1\u30A4\u30EB\u3092\u8907\u6570\u306B\u5206\u5272\u3059\u308B","Split a file into pieces",[["-l|--lines","1\u30D5\u30A1\u30A4\u30EB\u3042\u305F\u308A\u306E\u884C\u6570","lines per file","arg"],["-b|--bytes","1\u30D5\u30A1\u30A4\u30EB\u3042\u305F\u308A\u306E\u30B5\u30A4\u30BA","size per file","arg"]]),md5sum:k("MD5 \u30CF\u30C3\u30B7\u30E5\u5024\u3092\u8A08\u7B97\u3059\u308B","Compute MD5 checksums",[["-c|--check","\u30CF\u30C3\u30B7\u30E5\u5024\u306E\u4E00\u89A7\u30D5\u30A1\u30A4\u30EB\u3068\u7167\u5408\u3059\u308B","verify against a checksum list"]]),sha256sum:k("SHA-256 \u30CF\u30C3\u30B7\u30E5\u5024\u3092\u8A08\u7B97\u3059\u308B","Compute SHA-256 checksums",[["-c|--check","\u30CF\u30C3\u30B7\u30E5\u5024\u306E\u4E00\u89A7\u30D5\u30A1\u30A4\u30EB\u3068\u7167\u5408\u3059\u308B","verify against a checksum list"]]),base64:k("Base64 \u3067\u30A8\u30F3\u30B3\u30FC\u30C9\u30FB\u30C7\u30B3\u30FC\u30C9\u3059\u308B","Base64 encode or decode",[["-d|--decode","\u30C7\u30B3\u30FC\u30C9\u3059\u308B","decode"],["-w|--wrap","\u6307\u5B9A\u6587\u5B57\u6570\u3067\u6298\u308A\u8FD4\u3059\uFF080 \u3067\u6298\u308A\u8FD4\u3055\u306A\u3044\uFF09","wrap at N columns (0 disables)","arg"]]),bash:k("bash \u30B7\u30A7\u30EB\u3092\u8D77\u52D5\u3059\u308B\uFF08\u30B9\u30AF\u30EA\u30D7\u30C8\u3084\u30B3\u30DE\u30F3\u30C9\u6587\u5B57\u5217\u3092\u5B9F\u884C\uFF09","Run the bash shell (a script or a command string)",[["-c","\u7D9A\u304F\u6587\u5B57\u5217\u3092\u30B3\u30DE\u30F3\u30C9\u3068\u3057\u3066\u5B9F\u884C","run the following string as a command","arg"],["-e","\u30A8\u30E9\u30FC\u3067\u5373\u7D42\u4E86","exit on error"],["-u","\u672A\u5B9A\u7FA9\u306E\u5909\u6570\u3092\u53C2\u7167\u3057\u305F\u3089\u30A8\u30E9\u30FC\u306B\u3059\u308B","treat unset variables as an error"],["-x","\u5B9F\u884C\u3059\u308B\u30B3\u30DE\u30F3\u30C9\u3092\u8868\u793A","trace commands"],["-n","\u69CB\u6587\u30C1\u30A7\u30C3\u30AF\u306E\u307F","syntax check only"],["-o","\u540D\u524D\u3067\u30AA\u30D7\u30B7\u30E7\u30F3\u3092\u6709\u52B9\u306B\u3059\u308B\uFF08`set -o` \u3068\u540C\u3058\uFF09","enable an option by name (as `set -o`)","arg",Pt],["-l|--login","\u30ED\u30B0\u30A4\u30F3\u30B7\u30A7\u30EB\u3068\u3057\u3066\u8D77\u52D5","act as a login shell"],["-i","\u5BFE\u8A71\u30B7\u30A7\u30EB\u3068\u3057\u3066\u8D77\u52D5","act as an interactive shell"],["-s","\u30B3\u30DE\u30F3\u30C9\u3092\u6A19\u6E96\u5165\u529B\u304B\u3089\u8AAD\u3080","read commands from stdin"],["--norc","~/.bashrc \u3092\u8AAD\u307E\u306A\u3044","do not read ~/.bashrc"],["--noprofile","\u30ED\u30B0\u30A4\u30F3\u6642\u306E\u8A2D\u5B9A\u30D5\u30A1\u30A4\u30EB\u3092\u8AAD\u307E\u306A\u3044","do not read the login profile files"]],{positional:[S("\u5B9F\u884C\u3059\u308B\u30B9\u30AF\u30EA\u30D7\u30C8","script to run")]}),sh:k("POSIX \u30B7\u30A7\u30EB\u3092\u8D77\u52D5\u3059\u308B","Run the POSIX shell",[["-c","\u7D9A\u304F\u6587\u5B57\u5217\u3092\u30B3\u30DE\u30F3\u30C9\u3068\u3057\u3066\u5B9F\u884C","run the following string as a command","arg"],["-e","\u30A8\u30E9\u30FC\u3067\u5373\u7D42\u4E86","exit on error"],["-u","\u672A\u5B9A\u7FA9\u306E\u5909\u6570\u3092\u53C2\u7167\u3057\u305F\u3089\u30A8\u30E9\u30FC\u306B\u3059\u308B","treat unset variables as an error"],["-x","\u5B9F\u884C\u3059\u308B\u30B3\u30DE\u30F3\u30C9\u3092\u8868\u793A","trace commands"],["-o","\u540D\u524D\u3067\u30AA\u30D7\u30B7\u30E7\u30F3\u3092\u6709\u52B9\u306B\u3059\u308B\uFF08`set -o` \u3068\u540C\u3058\uFF09","enable an option by name (as `set -o`)","arg",Pt]],{positional:[S("\u5B9F\u884C\u3059\u308B\u30B9\u30AF\u30EA\u30D7\u30C8","script to run")]}),perl:k("Perl \u3092\u5B9F\u884C\u3059\u308B\uFF08`-e` \u3067\u305D\u306E\u5834\u306E\u30B3\u30FC\u30C9\u3092\u5B9F\u884C\u3002sed \u3084 awk \u306E\u4EE3\u308F\u308A\u306E\u30EF\u30F3\u30E9\u30A4\u30CA\u30FC\u306B\u3088\u304F\u4F7F\u3046\uFF09","Run Perl (`-e` runs code given on the command line; common for one-liners instead of sed/awk)",[["-e","\u5B9F\u884C\u3059\u308B Perl \u306E\u30B3\u30FC\u30C9","Perl code to run","arg fills lang:perl"],["-E","\u5B9F\u884C\u3059\u308B Perl \u306E\u30B3\u30FC\u30C9\uFF08say \u306A\u3069\u306E\u65B0\u6A5F\u80FD\u3092\u6709\u52B9\u306B\u3057\u3066\uFF09","Perl code to run, with newer features like say","arg fills lang:perl"],["-n","\u5165\u529B\u306E\u5404\u884C\u306B\u3064\u3044\u3066\u30B3\u30FC\u30C9\u3092\u5B9F\u884C\u3059\u308B\uFF08\u81EA\u52D5\u3067\u306F\u51FA\u529B\u3057\u306A\u3044\uFF09","run the code for each input line (no automatic printing)"],["-p","\u5165\u529B\u306E\u5404\u884C\u306B\u3064\u3044\u3066\u30B3\u30FC\u30C9\u3092\u5B9F\u884C\u3057\u3001`$_` \u3092\u51FA\u529B\u3059\u308B\uFF08sed \u98A8\uFF09","run the code for each line and print `$_` (sed-like)"],["-i","\u30D5\u30A1\u30A4\u30EB\u3092\u76F4\u63A5\u66F8\u304D\u63DB\u3048\u308B\uFF08`-i.bak` \u3067\u30D0\u30C3\u30AF\u30A2\u30C3\u30D7\u3092\u4F5C\u308B\uFF09","edit files in place (`-i.bak` keeps a backup)","attached"],["-l","\u5404\u884C\u672B\u306E\u6539\u884C\u3092\u53D6\u308A\u9664\u304D\u3001print \u3067\u6539\u884C\u3092\u4ED8\u3051\u308B","chomp input lines and add a newline to print"],["-a","\u5404\u884C\u3092\u7A7A\u767D\u3067\u5206\u5272\u3057\u3066 `@F` \u306B\u5165\u308C\u308B\uFF08-n \u304B -p \u3068\u4F7F\u3046\uFF09","split each line into `@F` (with -n or -p)"],["-F","`-a` \u306E\u533A\u5207\u308A\uFF08\u4F8B: `-F:`\u3001`-F,`\uFF09","separator for `-a` (e.g. `-F:`)","attached"],["-0","\u5165\u529B\u306E\u533A\u5207\u308A\uFF08`-0777` \u3067\u30D5\u30A1\u30A4\u30EB\u5168\u4F53\u30921\u3064\u3068\u3057\u3066\u8AAD\u3080\uFF09","input record separator (`-0777` reads whole files)","attached"],["-M","\u30E2\u30B8\u30E5\u30FC\u30EB\u3092\u8AAD\u307F\u8FBC\u3080\uFF08\u4F8B: `-MJSON::PP`\uFF09","load a module (e.g. `-MJSON::PP`)","attached"],["-w","\u8B66\u544A\u3092\u8868\u793A\u3059\u308B","enable warnings"],["-c","\u69CB\u6587\u30C1\u30A7\u30C3\u30AF\u3060\u3051\u3092\u884C\u3046","check syntax only"]],{positional:[S("\u5B9F\u884C\u3059\u308B\u30B9\u30AF\u30EA\u30D7\u30C8\u30D5\u30A1\u30A4\u30EB","script file to run"),$e]}),python3:k("Python 3 \u30A4\u30F3\u30BF\u30D7\u30EA\u30BF\u3092\u5B9F\u884C\u3059\u308B","Run the Python 3 interpreter",[["-c","\u7D9A\u304F\u6587\u5B57\u5217\u3092 Python \u30B3\u30FC\u30C9\u3068\u3057\u3066\u5B9F\u884C","run the string as Python code","arg"],["-m","\u30E2\u30B8\u30E5\u30FC\u30EB\u3092\u30B9\u30AF\u30EA\u30D7\u30C8\u3068\u3057\u3066\u5B9F\u884C","run a module as a script","arg"]]),make:k("Makefile \u306B\u5F93\u3063\u3066\u30D3\u30EB\u30C9\u3092\u5B9F\u884C\u3059\u308B","Build targets from a Makefile",[["-C","\u3053\u306E\u30C7\u30A3\u30EC\u30AF\u30C8\u30EA\u3067\u5B9F\u884C","run in this directory","arg"],["-j|--jobs","\u4E26\u5217\u30B8\u30E7\u30D6\u6570","parallel jobs","arg"],["-f|--file","\u4F7F\u3046 Makefile","makefile to use","arg"]],{positional:[S("\u30D3\u30EB\u30C9\u3059\u308B\u30BF\u30FC\u30B2\u30C3\u30C8","target to build")]}),git:k("Git \u30D0\u30FC\u30B8\u30E7\u30F3\u7BA1\u7406\u30B7\u30B9\u30C6\u30E0","Git version control",[["-C","\u3053\u306E\u30C7\u30A3\u30EC\u30AF\u30C8\u30EA\u3067\u5B9F\u884C","run as if started in this directory","arg"]],{subcommands:{clone:k("\u30EA\u30DD\u30B8\u30C8\u30EA\u3092\u8907\u88FD\u3059\u308B","Clone a repository",[["--depth","\u53D6\u5F97\u3059\u308B\u5C65\u6B74\u306E\u6DF1\u3055\uFF08\u6D45\u3044\u30AF\u30ED\u30FC\u30F3\uFF09","shallow clone depth","arg"],["-b|--branch","\u30C1\u30A7\u30C3\u30AF\u30A2\u30A6\u30C8\u3059\u308B\u30D6\u30E9\u30F3\u30C1","branch to check out","arg"]]),add:k("\u5909\u66F4\u3092\u30B9\u30C6\u30FC\u30B8\u3059\u308B","Stage changes",[["-A|--all","\u5168\u3066\u306E\u5909\u66F4\u3092\u30B9\u30C6\u30FC\u30B8","stage all changes"],["-p|--patch","\u5909\u66F4\u3092\u5BFE\u8A71\u7684\u306B\u9078\u3093\u3067\u30B9\u30C6\u30FC\u30B8","stage hunks interactively"]]),commit:k("\u30B9\u30C6\u30FC\u30B8\u3057\u305F\u5909\u66F4\u3092\u30B3\u30DF\u30C3\u30C8\u3059\u308B","Record staged changes",[["-m|--message","\u30B3\u30DF\u30C3\u30C8\u30E1\u30C3\u30BB\u30FC\u30B8","commit message","arg"],["-a|--all","\u8FFD\u8DE1\u4E2D\u30D5\u30A1\u30A4\u30EB\u306E\u5909\u66F4\u3092\u81EA\u52D5\u3067\u30B9\u30C6\u30FC\u30B8","stage tracked changes automatically"],["--amend","\u76F4\u524D\u306E\u30B3\u30DF\u30C3\u30C8\u3092\u4FEE\u6B63","amend the previous commit"]]),push:k("\u30EA\u30E2\u30FC\u30C8\u306B\u9001\u4FE1\u3059\u308B","Push to a remote",[["-u|--set-upstream","\u4E0A\u6D41\u30D6\u30E9\u30F3\u30C1\u3068\u3057\u3066\u8A2D\u5B9A","set upstream"],["-f|--force","\u5F37\u5236\u7684\u306B\u4E0A\u66F8\u304D\uFF08\u6CE8\u610F\uFF09","force push (careful!)"],["--tags","\u30BF\u30B0\u3082\u9001\u4FE1","push tags"]]),pull:k("\u30EA\u30E2\u30FC\u30C8\u304B\u3089\u53D6\u5F97\u3057\u3066\u7D71\u5408\u3059\u308B","Fetch and integrate from a remote",[["--rebase","\u30DE\u30FC\u30B8\u3067\u306F\u306A\u304F\u30EA\u30D9\u30FC\u30B9\u3067\u7D71\u5408","rebase instead of merge"]]),fetch:k("\u30EA\u30E2\u30FC\u30C8\u304B\u3089\u53D6\u5F97\u3059\u308B\uFF08\u7D71\u5408\u306F\u3057\u306A\u3044\uFF09","Download objects from a remote",[["--all","\u5168\u3066\u306E\u30EA\u30E2\u30FC\u30C8\u304B\u3089\u53D6\u5F97","fetch all remotes"],["--prune","\u524A\u9664\u3055\u308C\u305F\u30EA\u30E2\u30FC\u30C8\u30D6\u30E9\u30F3\u30C1\u3092\u6383\u9664","prune deleted branches"]]),checkout:k("\u30D6\u30E9\u30F3\u30C1\u3092\u5207\u308A\u66FF\u3048\u308B\u30FB\u30D5\u30A1\u30A4\u30EB\u3092\u5FA9\u5143\u3059\u308B","Switch branches or restore files",[["-b","\u65B0\u3057\u3044\u30D6\u30E9\u30F3\u30C1\u3092\u4F5C\u3063\u3066\u5207\u308A\u66FF\u3048\u308B","create and switch to a new branch","arg"]]),switch:k("\u30D6\u30E9\u30F3\u30C1\u3092\u5207\u308A\u66FF\u3048\u308B","Switch branches",[["-c|--create","\u65B0\u3057\u3044\u30D6\u30E9\u30F3\u30C1\u3092\u4F5C\u3063\u3066\u5207\u308A\u66FF\u3048\u308B","create a new branch","arg"]]),branch:k("\u30D6\u30E9\u30F3\u30C1\u3092\u4E00\u89A7\u30FB\u4F5C\u6210\u30FB\u524A\u9664\u3059\u308B","List, create or delete branches",[["-d|--delete","\u30D6\u30E9\u30F3\u30C1\u3092\u524A\u9664","delete a branch"],["-D","\u5F37\u5236\u524A\u9664","force delete"],["-a|--all","\u30EA\u30E2\u30FC\u30C8\u30D6\u30E9\u30F3\u30C1\u3082\u8868\u793A","list remote branches too"]]),status:k("\u4F5C\u696D\u30C4\u30EA\u30FC\u306E\u72B6\u614B\u3092\u8868\u793A\u3059\u308B","Show working tree status",[["-s|--short","\u77ED\u3044\u5F62\u5F0F","short format"],["--porcelain","\u30B9\u30AF\u30EA\u30D7\u30C8\u5411\u3051\u306E\u5B89\u5B9A\u3057\u305F\u5F62\u5F0F","stable machine-readable format"]]),log:k("\u30B3\u30DF\u30C3\u30C8\u5C65\u6B74\u3092\u8868\u793A\u3059\u308B","Show commit logs",[["--oneline","1\u30B3\u30DF\u30C3\u30C81\u884C\u3067\u8868\u793A","one line per commit"],["-n","\u8868\u793A\u3059\u308B\u4EF6\u6570","number of commits","arg"],["--graph","\u30D6\u30E9\u30F3\u30C1\u3092\u30B0\u30E9\u30D5\u8868\u793A","draw a graph"],["--pretty|--format","\u5404\u30B3\u30DF\u30C3\u30C8\u306E\u8868\u793A\u5F62\u5F0F","how each commit is shown","arg lang:gitformat"],["--date","\u65E5\u6642\u306E\u8868\u793A\u5F62\u5F0F","how dates are shown","arg lang:gitdate"],["--since|--after","\u3053\u306E\u65E5\u6642\u4EE5\u964D\u306E\u30B3\u30DF\u30C3\u30C8\u3060\u3051","commits after this date","arg"],["--until|--before","\u3053\u306E\u65E5\u6642\u4EE5\u524D\u306E\u30B3\u30DF\u30C3\u30C8\u3060\u3051","commits before this date","arg"],["--author","\u4F5C\u8005\u3067\u7D5E\u308B","filter by author","arg"],["--grep","\u30B3\u30DF\u30C3\u30C8\u30E1\u30C3\u30BB\u30FC\u30B8\u3067\u7D5E\u308B","filter by message","arg"],["--no-merges","\u30DE\u30FC\u30B8\u30B3\u30DF\u30C3\u30C8\u3092\u9664\u304F","exclude merge commits"],["--all","\u3059\u3079\u3066\u306E\u30D6\u30E9\u30F3\u30C1\u306E\u5C65\u6B74","history of all branches"],["-p|--patch","\u5DEE\u5206\u3082\u8868\u793A","show the diff"]]),diff:k("\u5DEE\u5206\u3092\u8868\u793A\u3059\u308B","Show changes",[["--cached|--staged","\u30B9\u30C6\u30FC\u30B8\u6E08\u307F\u306E\u5DEE\u5206","staged changes"],["--stat","\u5909\u66F4\u306E\u7D71\u8A08\u3060\u3051\u8868\u793A","show a diffstat"],["--name-only","\u30D5\u30A1\u30A4\u30EB\u540D\u306E\u307F\u8868\u793A","names only"]]),merge:k("\u30D6\u30E9\u30F3\u30C1\u3092\u7D71\u5408\u3059\u308B","Merge branches",[["--no-ff","\u65E9\u9001\u308A\u305B\u305A\u30DE\u30FC\u30B8\u30B3\u30DF\u30C3\u30C8\u3092\u4F5C\u308B","always create a merge commit"]]),rebase:k("\u30B3\u30DF\u30C3\u30C8\u3092\u5225\u306E\u57FA\u70B9\u306B\u4ED8\u3051\u66FF\u3048\u308B","Reapply commits on another base",[["-i|--interactive","\u5BFE\u8A71\u7684\u306B\u30EA\u30D9\u30FC\u30B9","interactive rebase"]]),reset:k("HEAD \u3084\u30B9\u30C6\u30FC\u30B8\u3092\u6307\u5B9A\u72B6\u614B\u306B\u623B\u3059","Reset HEAD or the index",[["--hard","\u4F5C\u696D\u30C4\u30EA\u30FC\u3082\u542B\u3081\u3066\u5B8C\u5168\u306B\u623B\u3059\uFF08\u5909\u66F4\u306F\u5931\u308F\u308C\u308B\uFF09","discard all changes (destructive)"],["--soft","\u30B3\u30DF\u30C3\u30C8\u3060\u3051\u623B\u3057\u3001\u5909\u66F4\u306F\u30B9\u30C6\u30FC\u30B8\u306B\u6B8B\u3059","keep changes staged"]]),stash:k("\u5909\u66F4\u3092\u4E00\u6642\u9000\u907F\u3059\u308B","Stash changes away"),tag:k("\u30BF\u30B0\u3092\u4F5C\u6210\u30FB\u4E00\u89A7\u8868\u793A\u3059\u308B","Create or list tags",[["-a","\u6CE8\u91C8\u4ED8\u304D\u30BF\u30B0\u3092\u4F5C\u308B","annotated tag","arg"],["-m","\u30BF\u30B0\u30E1\u30C3\u30BB\u30FC\u30B8","tag message","arg"]]),"rev-parse":k("\u30EA\u30D3\u30B8\u30E7\u30F3\u3084\u30EA\u30DD\u30B8\u30C8\u30EA\u60C5\u5831\u3092\u89E3\u6C7A\u3057\u3066\u8868\u793A\u3059\u308B","Resolve revisions and repository info",[["--show-toplevel","\u30EA\u30DD\u30B8\u30C8\u30EA\u306E\u30EB\u30FC\u30C8\u30C7\u30A3\u30EC\u30AF\u30C8\u30EA\u3092\u8868\u793A","print the repository root"],["--abbrev-ref","\u77ED\u3044\u30D6\u30E9\u30F3\u30C1\u540D\u3067\u8868\u793A\uFF08`HEAD` \u306A\u3089\u73FE\u5728\u306E\u30D6\u30E9\u30F3\u30C1\uFF09","short ref name (`HEAD` = current branch)"],["--short","\u77ED\u3044\u30CF\u30C3\u30B7\u30E5\u3092\u8868\u793A","short hash"]]),remote:k("\u30EA\u30E2\u30FC\u30C8\u3092\u7BA1\u7406\u3059\u308B","Manage remotes",[["-v","URL \u3082\u8868\u793A","show URLs"]]),config:k("\u8A2D\u5B9A\u3092\u53D6\u5F97\u30FB\u5909\u66F4\u3059\u308B","Get or set configuration",[["--global","\u30E6\u30FC\u30B6\u30FC\u5168\u4F53\u306E\u8A2D\u5B9A","user-wide config"],["--get","\u5024\u3092\u53D6\u5F97","get a value"]])}}),docker:k("Docker \u30B3\u30F3\u30C6\u30CA\u3092\u64CD\u4F5C\u3059\u308B","Manage Docker containers",[],{subcommands:{run:k("\u30A4\u30E1\u30FC\u30B8\u304B\u3089\u65B0\u3057\u3044\u30B3\u30F3\u30C6\u30CA\u3092\u8D77\u52D5\u3059\u308B","Run a new container",[["-d|--detach","\u30D0\u30C3\u30AF\u30B0\u30E9\u30A6\u30F3\u30C9\u3067\u5B9F\u884C","run in the background"],["-it","\u5BFE\u8A71\u7684\u306B\u7AEF\u672B\u4ED8\u304D\u3067\u5B9F\u884C\uFF08`-i` \u3068 `-t`\uFF09","interactive with a TTY (`-i` + `-t`)"],["-i|--interactive","\u6A19\u6E96\u5165\u529B\u3092\u958B\u3044\u305F\u307E\u307E\u306B\u3059\u308B","keep stdin open"],["-t|--tty","\u7591\u4F3C\u7AEF\u672B\u3092\u5272\u308A\u5F53\u3066\u308B","allocate a TTY"],["--rm","\u7D42\u4E86\u5F8C\u306B\u30B3\u30F3\u30C6\u30CA\u3092\u524A\u9664","remove the container on exit"],["-p|--publish","\u30DD\u30FC\u30C8\u516C\u958B\uFF08`\u30DB\u30B9\u30C8:\u30B3\u30F3\u30C6\u30CA`\uFF09","publish a port (`host:container`)","arg"],["-v|--volume","\u30DC\u30EA\u30E5\u30FC\u30E0\u3092\u30DE\u30A6\u30F3\u30C8\uFF08`\u30DB\u30B9\u30C8:\u30B3\u30F3\u30C6\u30CA`\uFF09","bind-mount a volume (`host:container`)","arg"],["-e|--env","\u74B0\u5883\u5909\u6570\u3092\u8A2D\u5B9A","set an environment variable","arg"],["--name","\u30B3\u30F3\u30C6\u30CA\u540D","container name","arg"],["-w|--workdir","\u4F5C\u696D\u30C7\u30A3\u30EC\u30AF\u30C8\u30EA","working directory","arg"]]),build:k("Dockerfile \u304B\u3089\u30A4\u30E1\u30FC\u30B8\u3092\u30D3\u30EB\u30C9\u3059\u308B","Build an image from a Dockerfile",[["-t|--tag","\u30A4\u30E1\u30FC\u30B8\u540D\u3068\u30BF\u30B0","name and tag","arg"],["-f|--file","Dockerfile \u306E\u30D1\u30B9","Dockerfile path","arg"]]),exec:k("\u5B9F\u884C\u4E2D\u306E\u30B3\u30F3\u30C6\u30CA\u5185\u3067\u30B3\u30DE\u30F3\u30C9\u3092\u5B9F\u884C\u3059\u308B","Run a command in a running container",[["-it","\u5BFE\u8A71\u7684\u306B\u7AEF\u672B\u4ED8\u304D\u3067\u5B9F\u884C","interactive with a TTY"],["-i|--interactive","\u6A19\u6E96\u5165\u529B\u3092\u958B\u3044\u305F\u307E\u307E\u306B\u3059\u308B","keep stdin open"],["-t|--tty","\u7591\u4F3C\u7AEF\u672B\u3092\u5272\u308A\u5F53\u3066\u308B","allocate a TTY"]]),ps:k("\u30B3\u30F3\u30C6\u30CA\u4E00\u89A7\u3092\u8868\u793A\u3059\u308B","List containers",[["-a|--all","\u505C\u6B62\u4E2D\u306E\u3082\u306E\u3082\u8868\u793A","show all containers"],["-q|--quiet","ID \u3060\u3051\u8868\u793A","only IDs"]]),images:k("\u30A4\u30E1\u30FC\u30B8\u4E00\u89A7\u3092\u8868\u793A\u3059\u308B","List images"),pull:k("\u30A4\u30E1\u30FC\u30B8\u3092\u53D6\u5F97\u3059\u308B","Pull an image"),push:k("\u30A4\u30E1\u30FC\u30B8\u3092\u9001\u4FE1\u3059\u308B","Push an image"),logs:k("\u30B3\u30F3\u30C6\u30CA\u306E\u30ED\u30B0\u3092\u8868\u793A\u3059\u308B","Fetch container logs",[["-f|--follow","\u30ED\u30B0\u3092\u8FFD\u3044\u7D9A\u3051\u308B","follow log output"]]),stop:k("\u30B3\u30F3\u30C6\u30CA\u3092\u505C\u6B62\u3059\u308B","Stop containers"),rm:k("\u30B3\u30F3\u30C6\u30CA\u3092\u524A\u9664\u3059\u308B","Remove containers",[["-f|--force","\u5B9F\u884C\u4E2D\u3067\u3082\u5F37\u5236\u524A\u9664","force removal"]]),compose:k("\u8907\u6570\u30B3\u30F3\u30C6\u30CA\u306E\u69CB\u6210\uFF08compose.yaml\uFF09\u3092\u64CD\u4F5C\u3059\u308B","Manage multi-container apps (compose.yaml)")}}),npm:k("Node.js \u306E\u30D1\u30C3\u30B1\u30FC\u30B8\u30DE\u30CD\u30FC\u30B8\u30E3","Node.js package manager",[],{subcommands:{install:k("\u4F9D\u5B58\u30D1\u30C3\u30B1\u30FC\u30B8\u3092\u30A4\u30F3\u30B9\u30C8\u30FC\u30EB\u3059\u308B","Install dependencies",[["-D|--save-dev","\u958B\u767A\u7528\u4F9D\u5B58\u3068\u3057\u3066\u8FFD\u52A0","save as a dev dependency"],["-g|--global","\u30B0\u30ED\u30FC\u30D0\u30EB\u306B\u30A4\u30F3\u30B9\u30C8\u30FC\u30EB","install globally"]]),ci:k("lock \u30D5\u30A1\u30A4\u30EB\u901A\u308A\u306B\u30AF\u30EA\u30FC\u30F3\u30A4\u30F3\u30B9\u30C8\u30FC\u30EB\u3059\u308B","Clean install from the lock file"),run:k("package.json \u306E scripts \u3092\u5B9F\u884C\u3059\u308B","Run a package.json script"),test:k("\u30C6\u30B9\u30C8\u30B9\u30AF\u30EA\u30D7\u30C8\u3092\u5B9F\u884C\u3059\u308B","Run the test script")}})};var Ba={alpha:["\u82F1\u5B57","letters"],digit:["\u6570\u5B57","digits"],alnum:["\u82F1\u6570\u5B57","letters and digits"],upper:["\u5927\u6587\u5B57","uppercase letters"],lower:["\u5C0F\u6587\u5B57","lowercase letters"],space:["\u7A7A\u767D\u6587\u5B57","whitespace"],blank:["\u30B9\u30DA\u30FC\u30B9\u3068\u30BF\u30D6","spaces and tabs"],punct:["\u8A18\u53F7","punctuation"],xdigit:["16\u9032\u6570\u5B57","hex digits"],cntrl:["\u5236\u5FA1\u6587\u5B57","control characters"],print:["\u8868\u793A\u53EF\u80FD\u306A\u6587\u5B57","printable characters"],graph:["\u7A7A\u767D\u4EE5\u5916\u306E\u8868\u793A\u53EF\u80FD\u306A\u6587\u5B57","visible characters"]},Zs={w:{ja:"\u82F1\u6570\u5B57\u307E\u305F\u306F\u30A2\u30F3\u30C0\u30FC\u30B9\u30B3\u30A21\u6587\u5B57",en:"a word character (letter, digit or underscore)",gnu:!0},W:{ja:"\u82F1\u6570\u5B57\u3068\u30A2\u30F3\u30C0\u30FC\u30B9\u30B3\u30A2\u4EE5\u5916\u306E1\u6587\u5B57",en:"a non-word character",gnu:!0},s:{ja:"\u7A7A\u767D\u6587\u5B571\u6587\u5B57",en:"a whitespace character",gnu:!0},S:{ja:"\u7A7A\u767D\u4EE5\u5916\u306E1\u6587\u5B57",en:"a non-whitespace character",gnu:!0},d:{ja:"\u6570\u5B571\u6587\u5B57",en:"a digit",gnu:!1},D:{ja:"\u6570\u5B57\u4EE5\u5916\u306E1\u6587\u5B57",en:"a non-digit",gnu:!1},b:{ja:"\u5358\u8A9E\u306E\u5883\u754C\uFF08\u6587\u5B57\u306F\u6D88\u8CBB\u3057\u306A\u3044\uFF09",en:"a word boundary (matches no character)",gnu:!0},B:{ja:"\u5358\u8A9E\u306E\u5883\u754C\u3067\u306F\u306A\u3044\u4F4D\u7F6E",en:"a position that is not a word boundary",gnu:!0},"<":{ja:"\u5358\u8A9E\u306E\u5148\u982D",en:"the start of a word",gnu:!0},">":{ja:"\u5358\u8A9E\u306E\u672B\u5C3E",en:"the end of a word",gnu:!0},A:{ja:"\u6587\u5B57\u5217\u306E\u5148\u982D",en:"the start of the subject",gnu:!1},z:{ja:"\u6587\u5B57\u5217\u306E\u672B\u5C3E",en:"the end of the subject",gnu:!1},Z:{ja:"\u6587\u5B57\u5217\u306E\u672B\u5C3E\uFF08\u672B\u5C3E\u306E\u6539\u884C\u306E\u524D\u3082\u53EF\uFF09",en:"the end of the subject (or before a final newline)",gnu:!1},t:{ja:"\u30BF\u30D6",en:"a tab",gnu:!1},n:{ja:"\u6539\u884C",en:"a newline",gnu:!1},r:{ja:"\u5FA9\u5E30\u6587\u5B57(CR)",en:"a carriage return",gnu:!1}},Xe={t:["\u30BF\u30D6","a tab"],n:["\u6539\u884C","a newline"],r:["\u5FA9\u5E30\u6587\u5B57(CR)","a carriage return"],f:["\u6539\u30DA\u30FC\u30B8","a form feed"],v:["\u5782\u76F4\u30BF\u30D6","a vertical tab"]};function Ne(s,e,t,n={}){let r={src:s,i:0,flavor:e,groups:0,s:O(t),literals:new Set,sedEscapes:!!n.sedEscapes};return Xs(Ks(r,0),r)}function Ha(s){let{src:e,i:t,flavor:n}=s;return n==="bre"?e.startsWith("\\(",t)?2:0:e[t]==="("?1:0}function Rn(s){let{src:e,i:t,flavor:n}=s;return n==="bre"?e.startsWith("\\)",t)?2:0:e[t]===")"?1:0}function Ys(s){let{src:e,i:t,flavor:n}=s;return n==="bre"?e.startsWith("\\|",t)?2:0:e[t]==="|"?1:0}function Ga(s,e){let{src:t,i:n,flavor:r}=s,a=0;if(t[n]==="*"&&!(r==="bre"&&e))a=1;else if(r!=="bre"&&(t[n]==="+"||t[n]==="?"))a=1;else if(r==="bre"&&(t.startsWith("\\+",n)||t.startsWith("\\?",n)))a=2;else if(r!=="bre"&&t[n]==="{"){let o=/^\{(\d*)(,?)(\d*)\}/.exec(t.slice(n));o&&(o[1]||o[3])&&(a=o[0].length)}else if(r==="bre"&&t.startsWith("\\{",n)){let o=/^\\\{(\d*)(,?)(\d*)\\\}/.exec(t.slice(n));o&&(o[1]||o[3])&&(a=o[0].length)}return a&&r==="pcre"&&(t[n+a]==="?"||t[n+a]==="+")&&a++,a}function Ks(s,e){let{s:t}=s,n=[],r=()=>n.length===0||n[n.length-1].kind==="operator"&&n[n.length-1].label==="|";for(;s.i<s.src.length;){let a=s.i,o=s.src[a];if(e>0&&Rn(s))return n;let l;if(l=Ys(s)){s.i+=l,n.push({start:a,end:s.i,kind:"operator",label:"|",explanation:t("`|`: \u5DE6\u53F3\u3069\u3061\u3089\u304B\u306B\u4E00\u81F4\u3059\u308C\u3070\u3088\u3044\uFF08\u307E\u305F\u306F\uFF09","`|`: either the left or the right side (or)"),children:[]});continue}if(l=Ga(s,r())){s.i+=l,n.push(Za(s,a,n[n.length-1]));continue}if(l=Ha(s)){n.push(Ka(s,l));continue}if(o==="["){n.push(Xa(s));continue}if(o==="\\"){n.push(Qa(s));continue}s.i++,o==="."?n.push({start:a,end:s.i,kind:"pattern",explanation:t("`.`: \u4EFB\u610F\u306E1\u6587\u5B57","`.`: any single character"),children:[]}):o==="^"&&(s.flavor!=="bre"||r())?n.push({start:a,end:s.i,kind:"keyword",explanation:t("`^`: \u884C\u306E\u5148\u982D","`^`: start of the line"),children:[]}):o==="$"&&(s.flavor!=="bre"||s.i===s.src.length||Rn(s)||Ys(s))?n.push({start:a,end:s.i,kind:"keyword",explanation:t("`$`: \u884C\u306E\u672B\u5C3E","`$`: end of the line"),children:[]}):s.flavor==="bre"&&"+?{}()|".includes(o)?n.push({start:a,end:s.i,kind:"string",explanation:t(`\u6587\u5B57\u300C${o}\u300D\u305D\u306E\u3082\u306E\uFF08\u57FA\u672C\u6B63\u898F\u8868\u73FE\u3067\u306F \`${o}\` \u306F\u7279\u5225\u306A\u610F\u5473\u3092\u6301\u305F\u306A\u3044\u3002\`-E\` \u3092\u4ED8\u3051\u308B\u3068\u62E1\u5F35\u6B63\u898F\u8868\u73FE\u306E\u8A18\u53F7\u306B\u306A\u308B\uFF09`,`A literal "${o}" (in basic regex \`${o}\` is not special; with \`-E\` it is an operator)`),children:[]}):n.push(Ya(s,a,o))}return n}function Ya(s,e,t){let n={start:e,end:s.i,kind:"string",explanation:s.s(`\u6587\u5B57\u300C${t}\u300D`,`Literal "${t}"`),children:[]};return s.literals.add(n),n}function Xs(s,e){let t=[],n=r=>r?.kind==="operator"&&r.label!=="|";return s.forEach((r,a)=>{r.children=Xs(r.children,e);let o=t[t.length-1];if(o&&e.literals.has(o)&&e.literals.has(r)&&o.end===r.start&&!n(s[a+1])){o.end=r.end;let l=e.src.slice(o.start,o.end);o.explanation=e.s(`\u6587\u5B57\u5217\u300C${l}\u300D`,`Literal "${l}"`);return}t.push(r)}),t}function Za(s,e,t){let{s:n}=s,r=s.src.slice(e,s.i),a=t?`\`${s.src.slice(t.start,t.end)}\``:n("\u76F4\u524D\u306E\u8981\u7D20","the previous item"),o=r.replace(/^\\/,"").replace(/\\\}$/,"}").replace(/^\\\{/,"{"),l="";(s.flavor==="pcre"&&o.length>1&&/[?+]$/.test(o)&&!/^\{.*\}$/.test(o)||s.flavor==="pcre"&&/\}[?+]$/.test(o))&&(l=o.slice(-1),o=o.slice(0,-1));let c,u=/^\{(\d*)(,?)(\d*)\}$/.exec(o);o==="*"?c=n("0\u56DE\u4EE5\u4E0A","zero or more times"):o==="+"?c=n("1\u56DE\u4EE5\u4E0A","one or more times"):o==="?"?c=n("0\u56DE\u304B1\u56DE\uFF08\u3042\u3063\u3066\u3082\u306A\u304F\u3066\u3082\u3088\u3044\uFF09","zero or one time (optional)"):u&&!u[2]?c=n(`\u3061\u3087\u3046\u3069${u[1]}\u56DE`,`exactly ${u[1]} times`):u&&!u[3]?c=n(`${u[1]}\u56DE\u4EE5\u4E0A`,`${u[1]} or more times`):u&&!u[1]?c=n(`${u[3]}\u56DE\u4EE5\u4E0B`,`at most ${u[3]} times`):u?c=n(`${u[1]}\u301C${u[3]}\u56DE`,`${u[1]} to ${u[3]} times`):c=r;let h=l==="?"?n("\uFF08\u3067\u304D\u308B\u3060\u3051\u5C11\u306A\u304F\uFF09"," (as few as possible)"):l==="+"?n("\uFF08\u30D0\u30C3\u30AF\u30C8\u30E9\u30C3\u30AF\u3057\u306A\u3044\uFF09"," (possessive, no backtracking)"):"";return{start:e,end:s.i,kind:"operator",explanation:n(`\`${r}\`: ${a} \u3092${c}\u7E70\u308A\u8FD4\u3059${h}`,`\`${r}\`: repeat ${a} ${c}${h}`),children:[]}}function Ka(s,e){let{s:t}=s,n=s.i;s.i+=e;let r,a,o=s.src.slice(s.i),l=s.flavor==="pcre"?/^\?(:|=|!|<=|<!|P?<([A-Za-z_]\w*)>|[imsx-]+\))/.exec(o):null;if(l){s.i+=l[0].length;let h=l[1];if(h===":")r=t("`(?:\u2026)`: \u307E\u3068\u3081\u308B\u3060\u3051\u306E\u30B0\u30EB\u30FC\u30D7\uFF08\u756A\u53F7\u306F\u4ED8\u304B\u306A\u3044\uFF09","`(?:\u2026)`: non-capturing group");else if(h==="=")r=t("`(?=\u2026)`: \u76F4\u5F8C\u306B \u2026 \u304C\u7D9A\u304F\u4F4D\u7F6E\uFF08\u5148\u8AAD\u307F\u3002\u6587\u5B57\u306F\u6D88\u8CBB\u3057\u306A\u3044\uFF09","`(?=\u2026)`: followed by \u2026 (lookahead, consumes nothing)");else if(h==="!")r=t("`(?!\u2026)`: \u76F4\u5F8C\u306B \u2026 \u304C\u7D9A\u304B\u306A\u3044\u4F4D\u7F6E\uFF08\u5426\u5B9A\u5148\u8AAD\u307F\uFF09","`(?!\u2026)`: not followed by \u2026 (negative lookahead)");else if(h==="<=")r=t("`(?<=\u2026)`: \u76F4\u524D\u304C \u2026 \u3067\u3042\u308B\u4F4D\u7F6E\uFF08\u5F8C\u8AAD\u307F\uFF09","`(?<=\u2026)`: preceded by \u2026 (lookbehind)");else if(h==="<!")r=t("`(?<!\u2026)`: \u76F4\u524D\u304C \u2026 \u3067\u306F\u306A\u3044\u4F4D\u7F6E\uFF08\u5426\u5B9A\u5F8C\u8AAD\u307F\uFF09","`(?<!\u2026)`: not preceded by \u2026 (negative lookbehind)");else if(l[2])a=++s.groups,r=t(`\u540D\u524D\u4ED8\u304D\u30B0\u30EB\u30FC\u30D7 \`${l[2]}\`\uFF08\u30B0\u30EB\u30FC\u30D7 ${a}\uFF09: \u4E00\u81F4\u3057\u305F\u90E8\u5206\u3092\u540D\u524D\u3067\u53C2\u7167\u3067\u304D\u308B`,`Named group \`${l[2]}\` (group ${a})`);else return{start:n,end:s.i,kind:"keyword",explanation:t(`\`(?${h}\`: \u4EE5\u964D\u306E\u30DE\u30C3\u30C1\u306E\u30AA\u30D7\u30B7\u30E7\u30F3\u3092\u5207\u308A\u66FF\u3048\u308B\uFF08i: \u5927\u5C0F\u6587\u5B57\u3092\u533A\u5225\u3057\u306A\u3044 \u306A\u3069\uFF09`,`\`(?${h}\`: set matching options from here (i: case-insensitive, \u2026)`),children:[]}}else a=++s.groups,r=t(`\u30B0\u30EB\u30FC\u30D7 ${a}: \u4E2D\u8EAB\u3092\u3072\u3068\u307E\u3068\u3081\u306B\u3059\u308B\uFF08\`\\${a}\` \u3067\u4E00\u81F4\u3057\u305F\u6587\u5B57\u5217\u3092\u53C2\u7167\u3067\u304D\u308B\uFF09`,`Group ${a}: treats its contents as one unit (\`\\${a}\` refers to what it matched)`);let c=Ks(s,1),u=Rn(s);return u?s.i+=u:r+=t("\uFF08\u9589\u3058\u62EC\u5F27\u304C\u306A\u3044\uFF09"," (missing closing parenthesis)"),{start:n,end:s.i,kind:"block",explanation:r,children:c,...a?{group:a}:{}}}function Xa(s){let{s:e,src:t}=s,n=s.i,r=n+1,a=!1;t[r]==="^"&&(a=!0,r++);let o=[],l=!0;for(;r<t.length&&(t[r]!=="]"||l);){l=!1;let u=/^\[:(\w+):\]/.exec(t.slice(r));if(u){let h=Ba[u[1]];o.push(h?e(h[0],h[1]):u[0]),r+=u[0].length;continue}if(s.sedEscapes&&t[r]==="\\"&&Xe[t[r+1]]){o.push(e(Xe[t[r+1]][0],Xe[t[r+1]][1])),r+=2;continue}if(s.flavor==="pcre"&&t[r]==="\\"&&r+1<t.length){let h=Zs[t[r+1]];o.push(h?e(h.ja,h.en):`\u300C${t[r+1]}\u300D`),r+=2;continue}if(t[r+1]==="-"&&t[r+2]&&t[r+2]!=="]"){o.push(e(`${t[r]}\u301C${t[r+2]}`,`${t[r]}-${t[r+2]}`)),r+=3;continue}o.push(e(`\u300C${t[r]}\u300D`,`"${t[r]}"`)),r++}if(r>=t.length)return s.i=n+1,{start:n,end:s.i,kind:"error",explanation:e("`[` \u306B\u5BFE\u5FDC\u3059\u308B `]` \u304C\u306A\u3044","Unclosed `[`"),children:[]};s.i=r+1;let c=o.join(e("\u3001",", "));return{start:n,end:s.i,kind:"pattern",children:[],explanation:a?e(`\u6587\u5B57\u30AF\u30E9\u30B9: ${c} \u4EE5\u5916\u306E1\u6587\u5B57`,`Character class: one character other than ${c}`):e(`\u6587\u5B57\u30AF\u30E9\u30B9: ${c} \u306E\u3069\u308C\u304B1\u6587\u5B57`,`Character class: one of ${c}`)}}function Qa(s){let{s:e,src:t}=s,n=s.i,r=t[n+1];if(s.i+=r===void 0?1:2,r===void 0)return{start:n,end:s.i,kind:"error",explanation:e("\u672B\u5C3E\u306E `\\` \u306E\u5F8C\u306B\u6587\u5B57\u304C\u306A\u3044","Trailing `\\`"),children:[]};if(/[1-9]/.test(r)){let o=Number(r)>s.groups;return{start:n,end:s.i,kind:"variable",children:[],group:Number(r),explanation:e(`\u5F8C\u65B9\u53C2\u7167 \`\\${r}\`: \u30B0\u30EB\u30FC\u30D7 ${r} \u306B\u4E00\u81F4\u3057\u305F\u306E\u3068\u540C\u3058\u6587\u5B57\u5217${o?"\uFF08\u3053\u3053\u307E\u3067\u306B\u30B0\u30EB\u30FC\u30D7 "+r+" \u304C\u306A\u3044\uFF09":""}`,`Backreference \`\\${r}\`: the same text group ${r} matched${o?` (no group ${r} before this point)`:""}`)}}if(s.sedEscapes&&Xe[r])return{start:n,end:s.i,kind:"pattern",explanation:`\`\\${r}\`: ${e(Xe[r][0],Xe[r][1])}`,children:[]};let a=Zs[r];if(a&&(s.flavor==="pcre"||a.gnu)){let o=/[bB<>AzZ]/.test(r)?"keyword":"pattern";return{start:n,end:s.i,kind:o,explanation:`\`\\${r}\`: ${e(a.ja,a.en)}`,children:[]}}return a&&!a.gnu?{start:n,end:s.i,kind:"string",children:[],explanation:e(`\`\\${r}\`: \u3053\u306E\u6B63\u898F\u8868\u73FE\uFF08POSIX\uFF09\u3067\u306F\u6587\u5B57\u300C${r}\u300D\u6271\u3044\u3002\u300C${a.ja}\u300D\u306E\u610F\u5473\u306B\u3059\u308B\u306B\u306F \`-P\` \u304C\u5FC5\u8981`,`\`\\${r}\`: just "${r}" in POSIX regex; it means ${a.en} only with \`-P\``)}:s.flavor!=="bre"&&"(){}|+?".includes(r)||/[.[\]*^$\\/]/.test(r)?{start:n,end:s.i,kind:"string",explanation:e(`\u6587\u5B57\u300C${r}\u300D\u305D\u306E\u3082\u306E\uFF08\`\\\` \u3067\u7279\u5225\u306A\u610F\u5473\u3092\u6253\u3061\u6D88\u3057\u3066\u3044\u308B\uFF09`,`A literal "${r}" (escaped)`),children:[]}:{start:n,end:s.i,kind:"string",explanation:e(`\u6587\u5B57\u300C${r}\u300D`,`Literal "${r}"`),children:[]}}function Qs(s,e){let t=O(e);switch(s){case"bre":return t("\u57FA\u672C\u6B63\u898F\u8868\u73FE (BRE)","basic regex (BRE)");case"ere":return t("\u62E1\u5F35\u6B63\u898F\u8868\u73FE (ERE)","extended regex (ERE)");case"pcre":return t("Perl \u4E92\u63DB\u6B63\u898F\u8868\u73FE (PCRE)","Perl-compatible regex (PCRE)");case"fixed":return t("\u56FA\u5B9A\u6587\u5B57\u5217\uFF08\u6B63\u898F\u8868\u73FE\u3068\u3057\u3066\u89E3\u91C8\u3057\u306A\u3044\uFF09","fixed string (not a regex)")}}var er={digit:"0-9",alpha:"A-Za-z",alnum:"A-Za-z0-9",upper:"A-Z",lower:"a-z",space:"\\s",blank:" \\t",xdigit:"0-9A-Fa-f",punct:"!-\\/:-@\\[-`{-~",word:"A-Za-z0-9_",cntrl:"\\x00-\\x1f",print:" -~",graph:"!-~"},Dt={t:"\\t",n:"\\n",r:"\\r",f:"\\f",v:"\\v"};function eo(s,e,t){let n=e+1,r="[";s[n]==="^"&&(r+="^",n++);let a=!0;for(;n<s.length&&(s[n]!=="]"||a);){a=!1;let o=/^\[:(\w+):\]/.exec(s.slice(n));if(o){if(!er[o[1]])return;r+=er[o[1]],n+=o[0].length;continue}if(/^\[[.=]/.test(s.slice(n)))return;let l=s[n];if(t&&l==="\\"&&Dt[s[n+1]]){r+=Dt[s[n+1]],n+=2;continue}r+=l==="\\"||l==="]"||l==="["?`\\${l}`:l,n++}if(!(n>=s.length))return[r+"]",n+1]}function ie(s,e,t={}){let n=t.ignoreCase?"i":"",r="",a=0,o=()=>r===""||r.endsWith("(")||r.endsWith("|")||r==="^";if(e==="pcre"){let l=/^\(\?([imsx]+)\)/.exec(s);if(l&&(l[1].includes("i")&&(n+="i"),l[1].includes("s")&&(n+="s"),a=l[0].length),/\(\?>|[*+?}][+]|\\Q|\(\?[imsx-]+\)|\\[pPXRK]/.test(s.slice(a)))return}for(;a<s.length;){let l=s[a],c=s[a+1];if(e==="pcre"){if(l==="\\"&&c==="A"){r+="^",a+=2;continue}if(l==="\\"&&(c==="z"||c==="Z")){r+="$",a+=2;continue}if(l==="\\"&&c==="h"){r+="[ \\t]",a+=2;continue}if(s.startsWith("(?P<",a)){r+="(?<",a+=4;continue}if(l==="\\"&&c!==void 0){r+=l+c,a+=2;continue}r+=l,a++;continue}if(l==="["){let u=eo(s,a,!!t.sedEscapes);if(!u)return;r+=u[0],a=u[1];continue}if(l==="\\"){if(c===void 0)return;if(a+=2,/[1-9]/.test(c)){r+="\\"+c;continue}if(c==="<"||c===">"){r+="\\b";continue}if("wWsSbB".includes(c)){r+="\\"+c;continue}if(t.sedEscapes&&Dt[c]){r+=Dt[c];continue}if(e==="bre"&&"(){}|+?".includes(c)){r+=c;continue}if(c==="`"||c==="'")return;r+=/[\\^$.*+?()[\]{}|/-]/.test(c)?"\\"+c:c;continue}if(e==="bre"){if("+?(){}|".includes(l)){r+="\\"+l,a++;continue}if(l==="*"&&o()){r+="\\*",a++;continue}if(l==="^"&&r!==""&&!r.endsWith("(")&&!r.endsWith("|")){r+="\\^",a++;continue}if(l==="$"&&a<s.length-1&&!s.startsWith("\\)",a+1)&&!s.startsWith("\\|",a+1)){r+="\\$",a++;continue}}else if(l==="{"&&!/^\{\d*,?\d*\}/.test(s.slice(a))){r+="\\{",a++;continue}r+=l==="/"?"\\/":l,a++}try{new RegExp(r,n)}catch{return}return{source:r,flags:n}}var tr="1234567890",qt="abcdefghijklmnopqrstuvwxyz",to="ABCDEFGHIJKLMNOPQRSTUVWXYZ";function no(s){switch(s){case"d":return e=>tr[e%9];case"w":return e=>qt[e%26];case"s":return()=>" ";case"D":return e=>qt[e%26];case"W":return()=>"-";case"S":return e=>qt[e%26];default:return()=>{}}}function so(s,e){let t=new RegExp(`[${e?"^":""}${s}]`),r=(e?"xyzabc_-.1 ":`${to}${qt}${tr}-_. :/@,;!#%&=+*?$^()[]{}|<>'"\\~\` `).split("").filter(l=>t.test(l)),a=s.match(/(.)-(.)/g)?.flatMap(l=>{let c=l.charCodeAt(0),u=l.charCodeAt(2);return Array.from({length:Math.min(u-c+1,26)},(h,d)=>String.fromCharCode(c+d))})??[],o=[...new Set([...a.filter(l=>t.test(l)),...r])];return l=>o.length?o[l%o.length]:void 0}var An=class{constructor(e){this.s=e}s;i=0;groups=0;alt(){let e=[this.seq()];for(;this.s[this.i]==="|";)this.i++,e.push(this.seq());return e.length===1?e[0]:{t:"alt",options:e}}seq(){let e=[];for(;this.i<this.s.length&&this.s[this.i]!=="|"&&this.s[this.i]!==")";){let t=this.atom();for(;;){let n=/^(\*|\+|\?|\{(\d*)(,?)(\d*)\})\??/.exec(this.s.slice(this.i));if(!n)break;this.i+=n[0].length;let r=0,a=1/0;n[1]==="+"?r=1:n[1]==="?"?a=1:n[1].startsWith("{")&&(r=n[2]?Number(n[2]):0,a=n[3]?n[4]?Number(n[4]):1/0:r),t={t:"repeat",node:t,min:r,max:a}}e.push(t)}return{t:"seq",items:e}}atom(){let e=this.s[this.i++];if(e==="("){let t=!0,n,r=/^\?(:|=|!|<=|<!|<[A-Za-z_]\w*>)/.exec(this.s.slice(this.i));r&&(this.i+=r[0].length,r[1]===":"?t=!1:(!r[1].startsWith("<")||r[1].startsWith("<=")||r[1].startsWith("<!"))&&(t=!1,n=r[1]));let a=t?++this.groups:0,o=this.alt();return this.i++,{t:"group",node:o,no:a,look:n}}if(e==="["){let t=this.i,n=this.s[t]==="^";n&&t++;let r="";for(this.s[t]==="]"&&(r+="\\]",t++);t<this.s.length&&this.s[t]!=="]";){if(this.s[t]==="\\"){r+=this.s.slice(t,t+2),t+=2;continue}r+=this.s[t++]}return this.i=t+1,{t:"set",pick:so(r,n)}}if(e===".")return{t:"set",pick:t=>"xyzabc"[t%6]};if(e==="^"||e==="$")return{t:"empty"};if(e==="\\"){let t=this.s[this.i++];return/[1-9]/.test(t)?{t:"backref",n:Number(t)}:t==="b"||t==="B"?{t:"empty"}:"dwsDWS".includes(t)?{t:"set",pick:no(t)}:{t:"char",c:{t:" ",n:`
7
+ `,r:"\r",f:"\f",v:"\v"}[t]??t}}return{t:"char",c:e}}};function pt(s,e,t){switch(s.t){case"empty":return"";case"char":return s.c;case"set":return s.pick(e);case"backref":return t[s.n]??"";case"alt":return pt(s.options[e%s.options.length],Math.floor(e/s.options.length),t);case"seq":{let n="";for(let r=0;r<s.items.length;r++){let a=pt(s.items[r],e,t);if(a===void 0)return;n+=a}return n}case"group":{if(s.look==="!"||s.look==="<!")return"";let n=pt(s.node,e,t);return n===void 0?void 0:(s.no&&(t[s.no]=n),n)}case"repeat":{let{min:n,max:r}=s,a=[Math.max(n,1),n,Math.min(r,n+2)].map(c=>Math.min(c,r,n+3)),o=a[e%a.length],l="";for(let c=0;c<o;c++){let u=pt(s.node,e+c,t);if(u===void 0)return;l+=u}return l}}}function be(s,e=3){let t=new RegExp(s.source,s.flags),n;try{let u=new An(s.source);if(n=u.alt(),u.i<s.source.length)return}catch{return}let r=[];for(let u=0;u<12&&r.length<e;u++){let h=pt(n,u,[]);h===void 0||h===""||/[\n\r]/.test(h)||r.includes(h)||t.test(h)&&r.push(h)}if(!r.length)return;let a=r[0],o=`${s.source.startsWith("^")?"":"abc "}${a}${s.source.endsWith("$")&&!s.source.endsWith("\\$")?"":" xyz"}`;o!==a&&t.test(o)&&(r.length>=e&&r.pop(),r.push(o));let l=[a.slice(0,-1),a.slice(1),a.replace(/\d/,"x"),a.replace(/[A-Za-z]/,"1"),s.flags.includes("i")?"":ro(a),a.replace(/[^A-Za-z0-9]/,""),a+a.slice(-1),"x"+a],c=[...new Set(l)].filter(u=>u!==""&&!t.test(u)).slice(0,2);return{matching:r,nonMatching:c}}function Ut(s,e){return{source:s.replace(/[\\^$.*+?()[\]{}|/]/g,"\\$&"),flags:e?"i":""}}function zt(s,e,t){return e?{...s,source:`^(?:${s.source})$`}:t?{...s,source:`(?<![A-Za-z0-9_])(?:${s.source})(?![A-Za-z0-9_])`}:s}function ro(s){return s.replace(/[a-zA-Z]/g,e=>e===e.toLowerCase()?e.toUpperCase():e.toLowerCase())}var io={n:["\u6539\u884C","newline"],t:["\u30BF\u30D6","tab"],r:["\u5FA9\u5E30\u6587\u5B57(CR)","carriage return"],"\\":["\u30D0\u30C3\u30AF\u30B9\u30E9\u30C3\u30B7\u30E5","backslash"],a:["\u30D9\u30EB","bell"],b:["\u30D0\u30C3\u30AF\u30B9\u30DA\u30FC\u30B9","backspace"],e:["\u30A8\u30B9\u30B1\u30FC\u30D7\u6587\u5B57\uFF08\u8272\u4ED8\u3051\u306A\u3069\u306E\u5236\u5FA1\u306B\u4F7F\u3046\uFF09","escape character (used for colours)"],f:["\u6539\u30DA\u30FC\u30B8","form feed"],v:["\u5782\u76F4\u30BF\u30D6","vertical tab"],'"':['\u300C"\u300D','"'],"'":["\u300C'\u300D","'"]};function ft(s,e,t,n,r){n>t&&s.push({start:t,end:n,kind:"string",explanation:r(`\u305D\u306E\u307E\u307E\u51FA\u529B\u3059\u308B\u6587\u5B57\u5217\u300C${e.slice(t,n)}\u300D`,`Literal text "${e.slice(t,n)}"`),children:[]})}function ao(s,e,t){let n=s[e+1];if(n===void 0)return;let r;if(r=/^\\(0[0-7]{0,3}|[0-7]{1,3})/.exec(s.slice(e)))return[{start:e,end:e+r[0].length,kind:"operator",explanation:t(`\`${r[0]}\`: 8\u9032\u6570 ${r[1]} \u306E\u6587\u5B57`,`\`${r[0]}\`: the character with octal code ${r[1]}`),children:[]},r[0].length];if(r=/^\\x[0-9a-fA-F]{1,2}/.exec(s.slice(e)))return[{start:e,end:e+r[0].length,kind:"operator",explanation:t(`\`${r[0]}\`: 16\u9032\u6570 ${r[0].slice(2)} \u306E\u6587\u5B57`,`\`${r[0]}\`: the character with hex code ${r[0].slice(2)}`),children:[]},r[0].length];if(r=/^\\(u[0-9a-fA-F]{1,4}|U[0-9a-fA-F]{1,8})/.exec(s.slice(e)))return[{start:e,end:e+r[0].length,kind:"operator",explanation:t(`\`${r[0]}\`: Unicode \u6587\u5B57 U+${r[1].slice(1).toUpperCase()}`,`\`${r[0]}\`: Unicode character U+${r[1].slice(1).toUpperCase()}`),children:[]},r[0].length];let a=io[n];if(a)return[{start:e,end:e+2,kind:"operator",explanation:`\`\\${n}\`: ${t(a[0],a[1])}`,children:[]},2]}var oo={s:["\u6587\u5B57\u5217","a string"],b:["\u6587\u5B57\u5217\uFF08\u4E2D\u306E `\\n` \u306A\u3069\u306E\u30A8\u30B9\u30B1\u30FC\u30D7\u3092\u89E3\u91C8\u3059\u308B\uFF09","a string with backslash escapes interpreted"],q:["\u30B7\u30A7\u30EB\u306B\u518D\u5165\u529B\u3067\u304D\u308B\u3088\u3046\u30AF\u30A9\u30FC\u30C8\u3057\u305F\u6587\u5B57\u5217","a string quoted for reuse as shell input"],d:["\u6574\u6570\uFF0810\u9032\u6570\uFF09","an integer (decimal)"],i:["\u6574\u6570\uFF0810\u9032\u6570\uFF09","an integer (decimal)"],u:["\u7B26\u53F7\u306A\u3057\u6574\u6570","an unsigned integer"],o:["8\u9032\u6570","an octal number"],x:["16\u9032\u6570\uFF08\u5C0F\u6587\u5B57\uFF09","a hexadecimal number (lowercase)"],X:["16\u9032\u6570\uFF08\u5927\u6587\u5B57\uFF09","a hexadecimal number (uppercase)"],f:["\u5C0F\u6570\uFF08\u56FA\u5B9A\u5C0F\u6570\u70B9\uFF09","a decimal number (fixed point)"],F:["\u5C0F\u6570\uFF08\u56FA\u5B9A\u5C0F\u6570\u70B9\uFF09","a decimal number (fixed point)"],e:["\u6307\u6570\u8868\u8A18\u306E\u6570\uFF081.5e+03 \u306A\u3069\uFF09","a number in exponent notation (1.5e+03)"],E:["\u6307\u6570\u8868\u8A18\u306E\u6570\uFF08\u5927\u6587\u5B57\u306E E\uFF09","a number in exponent notation (capital E)"],g:["\u5C0F\u6570\u304B\u6307\u6570\u8868\u8A18\u306E\u77ED\u3044\u65B9","the shorter of decimal or exponent notation"],G:["\u5C0F\u6570\u304B\u6307\u6570\u8868\u8A18\u306E\u77ED\u3044\u65B9\uFF08\u5927\u6587\u5B57\uFF09","the shorter of decimal or exponent notation (capital)"],c:["1\u6587\u5B57","a single character"],a:["16\u9032\u306E\u6D6E\u52D5\u5C0F\u6570\u70B9\u6570","a hexadecimal floating-point number"],A:["16\u9032\u306E\u6D6E\u52D5\u5C0F\u6570\u70B9\u6570\uFF08\u5927\u6587\u5B57\uFF09","a hexadecimal floating-point number (capital)"]};function mt(s,e){let t=O(e),n=[],r=0,a=0,o=0;for(;a<s.length;){if(s[a]==="\\"){let c=ao(s,a,t);if(c){ft(n,s,r,a,t),n.push(c[0]),a+=c[1],r=a;continue}}if(s[a]!=="%"){a++;continue}if(ft(n,s,r,a,t),s[a+1]==="%"){n.push({start:a,end:a+2,kind:"operator",explanation:t("`%%`: \u6587\u5B57\u300C%\u300D\u305D\u306E\u3082\u306E",'`%%`: a literal "%"'),children:[]}),a+=2,r=a;continue}let l=/^%([-+ #0']*)(\*|\d+)?(?:\.(\*|\d*))?(\([^)]*\)T|[a-zA-Z])/.exec(s.slice(a));if(!l){n.push({start:a,end:a+1,kind:"error",explanation:t("`%` \u306E\u5F8C\u306E\u66F8\u5F0F\u6307\u5B9A\u304C\u4E0D\u6B63","Invalid conversion after `%`"),children:[]}),a++,r=a;continue}n.push(lo(l,a,++o,t)),a+=l[0].length,r=a}return ft(n,s,r,s.length,t),n}function lo(s,e,t,n){let[r,a,o,l,c]=s,u=[];if(c.startsWith("(")){let f=c.slice(1,-2);return{start:e,end:e+r.length,kind:"variable",explanation:n(`\`${r}\`: ${t} \u756A\u76EE\u306E\u5F15\u6570\uFF08UNIX \u6642\u523B\uFF09\u3092\u65E5\u6642\u66F8\u5F0F \`${f}\` \u3067\u8868\u793A\u3059\u308B\uFF08-1 \u306F\u73FE\u5728\u6642\u523B\uFF09`,`\`${r}\`: argument ${t} (a UNIX time) formatted with \`${f}\` (-1 means now)`),children:[]}}let h=oo[c];if(!h)return{start:e,end:e+r.length,kind:"error",explanation:n(`\`${r}\`: \u4E0D\u660E\u306A\u5909\u63DB\u6587\u5B57 \`${c}\``,`\`${r}\`: unknown conversion \`${c}\``),children:[]};let d=/[diouxXfFeEgGaA]/.test(c);if(o==="*"?u.push(n("\u5E45\u306F\u5F15\u6570\u3067\u6307\u5B9A","width taken from an argument")):o?u.push(a.includes("-")?n(`\u5E45 ${o} \u3067\u5DE6\u5BC4\u305B`,`left-aligned in ${o} columns`):n(`\u5E45 ${o} \u3067\u53F3\u5BC4\u305B`,`right-aligned in ${o} columns`)):a.includes("-")&&u.push(n("\u5DE6\u5BC4\u305B","left-aligned")),a.includes("0")&&o&&d&&u.push(n("\u7A7A\u304D\u306F 0 \u3067\u57CB\u3081\u308B","padded with zeros")),a.includes("+")&&u.push(n("\u6B63\u306E\u6570\u306B\u3082 + \u3092\u4ED8\u3051\u308B","always show the sign")),a.includes(" ")&&u.push(n("\u6B63\u306E\u6570\u306E\u524D\u306B\u7A7A\u767D\u3092\u7F6E\u304F","a space before positive numbers")),a.includes("#")&&u.push(n("0x \u306A\u3069\u306E\u63A5\u982D\u8F9E\u3092\u4ED8\u3051\u308B","with a 0x/0 prefix")),a.includes("'")&&u.push(n("3\u6841\u3054\u3068\u306B\u533A\u5207\u308B","with thousands separators")),l!==void 0){let f=l===""?"0":l;/[fFeEaA]/.test(c)?u.push(n(`\u5C0F\u6570\u70B9\u4EE5\u4E0B ${f} \u6841`,`${f} digits after the decimal point`)):/[gG]/.test(c)?u.push(n(`\u6709\u52B9\u6570\u5B57 ${f} \u6841`,`${f} significant digits`)):/[sbq]/.test(c)?u.push(n(`\u6700\u5927 ${f} \u6587\u5B57\u307E\u3067`,`at most ${f} characters`)):u.push(n(`\u6700\u4F4E ${f} \u6841\uFF08\u8DB3\u308A\u306A\u3051\u308C\u3070 0 \u3067\u57CB\u3081\u308B\uFF09`,`at least ${f} digits`))}let p=u.length?n(`\uFF08${u.join("\u3001")}\uFF09`,` (${u.join(", ")})`):"";return{start:e,end:e+r.length,kind:"variable",children:[],explanation:n(`\`${r}\`: ${t} \u756A\u76EE\u306E\u5024\u3092${h[0]}\u3068\u3057\u3066\u51FA\u529B${p}`,`\`${r}\`: value ${t} as ${h[1]}${p}`)}}function nr(s,e){let t=O(e),n=mt(s,e).filter(r=>r.kind==="variable").length;if(n)return t(`\u5024\u306E\u6307\u5B9A ${n} \u500B\u3002\u5F15\u6570\u304C\u3053\u308C\u3088\u308A\u591A\u3044\u3068\u3001\u66F8\u5F0F\u3092\u7E70\u308A\u8FD4\u3057\u4F7F\u3063\u3066\u6B8B\u308A\u3082\u51FA\u529B\u3059\u308B`,`${n} value${n>1?"s":""} per use; extra arguments reuse the format`)}var Cn={Y:["\u897F\u66A6\uFF084\u6841\u3001\u4F8B: 2026\uFF09","year (e.g. 2026)"],y:["\u897F\u66A6\u306E\u4E0B2\u6841\uFF08\u4F8B: 26\uFF09","last two digits of the year"],C:["\u4E16\u7D00\uFF08\u4F8B: 20\uFF09","century"],G:["ISO \u9031\u756A\u53F7\u306E\u5E74","ISO week-based year"],m:["\u6708\uFF0801\u301C12\uFF09","month (01\u201312)"],d:["\u65E5\uFF0801\u301C31\uFF09","day of month (01\u201331)"],e:["\u65E5\uFF08\u7A7A\u767D\u57CB\u3081\u3001 1\u301C31\uFF09","day of month, space-padded"],H:["\u6642\uFF0800\u301C23\uFF09","hour (00\u201323)"],I:["\u6642\uFF0801\u301C12\uFF09","hour (01\u201312)"],k:["\u6642\uFF08\u7A7A\u767D\u57CB\u3081\u30010\u301C23\uFF09","hour, space-padded (0\u201323)"],l:["\u6642\uFF08\u7A7A\u767D\u57CB\u3081\u30011\u301C12\uFF09","hour, space-padded (1\u201312)"],M:["\u5206\uFF0800\u301C59\uFF09","minute (00\u201359)"],S:["\u79D2\uFF0800\u301C60\uFF09","second (00\u201360)"],N:["\u30CA\u30CE\u79D2\uFF08000000000\u301C999999999\uFF09","nanoseconds"],p:["AM / PM","AM or PM"],P:["am / pm","am or pm"],a:["\u66DC\u65E5\u306E\u7565\u79F0\uFF08\u4F8B: Mon\uFF09","abbreviated weekday (Mon)"],A:["\u66DC\u65E5\uFF08\u4F8B: Monday\uFF09","full weekday (Monday)"],b:["\u6708\u306E\u7565\u79F0\uFF08\u4F8B: Jan\uFF09","abbreviated month (Jan)"],h:["\u6708\u306E\u7565\u79F0\uFF08%b \u3068\u540C\u3058\uFF09","abbreviated month (same as %b)"],B:["\u6708\u306E\u540D\u524D\uFF08\u4F8B: January\uFF09","full month name (January)"],j:["\u5E74\u5185\u306E\u901A\u3057\u65E5\uFF08001\u301C366\uFF09","day of year (001\u2013366)"],u:["\u66DC\u65E5\u306E\u756A\u53F7\uFF081=\u6708\u66DC\u301C7=\u65E5\u66DC\uFF09","day of week (1=Monday \u2026 7)"],w:["\u66DC\u65E5\u306E\u756A\u53F7\uFF080=\u65E5\u66DC\u301C6=\u571F\u66DC\uFF09","day of week (0=Sunday \u2026 6)"],U:["\u5E74\u5185\u306E\u9031\u756A\u53F7\uFF08\u65E5\u66DC\u59CB\u307E\u308A\uFF09","week of year (Sunday first)"],W:["\u5E74\u5185\u306E\u9031\u756A\u53F7\uFF08\u6708\u66DC\u59CB\u307E\u308A\uFF09","week of year (Monday first)"],V:["ISO \u9031\u756A\u53F7\uFF0801\u301C53\uFF09","ISO week number"],s:["UNIX \u6642\u523B\uFF081970-01-01 \u304B\u3089\u306E\u79D2\u6570\uFF09","seconds since 1970-01-01 (UNIX time)"],Z:["\u30BF\u30A4\u30E0\u30BE\u30FC\u30F3\u540D\uFF08\u4F8B: JST\uFF09","time zone abbreviation (JST)"],z:["UTC \u304B\u3089\u306E\u6642\u5DEE\uFF08\u4F8B: +0900\uFF09","UTC offset (+0900)"],F:["\u65E5\u4ED8\uFF08%Y-%m-%d \u3068\u540C\u3058\u3002\u4F8B: 2026-10-16\uFF09","date as %Y-%m-%d (2026-10-16)"],T:["\u6642\u523B\uFF08%H:%M:%S \u3068\u540C\u3058\uFF09","time as %H:%M:%S"],D:["\u65E5\u4ED8\uFF08%m/%d/%y \u3068\u540C\u3058\uFF09","date as %m/%d/%y"],R:["\u6642\u523B\uFF08%H:%M \u3068\u540C\u3058\uFF09","time as %H:%M"],r:["12\u6642\u9593\u5236\u306E\u6642\u523B\uFF08\u4F8B: 01:30:00 PM\uFF09","12-hour time (01:30:00 PM)"],c:["\u30ED\u30B1\u30FC\u30EB\u306B\u5FDC\u3058\u305F\u65E5\u6642","locale date and time"],x:["\u30ED\u30B1\u30FC\u30EB\u306B\u5FDC\u3058\u305F\u65E5\u4ED8","locale date"],X:["\u30ED\u30B1\u30FC\u30EB\u306B\u5FDC\u3058\u305F\u6642\u523B","locale time"],n:["\u6539\u884C","a newline"],t:["\u30BF\u30D6","a tab"],"%":["\u6587\u5B57\u300C%\u300D\u305D\u306E\u3082\u306E",'a literal "%"']};function Wt(s,e){let t=O(e),n=[],r=0;s[0]==="+"&&(n.push({start:0,end:1,kind:"operator",explanation:t("`+`: \u3053\u3053\u304B\u3089\u5F8C\u308D\u304C\u8868\u793A\u66F8\u5F0F","`+`: introduces the output format"),children:[]}),r=1);let a=r;for(;r<s.length;){if(s[r]!=="%"){r++;continue}let o=/^%([-_0^#]?)(\d*)(:{0,3}z|[a-zA-Z%])/.exec(s.slice(r));if(!o){r++;continue}ft(n,s,a,r,t);let[l,c,u,h]=o,d=h.endsWith("z")&&h.length>1?[t(`UTC \u304B\u3089\u306E\u6642\u5DEE\uFF08\u4F8B: +09${":00".repeat(h.length-1)}\uFF09`,`UTC offset with colons (+09${":00".repeat(h.length-1)})`)]:Cn[h]?[t(Cn[h][0],Cn[h][1])]:void 0,p=[];c==="-"&&p.push(t("\u30BC\u30ED\u57CB\u3081\u3057\u306A\u3044","no padding")),c==="_"&&p.push(t("\u7A7A\u767D\u3067\u57CB\u3081\u308B","space-padded")),c==="0"&&p.push(t("0 \u3067\u57CB\u3081\u308B","zero-padded")),c==="^"&&p.push(t("\u5927\u6587\u5B57\u306B\u3059\u308B","uppercase")),c==="#"&&p.push(t("\u5927\u6587\u5B57\u30FB\u5C0F\u6587\u5B57\u3092\u53CD\u8EE2\u3059\u308B","opposite case")),u&&p.push(t(`\u5E45 ${u}`,`width ${u}`)),n.push({start:r,end:r+l.length,kind:d?"variable":"error",children:[],explanation:d?`\`${l}\`: ${d[0]}${p.length?t(`\uFF08${p.join("\u3001")}\uFF09`,` (${p.join(", ")})`):""}`:t(`\`${l}\`: \u4E0D\u660E\u306A\u66F8\u5F0F\u6307\u5B9A`,`\`${l}\`: unknown conversion`)}),r+=l.length,a=r}return ft(n,s,a,s.length,t),n}function sr(s,e=new Date){let t=s.startsWith("+")?s.slice(1):s;if(/%[-_0^#]?\d*(:{0,3}z|[cxXZUVWGCNsrIlkpPh])/.test(t))return;let n=(l,c=2)=>String(l).padStart(c,"0"),r=["Sunday","Monday","Tuesday","Wednesday","Thursday","Friday","Saturday"],a=["January","February","March","April","May","June","July","August","September","October","November","December"],o={Y:String(e.getFullYear()),y:n(e.getFullYear()%100),m:n(e.getMonth()+1),d:n(e.getDate()),e:String(e.getDate()).padStart(2," "),H:n(e.getHours()),M:n(e.getMinutes()),S:n(e.getSeconds()),a:r[e.getDay()].slice(0,3),A:r[e.getDay()],b:a[e.getMonth()].slice(0,3),B:a[e.getMonth()],j:n(Math.floor((e.getTime()-new Date(e.getFullYear(),0,0).getTime())/864e5),3),u:String(e.getDay()||7),w:String(e.getDay()),n:`
8
+ `,t:" ","%":"%"};return o.F=`${o.Y}-${o.m}-${o.d}`,o.T=`${o.H}:${o.M}:${o.S}`,o.D=`${o.m}/${o.d}/${o.y}`,o.R=`${o.H}:${o.M}`,t.replace(/%([-_0^#]?)(\d*)([a-zA-Z%])/g,(l,c,u,h)=>{let d=o[h]??"";return c==="-"&&(d=d.replace(/^[0 ]+(?=.)/,"")),c==="^"&&(d=d.toUpperCase()),d})}var co=new Set(["BEGIN","END","BEGINFILE","ENDFILE","function","func","if","else","while","for","do","break","continue","next","nextfile","exit","return","delete","getline","print","printf","in"]),uo=["&&","||","++","--","+=","-=","*=","/=","%=","^=","==","!=","<=",">=","!~",">>","|&","~","|","?",":","!","<",">","=","+","-","*","/","%","^","$","{","}","(",")","[","]",",",";"],In={NR:["\u3053\u308C\u307E\u3067\u306B\u8AAD\u3093\u3060\u884C\u6570\uFF08\u73FE\u5728\u306E\u884C\u756A\u53F7\uFF09","number of records read so far (the current line number)"],FNR:["\u73FE\u5728\u306E\u30D5\u30A1\u30A4\u30EB\u5185\u3067\u306E\u884C\u756A\u53F7","line number within the current file"],NF:["\u73FE\u5728\u306E\u884C\u306E\u30D5\u30A3\u30FC\u30EB\u30C9\uFF08\u5217\uFF09\u306E\u6570","number of fields on the current line"],FS:["\u5165\u529B\u306E\u30D5\u30A3\u30FC\u30EB\u30C9\u533A\u5207\u308A\uFF08\u65E2\u5B9A\u306F\u7A7A\u767D\u3002`-F` \u3067\u6307\u5B9A\uFF09","input field separator (whitespace by default; set with `-F`)"],OFS:["\u51FA\u529B\u306E\u30D5\u30A3\u30FC\u30EB\u30C9\u533A\u5207\u308A\uFF08`print a, b` \u306E `,` \u306E\u6240\u306B\u5165\u308B\u3002\u65E2\u5B9A\u306F\u7A7A\u767D\uFF09","output field separator (placed between `print a, b`; a space by default)"],RS:["\u5165\u529B\u306E\u30EC\u30B3\u30FC\u30C9\uFF08\u884C\uFF09\u533A\u5207\u308A","input record separator"],ORS:["\u51FA\u529B\u306E\u30EC\u30B3\u30FC\u30C9\u533A\u5207\u308A\uFF08\u65E2\u5B9A\u306F\u6539\u884C\uFF09","output record separator (a newline by default)"],FILENAME:["\u73FE\u5728\u306E\u5165\u529B\u30D5\u30A1\u30A4\u30EB\u540D","the current input file name"],SUBSEP:["\u591A\u6B21\u5143\u914D\u5217\u306E\u30AD\u30FC\u306E\u533A\u5207\u308A","separator for multi-dimensional array keys"],ENVIRON:['\u74B0\u5883\u5909\u6570\u306E\u914D\u5217\uFF08`ENVIRON["HOME"]` \u306A\u3069\uFF09','array of environment variables (`ENVIRON["HOME"]`)'],ARGV:["\u30B3\u30DE\u30F3\u30C9\u30E9\u30A4\u30F3\u5F15\u6570\u306E\u914D\u5217","array of command-line arguments"],ARGC:["\u30B3\u30DE\u30F3\u30C9\u30E9\u30A4\u30F3\u5F15\u6570\u306E\u6570","number of command-line arguments"],RSTART:["`match()` \u3067\u4E00\u81F4\u3057\u305F\u4F4D\u7F6E","start of the last `match()`"],RLENGTH:["`match()` \u3067\u4E00\u81F4\u3057\u305F\u9577\u3055","length of the last `match()`"],CONVFMT:["\u6570\u5024\u3092\u6587\u5B57\u5217\u306B\u3059\u308B\u3068\u304D\u306E\u66F8\u5F0F","number-to-string conversion format"],OFMT:["\u6570\u5024\u3092\u51FA\u529B\u3059\u308B\u3068\u304D\u306E\u66F8\u5F0F","output format for numbers"]},Vt={length:["\u6587\u5B57\u5217\u306E\u9577\u3055\uFF08\u5F15\u6570\u306A\u3057\u306A\u3089\u73FE\u5728\u306E\u884C\u306E\u9577\u3055\uFF09","length of a string (of the line, without an argument)"],substr:["\u90E8\u5206\u6587\u5B57\u5217\u3092\u53D6\u308A\u51FA\u3059\uFF08`substr(s, \u958B\u59CB, \u9577\u3055)`\u3001\u4F4D\u7F6E\u306F1\u59CB\u307E\u308A\uFF09","take a substring (`substr(s, start, len)`, 1-based)"],index:["\u6587\u5B57\u5217\u304C\u6700\u521D\u306B\u73FE\u308C\u308B\u4F4D\u7F6E\uFF081\u59CB\u307E\u308A\u3002\u306A\u3051\u308C\u3070 0\uFF09","position of a substring (1-based; 0 if absent)"],split:["\u6587\u5B57\u5217\u3092\u533A\u5207\u308A\u3067\u5206\u5272\u3057\u3066\u914D\u5217\u306B\u5165\u308C\u3001\u8981\u7D20\u6570\u3092\u8FD4\u3059","split a string into an array and return the count"],sub:["\u6B63\u898F\u8868\u73FE\u306B\u6700\u521D\u306B\u4E00\u81F4\u3057\u305F\u90E8\u5206\u3092\u7F6E\u63DB\u3059\u308B\uFF08\u5BFE\u8C61\u3092\u7701\u7565\u3059\u308B\u3068 `$0`\uFF09","replace the first regex match (in `$0` by default)"],gsub:["\u6B63\u898F\u8868\u73FE\u306B\u4E00\u81F4\u3059\u308B\u90E8\u5206\u3092\u3059\u3079\u3066\u7F6E\u63DB\u3059\u308B\uFF08\u5BFE\u8C61\u3092\u7701\u7565\u3059\u308B\u3068 `$0`\uFF09","replace every regex match (in `$0` by default)"],gensub:["\u6B63\u898F\u8868\u73FE\u3067\u7F6E\u63DB\u3057\u305F\u7D50\u679C\u3092\u8FD4\u3059\uFF08GNU awk\uFF09","return the result of a regex replacement (GNU awk)"],match:["\u6B63\u898F\u8868\u73FE\u306B\u4E00\u81F4\u3059\u308B\u4F4D\u7F6E\u3092\u8FD4\u3057\u3001RSTART \u3068 RLENGTH \u3092\u8A2D\u5B9A\u3059\u308B","find a regex match, setting RSTART and RLENGTH"],sprintf:["\u66F8\u5F0F\u3092\u6307\u5B9A\u3057\u3066\u6587\u5B57\u5217\u3092\u4F5C\u308B","format a string"],tolower:["\u5C0F\u6587\u5B57\u306B\u3059\u308B","lowercase"],toupper:["\u5927\u6587\u5B57\u306B\u3059\u308B","uppercase"],system:["\u30B7\u30A7\u30EB\u30B3\u30DE\u30F3\u30C9\u3092\u5B9F\u884C\u3057\u3066\u7D42\u4E86\u30B9\u30C6\u30FC\u30BF\u30B9\u3092\u8FD4\u3059","run a shell command and return its exit status"],close:["\u30D5\u30A1\u30A4\u30EB\u3084\u30D1\u30A4\u30D7\u3092\u9589\u3058\u308B","close a file or pipe"],fflush:["\u51FA\u529B\u3092\u3059\u3050\u306B\u66F8\u304D\u51FA\u3059","flush output"],int:["\u6574\u6570\u90E8\u5206\uFF08\u5C0F\u6570\u70B9\u4EE5\u4E0B\u3092\u5207\u308A\u6368\u3066\uFF09","integer part (truncated)"],sqrt:["\u5E73\u65B9\u6839","square root"],exp:["\u6307\u6570\u95A2\u6570","exponential"],log:["\u81EA\u7136\u5BFE\u6570","natural logarithm"],sin:["\u6B63\u5F26","sine"],cos:["\u4F59\u5F26","cosine"],atan2:["\u9006\u6B63\u63A5","arctangent"],rand:["0 \u4EE5\u4E0A 1 \u672A\u6E80\u306E\u4E71\u6570","a random number in [0, 1)"],srand:["\u4E71\u6570\u306E\u7A2E\u3092\u8A2D\u5B9A\u3059\u308B","seed the random number generator"],strftime:["\u65E5\u6642\u3092\u66F8\u5F0F\u306B\u5F93\u3063\u3066\u6587\u5B57\u5217\u306B\u3059\u308B\uFF08GNU awk\uFF09","format a time (GNU awk)"],systime:["\u73FE\u5728\u306E UNIX \u6642\u523B\uFF08GNU awk\uFF09","current UNIX time (GNU awk)"],asort:["\u914D\u5217\u306E\u5024\u3092\u4E26\u3079\u66FF\u3048\u308B\uFF08GNU awk\uFF09","sort array values (GNU awk)"],asorti:["\u914D\u5217\u306E\u30AD\u30FC\u3092\u4E26\u3079\u66FF\u3048\u308B\uFF08GNU awk\uFF09","sort array indices (GNU awk)"]};function On(s){let e=[],t=0,n=()=>{let r=e[e.length-1];return!r||r.type==="nl"?!0:r.type==="op"?!")]".includes(r.text)&&r.text!=="$"&&r.text!=="++"&&r.text!=="--":r.type==="kw"?r.text!=="getline":!1};for(;t<s.length;){let r=s[t],a=t;if(r===`
9
9
  `){e.push({type:"nl",text:`
10
10
  `,start:a,end:++t});continue}if(r==="\\"&&s[t+1]===`
11
11
  `){t+=2;continue}if(/\s/.test(r)){t++;continue}if(r==="#"){for(;t<s.length&&s[t]!==`
12
12
  `;)t++;continue}if(r==='"'){for(t++;t<s.length&&s[t]!=='"';)t+=s[t]==="\\"?2:1;t=Math.min(t+1,s.length),e.push({type:"str",text:s.slice(a,t),start:a,end:t});continue}if(r==="/"&&n()){t++;let c=!1;for(;t<s.length&&(s[t]!=="/"||c)&&s[t]!==`
13
- `;)s[t]==="\\"?t++:s[t]==="["?c=!0:s[t]==="]"&&(c=!1),t++;t=Math.min(t+1,s.length),e.push({type:"regex",text:s.slice(a,t),start:a,end:t});continue}let o;if(o=/^(\d+\.?\d*|\.\d+)([eE][-+]?\d+)?/.exec(s.slice(t))){t+=o[0].length,e.push({type:"num",text:o[0],start:a,end:t});continue}if(o=/^[A-Za-z_][A-Za-z0-9_]*/.exec(s.slice(t))){t+=o[0].length,e.push({type:ao.has(o[0])?"kw":"ident",text:o[0],start:a,end:t});continue}let l=oo.find(c=>s.startsWith(c,t))??r;t+=l.length,e.push({type:"op",text:l,start:a,end:t})}return e}var Sn=class{constructor(e,t,n){this.src=e;this.toks=t;this.lang=n;this.s=A(n)}src;toks;lang;s;p=0;program(){let e=[];for(;this.p<this.toks.length;){let t=this.toks[this.p];if(t.type==="nl"||t.text===";"){this.p++;continue}e.push(t.text==="function"||t.text==="func"?this.functionDef():this.rule())}return e}tok(e,t,n,r,a=[]){return{start:e,end:t,kind:n,explanation:r,children:a}}text(e){return e.length?this.src.slice(e[0].start,e[e.length-1].end):""}matching(e){let t=this.toks[e].text,n=t==="{"?"}":t==="("?")":"]",r=0;for(let a=e;a<this.toks.length;a++)if(this.toks[a].text===t)r++;else if(this.toks[a].text===n&&--r===0)return a;return this.toks.length-1}rule(){let{s:e}=this,t=this.p;for(;this.p<this.toks.length&&this.toks[this.p].text!=="{"&&this.toks[this.p].type!=="nl"&&this.toks[this.p].text!==";";)["(","["].includes(this.toks[this.p].text)&&(this.p=this.matching(this.p)),this.p++;let n=this.toks.slice(t,this.p),r,a=n[n.length-1]?.end??0;if(this.toks[this.p]?.text==="{"){let h=this.matching(this.p);r=this.block(this.p,h),a=this.toks[h].end,this.p=h+1}let o=[],l="";if(n.length){let h=this.pattern(n);o.push(h.token),l=h.when}r&&o.push(r);let c=(n[0]??this.toks[t]).start,u;if(!r)u=e(`${l}\u3092\u51FA\u529B\u3059\u308B\uFF08\u30A2\u30AF\u30B7\u30E7\u30F3\u3092\u7701\u7565\u3059\u308B\u3068 \`print\` \u3068\u540C\u3058\uFF09`,`print ${l} (no action means \`print\`)`);else if(n.length)n[0].text==="BEGIN"||n[0].text==="END"?u=n[0].text==="BEGIN"?e("\u6700\u521D\u306E\u884C\u3092\u8AAD\u3080\u524D\u306B1\u56DE\u3060\u3051 `{ }` \u5185\u3092\u5B9F\u884C\u3059\u308B\uFF08\u521D\u671F\u5316\u306A\u3069\uFF09","run `{ }` once before reading any input (setup)"):e("\u3059\u3079\u3066\u306E\u884C\u3092\u8AAD\u307F\u7D42\u3048\u305F\u5F8C\u306B1\u56DE\u3060\u3051 `{ }` \u5185\u3092\u5B9F\u884C\u3059\u308B\uFF08\u96C6\u8A08\u7D50\u679C\u306E\u51FA\u529B\u306A\u3069\uFF09","run `{ }` once after all input is read (e.g. print totals)"):u=e(`${l}\u306B\u5BFE\u3057\u3066 \`{ }\` \u5185\u3092\u5B9F\u884C\u3059\u308B`,`run \`{ }\` for ${l}`);else return{...r,explanation:e("\u30EB\u30FC\u30EB: \u3059\u3079\u3066\u306E\u884C\u306B\u5BFE\u3057\u3066 `{ }` \u5185\u306E\u6587\u3092\u9806\u306B\u5B9F\u884C\u3059\u308B","Rule: run the statements in `{ }` for every line")};return this.tok(c,a,"block",e("\u30EB\u30FC\u30EB: ","Rule: ")+u,o)}pattern(e){let{s:t}=this,n=this.text(e),r=e[0].start,a=e[e.length-1].end;if(e.length===1&&(n==="BEGIN"||n==="END"||n==="BEGINFILE"||n==="ENDFILE")){let l={BEGIN:["`BEGIN`: \u5165\u529B\u3092\u8AAD\u3080\u524D","`BEGIN`: before any input"],END:["`END`: \u3059\u3079\u3066\u306E\u5165\u529B\u3092\u8AAD\u3093\u3060\u5F8C","`END`: after all input"],BEGINFILE:["`BEGINFILE`: \u5404\u30D5\u30A1\u30A4\u30EB\u3092\u8AAD\u3080\u524D\uFF08GNU awk\uFF09","`BEGINFILE`: before each file (GNU awk)"],ENDFILE:["`ENDFILE`: \u5404\u30D5\u30A1\u30A4\u30EB\u3092\u8AAD\u3093\u3060\u5F8C\uFF08GNU awk\uFF09","`ENDFILE`: after each file (GNU awk)"]};return{token:this.tok(r,a,"keyword",t(l[n][0],l[n][1])),when:""}}let o=e.findIndex(l=>l.text===",");if(o>0){let l=this.pattern(e.slice(0,o)),c=this.pattern(e.slice(o+1)),u=t(`${l.when}\u304B\u3089 ${c.when}\u307E\u3067\u306E\u7BC4\u56F2\u306E\u884C`,`lines from ${l.when} through ${c.when}`);return{token:this.tok(r,a,"pattern",t(`\u7BC4\u56F2\u30D1\u30BF\u30FC\u30F3: ${u}`,`Range pattern: ${u}`),[l.token,this.tok(e[o].start,e[o].end,"operator",t("`,`: \u7BC4\u56F2\uFF08\u5DE6\u306B\u4E00\u81F4\u3057\u305F\u884C\u304B\u3089\u53F3\u306B\u4E00\u81F4\u3057\u305F\u884C\u307E\u3067\uFF09","`,`: a range from the first match to the second")),c.token]),when:u}}if(/^!\s*([A-Za-z_]\w*)\[\$0\]\+\+$/.test(n))return{token:this.tok(r,a,"pattern",t("\u91CD\u8907\u884C\u3092\u9664\u304F\u5B9A\u756A\u306E\u66F8\u304D\u65B9: \u914D\u5217\u3067\u5404\u884C\u306E\u51FA\u73FE\u56DE\u6570\u3092\u6570\u3048\u3001\u521D\u3081\u3066\u51FA\u3066\u304D\u305F\u884C\u3060\u3051\u3092\u5BFE\u8C61\u306B\u3059\u308B","The classic dedupe idiom: count each line in an array and select only its first occurrence"),this.atoms(e)),when:t("\u521D\u3081\u3066\u51FA\u3066\u304D\u305F\u884C","the first occurrence of each line")};if(e.length===1&&e[0].type==="regex"){let l=e[0].text.slice(1,-1);return{token:this.regexToken(e[0],t(`\u6B63\u898F\u8868\u73FE \`${l}\` \u306B\u4E00\u81F4\u3059\u308B\u884C`,`Lines matching the regex \`${l}\``)),when:t(`\`${l}\` \u306B\u4E00\u81F4\u3059\u308B\u884C`,`lines matching \`${l}\``)}}return e.length===1&&e[0].type==="num"?{token:this.tok(r,a,"pattern",t(`\`${n}\`: \u5E38\u306B\u771F\uFF080 \u4EE5\u5916\u306E\u6570\u5024\uFF09`,`\`${n}\`: always true (non-zero)`)),when:n==="0"?t("\u3069\u306E\u884C\u3082","no lines"):t("\u3059\u3079\u3066\u306E\u884C","every line")}:{token:this.tok(r,a,"pattern",t(`\u6761\u4EF6 \`${n}\` \u304C\u771F\uFF080 \u3084\u7A7A\u6587\u5B57\u4EE5\u5916\uFF09\u306B\u306A\u308B\u884C`,`Lines where \`${n}\` is true (not 0 or empty)`),this.atoms(e)),when:t(`\`${n}\` \u304C\u771F\u306B\u306A\u308B\u884C`,`lines where \`${n}\` is true`)}}regexToken(e,t){let n=e.text.endsWith("/")&&e.text.length>1?e.text.slice(1,-1):e.text.slice(1);return this.tok(e.start,e.end,"pattern",t,ye(Se(n,"ere",this.lang),e.start+1))}functionDef(){let{s:e}=this,t=this.toks[this.p++],n=this.toks[this.p++];for(;this.p<this.toks.length&&this.toks[this.p].text!=="{";)this.p++;if(this.p>=this.toks.length)return this.tok(t.start,n?.end??t.end,"error",e("\u95A2\u6570\u5B9A\u7FA9\u304C\u4E0D\u5B8C\u5168","Incomplete function definition"));let r=this.matching(this.p),a=this.block(this.p,r);return this.p=r+1,this.tok(t.start,this.toks[r].end,"function",e(`\u95A2\u6570 \`${n?.text}\` \u3092\u5B9A\u7FA9\u3059\u308B`,`Defines the function \`${n?.text}\``),[a])}block(e,t){let{s:n}=this,r=[],a=e+1;for(;a<t;){let o=this.toks[a];if(o.type==="nl"||o.text===";"){a++;continue}let l=this.statementEnd(a,t);r.push(this.statement(a,l)),a=l}return this.tok(this.toks[e].start,this.toks[t].end,"block",n("\u30A2\u30AF\u30B7\u30E7\u30F3 `{ }`: \u4E2D\u306E\u6587\u3092\u9806\u306B\u5B9F\u884C\u3059\u308B","Action `{ }`: runs the statements in order"),r)}statementEnd(e,t){let n=this.toks[e],r=l=>this.toks[l]?.text==="("?this.matching(l)+1:l,a=l=>{for(;l<t&&this.toks[l].type==="nl";)l++;return l<t?this.statementEnd(l,t):l};if(n.text==="{")return this.matching(e)+1;if(n.text==="if"){let l=a(r(e+1)),c=l;for(;c<t&&(this.toks[c].type==="nl"||this.toks[c].text===";");)c++;return this.toks[c]?.text==="else"&&(l=a(c+1)),l}if(n.text==="while"||n.text==="for")return a(r(e+1));let o=e;for(;o<t&&this.toks[o].type!=="nl"&&this.toks[o].text!==";"&&this.toks[o].text!=="}";)["(","[","{"].includes(this.toks[o].text)&&(o=this.matching(o)),o++;return o}statement(e,t){let{s:n}=this,r=this.toks.slice(e,t).filter(d=>d.type!=="nl"),a=this.text(r),o=r[0].start,l=r[r.length-1].end,c=r[0].text,u=(d,p=this.atoms(r))=>this.tok(o,l,"command",d,p);switch(c){case"{":return this.block(e,t-1);case"print":case"printf":{let d=r.findIndex((b,w)=>w>0&&[">",">>","|"].includes(b.text)&&!this.insideParens(r,w)),p=r.slice(1,d<0?void 0:d),f=this.text(p),m=c==="print"?f?n(`\`${f}\` \u3092\u51FA\u529B\u3059\u308B\uFF08\`,\` \u3067\u533A\u5207\u3063\u305F\u5024\u306E\u9593\u306B\u306F OFS\uFF1D\u65E2\u5B9A\u3067\u7A7A\u767D\u304C\u5165\u308B\uFF09`,`print \`${f}\` (values separated by \`,\` are joined with OFS, a space by default)`):n("\u73FE\u5728\u306E\u884C\uFF08`$0`\uFF09\u3092\u305D\u306E\u307E\u307E\u51FA\u529B\u3059\u308B","print the current line (`$0`)"):n(`\u66F8\u5F0F\u3092\u6307\u5B9A\u3057\u3066\u51FA\u529B\u3059\u308B: \`${f}\`\uFF08\`%s\` \u6587\u5B57\u5217, \`%d\` \u6574\u6570, \`\\n\` \u6539\u884C\u3002\u6539\u884C\u306F\u81EA\u52D5\u3067\u4ED8\u304B\u306A\u3044\uFF09`,`print with a format: \`${f}\` (\`%s\` string, \`%d\` integer; no newline is added)`);if(d>=0){let b=this.text(r.slice(d+1)),w=r[d].text;m+=w===">"?n(`\u3002\u51FA\u529B\u5148\u306F\u30D5\u30A1\u30A4\u30EB ${b}\uFF08\u6700\u521D\u306B\u4E0A\u66F8\u304D\u3001\u4EE5\u964D\u306F\u8FFD\u8A18\uFF09`,`, to the file ${b} (truncated once, then appended)`):w===">>"?n(`\u3002\u51FA\u529B\u5148\u306F\u30D5\u30A1\u30A4\u30EB ${b}\uFF08\u8FFD\u8A18\uFF09`,`, appended to the file ${b}`):n(`\u3002\u51FA\u529B\u3092\u30B3\u30DE\u30F3\u30C9 ${b} \u306B\u30D1\u30A4\u30D7\u3067\u6E21\u3059`,`, piped to the command ${b}`)}let g=c==="printf"&&p[0]?.type==="str"?p[0]:void 0,_=this.atoms(r);return g&&_.unshift(this.tok(g.start,g.end,"string",n("\u66F8\u5F0F\u6587\u5B57\u5217","Format string"),ye(ft(g.text.slice(1,-1),this.lang),g.start+1))),u(m,_)}case"next":return u(n("\u3053\u306E\u884C\u306E\u51E6\u7406\u3092\u3053\u3053\u3067\u7D42\u3048\u3066\u3001\u6B21\u306E\u884C\u306B\u9032\u3080","stop processing this line and move to the next"),[]);case"nextfile":return u(n("\u3053\u306E\u30D5\u30A1\u30A4\u30EB\u306E\u51E6\u7406\u3092\u7D42\u3048\u3066\u3001\u6B21\u306E\u30D5\u30A1\u30A4\u30EB\u306B\u9032\u3080","skip to the next file"),[]);case"exit":return u(n(`awk \u3092\u7D42\u4E86\u3059\u308B${r[1]?`\uFF08\u7D42\u4E86\u30B9\u30C6\u30FC\u30BF\u30B9 ${this.text(r.slice(1))}\uFF09`:""}\uFF08END \u304C\u3042\u308C\u3070\u5B9F\u884C\u3055\u308C\u308B\uFF09`,`exit awk${r[1]?` with status ${this.text(r.slice(1))}`:""} (END still runs)`));case"break":return u(n("\u30EB\u30FC\u30D7\u3092\u629C\u3051\u308B","leave the loop"),[]);case"continue":return u(n("\u30EB\u30FC\u30D7\u306E\u6B21\u306E\u7E70\u308A\u8FD4\u3057\u306B\u9032\u3080","continue with the next iteration"),[]);case"return":return u(n("\u95A2\u6570\u304B\u3089\u5024\u3092\u8FD4\u3059","return from the function"));case"delete":return u(n(`\u914D\u5217\u306E\u8981\u7D20 \`${this.text(r.slice(1))}\` \u3092\u524A\u9664\u3059\u308B`,`delete the array element \`${this.text(r.slice(1))}\``));case"getline":return u(n("\u6B21\u306E\u884C\u3092\u8AAD\u307F\u8FBC\u3080","read the next line"));case"if":{let d=this.matching(e+1),p=this.text(this.toks.slice(e+2,d)),f=this.statementEnd(this.firstNonNl(d+1,t),t),m=[...this.atoms(this.toks.slice(e+1,d+1)),this.statement(this.firstNonNl(d+1,t),f)],g=f;for(;g<t&&(this.toks[g].type==="nl"||this.toks[g].text===";");)g++;if(this.toks[g]?.text==="else"){m.push(this.tok(this.toks[g].start,this.toks[g].end,"keyword",n("`else`: \u6761\u4EF6\u304C\u507D\u306E\u3068\u304D","`else`: otherwise")));let _=this.firstNonNl(g+1,t);m.push(this.statement(_,this.statementEnd(_,t)))}return this.tok(o,l,"keyword",n(`\u6761\u4EF6\u5206\u5C90: \`${p}\` \u304C\u771F\u306A\u3089\u6B21\u306E\u6587\u3092\u5B9F\u884C\u3059\u308B`,`if \`${p}\` is true, run the next statement`),m)}case"for":case"while":{let d=this.matching(e+1),p=this.toks.slice(e+2,d),f=this.text(p),m=/^\(?\s*([A-Za-z_]\w*)\s+in\s+([A-Za-z_]\w*)\s*\)?$/.exec(f),g=c==="while"?n(`\`${f}\` \u304C\u771F\u306E\u9593\u3001\u6B21\u306E\u6587\u3092\u7E70\u308A\u8FD4\u3059`,`repeat the next statement while \`${f}\` is true`):m?n(`\u914D\u5217 \`${m[2]}\` \u306E\u5404\u30AD\u30FC\u3092 \`${m[1]}\` \u306B\u5165\u308C\u3066\u7E70\u308A\u8FD4\u3059\uFF08\u9806\u5E8F\u306F\u4E0D\u5B9A\uFF09`,`loop over each key of the array \`${m[2]}\` as \`${m[1]}\` (in no particular order)`):n(`\`for (${f})\`: \u521D\u671F\u5316; \u6761\u4EF6; \u66F4\u65B0 \u3067\u56DE\u6570\u3092\u5236\u5FA1\u3057\u3066\u7E70\u308A\u8FD4\u3059`,`\`for (${f})\`: loop with init; condition; update`),_=this.firstNonNl(d+1,t),b=[...this.atoms(this.toks.slice(e+1,d+1))];return _<t&&b.push(this.statement(_,this.statementEnd(_,t))),this.tok(o,l,"keyword",g,b)}}let h=r.findIndex(d=>["=","+=","-=","*=","/=","%=","^="].includes(d.text)&&!this.insideParens(r,r.indexOf(d)));if(h>0){let d=this.text(r.slice(0,h)),p=this.text(r.slice(h+1)),f=r[h].text,m={"=":[`\`${d}\` \u306B \`${p}\` \u3092\u4EE3\u5165\u3059\u308B`,`set \`${d}\` to \`${p}\``],"+=":[`\`${d}\` \u306B \`${p}\` \u3092\u8DB3\u3059\uFF08\u5408\u8A08\u306E\u8A08\u7B97\u306A\u3069\u306B\u4F7F\u3046\uFF09`,`add \`${p}\` to \`${d}\` (e.g. to sum)`],"-=":[`\`${d}\` \u304B\u3089 \`${p}\` \u3092\u5F15\u304F`,`subtract \`${p}\` from \`${d}\``],"*=":[`\`${d}\` \u306B \`${p}\` \u3092\u639B\u3051\u308B`,`multiply \`${d}\` by \`${p}\``],"/=":[`\`${d}\` \u3092 \`${p}\` \u3067\u5272\u308B`,`divide \`${d}\` by \`${p}\``],"%=":[`\`${d}\` \u3092 \`${p}\` \u3067\u5272\u3063\u305F\u4F59\u308A\u306B\u3059\u308B`,`set \`${d}\` to the remainder`],"^=":[`\`${d}\` \u3092 \`${p}\` \u4E57\u3059\u308B`,`raise \`${d}\` to \`${p}\``]},g=/^\$\d+$|^\$NF$/.test(d)?n("\uFF08\u30D5\u30A3\u30FC\u30EB\u30C9\u3092\u66F8\u304D\u63DB\u3048\u308B\u3068 `$0` \u3082 OFS \u3067\u7D44\u307F\u7ACB\u3066\u76F4\u3055\u308C\u308B\uFF09"," (changing a field rebuilds `$0` with OFS)"):"";return u(n(m[f][0],m[f][1])+g)}if(r.length>=2&&(r[r.length-1].text==="++"||r[r.length-1].text==="--"||r[0].text==="++"||r[0].text==="--")){let d=r[0].text==="++"||r[r.length-1].text==="++",p=this.text(r.filter(f=>f.text!=="++"&&f.text!=="--"));return u(n(`\`${p}\` \u30921${d?"\u5897\u3084\u3059":"\u6E1B\u3089\u3059"}\uFF08\u30AB\u30A6\u30F3\u30C8\u306A\u3069\u306B\u4F7F\u3046\uFF09`,`${d?"increment":"decrement"} \`${p}\` (e.g. to count)`))}if(r[0].type==="ident"&&r[1]?.text==="("&&this.matching(e+1)===t-1){let d=Wt[c];return u(d?n(`\`${c}()\` \u3092\u547C\u3073\u51FA\u3059: ${d[0]}`,`call \`${c}()\`: ${d[1]}`):n(`\u95A2\u6570 \`${c}\` \u3092\u547C\u3073\u51FA\u3059`,`call the function \`${c}\``))}return u(n(`\u5F0F \`${a}\` \u3092\u8A55\u4FA1\u3059\u308B`,`evaluate \`${a}\``))}firstNonNl(e,t){for(;e<t&&this.toks[e].type==="nl";)e++;return e}insideParens(e,t){let n=0;for(let r=0;r<t;r++)e[r].text==="("||e[r].text==="["?n++:(e[r].text===")"||e[r].text==="]")&&n--;return n>0}atoms(e){let{s:t}=this,n=[];for(let r=0;r<e.length;r++){let a=e[r],o=e[r+1];if(a.text==="$"&&o){let l=o.end,c;if(o.type==="num")c=o.text==="0"?t("`$0`: \u73FE\u5728\u306E\u884C\u5168\u4F53","`$0`: the whole current line"):t(`\`$${o.text}\`: ${o.text} \u756A\u76EE\u306E\u30D5\u30A3\u30FC\u30EB\u30C9\uFF08\u5217\uFF09`,`\`$${o.text}\`: field ${o.text}`);else if(o.text==="NF")c=t("`$NF`: \u6700\u5F8C\u306E\u30D5\u30A3\u30FC\u30EB\u30C9\uFF08\u5217\uFF09","`$NF`: the last field");else if(o.text==="("){let u=e.findIndex((d,p)=>p>r&&d.text===")");l=(e[u]??o).end;let h=this.src.slice(o.end,e[u]?.start??o.end);c=h.replace(/\s/g,"")==="NF-1"?t("`$(NF-1)`: \u6700\u5F8C\u304B\u30892\u756A\u76EE\u306E\u30D5\u30A3\u30FC\u30EB\u30C9","`$(NF-1)`: the second-to-last field"):t(`\`$(${h})\`: \u8A08\u7B97\u3057\u305F\u756A\u53F7\u306E\u30D5\u30A3\u30FC\u30EB\u30C9`,`\`$(${h})\`: the field with the computed number`),r=u>=0?u:r+1,n.push(this.tok(a.start,l,"variable",c));continue}else c=t(`\`$${o.text}\`: \u5909\u6570 ${o.text} \u306E\u5024\u3092\u756A\u53F7\u3068\u3059\u308B\u30D5\u30A3\u30FC\u30EB\u30C9`,`\`$${o.text}\`: the field numbered by ${o.text}`);n.push(this.tok(a.start,l,"variable",c)),r++;continue}if(a.type==="ident"&&En[a.text])n.push(this.tok(a.start,a.end,"variable",`\`${a.text}\`: ${t(En[a.text][0],En[a.text][1])}`));else if(a.type==="ident"&&Wt[a.text]&&o?.text==="(")n.push(this.tok(a.start,a.end,"function",`\`${a.text}()\`: ${t(Wt[a.text][0],Wt[a.text][1])}`));else if(a.type==="kw"&&a.text==="getline")n.push(this.tok(a.start,a.end,"function",t("`getline`: \u6B21\u306E\u884C\u3092\u8AAD\u307F\u8FBC\u3080","`getline`: read the next line")));else if(a.type==="regex")n.push(this.regexToken(a,t(`\u6B63\u898F\u8868\u73FE \`${a.text}\``,`Regex \`${a.text}\``)));else if(a.type==="op"||a.type==="kw"&&a.text==="in"){let l={"~":["\u5DE6\u304C\u53F3\u306E\u6B63\u898F\u8868\u73FE\u306B\u4E00\u81F4\u3059\u308B","the left side matches the regex"],"!~":["\u5DE6\u304C\u53F3\u306E\u6B63\u898F\u8868\u73FE\u306B\u4E00\u81F4\u3057\u306A\u3044","the left side does not match the regex"],"&&":["\u4E21\u65B9\u304C\u771F","both are true"],"||":["\u3069\u3061\u3089\u304B\u304C\u771F","either is true"],"!":["\u5426\u5B9A","not"],"==":["\u7B49\u3057\u3044","equal"],"!=":["\u7B49\u3057\u304F\u306A\u3044","not equal"],in:["\u5DE6\u306E\u30AD\u30FC\u304C\u53F3\u306E\u914D\u5217\u306B\u3042\u308B\u304B","whether the key is in the array"],"?":["\u6761\u4EF6\u6F14\u7B97\u5B50\uFF08`\u6761\u4EF6 ? \u771F\u306E\u3068\u304D : \u507D\u306E\u3068\u304D`\uFF09","conditional (`cond ? a : b`)"]};l[a.text]&&n.push(this.tok(a.start,a.end,"operator",`\`${a.text}\`: ${t(l[a.text][0],l[a.text][1])}`))}}return n}};function Zs(s,e){let t=Nn(s);if(!t.length)return[];try{return new Sn(s,t,e).program()}catch{let n=A(e);return[{start:0,end:s.length,kind:"error",children:[],explanation:n("awk \u30D7\u30ED\u30B0\u30E9\u30E0\u3092\u89E3\u6790\u3067\u304D\u307E\u305B\u3093\u3067\u3057\u305F","Could not parse the awk program")}]}}var z=class extends Error{};var lo=new Set(["rand","srand","system","close","fflush","strftime","systime","gensub","asort","asorti","mktime"]),Tn=class{constructor(e){this.toks=e}toks;p=0;peek(e=0){return this.toks[this.p+e]}is(e,t=0){let n=this.peek(t);return!!n&&n.type!=="str"&&n.type!=="regex"&&n.text===e}next(){let e=this.toks[this.p++];if(!e)throw new z("unexpected end");return e}expect(e){if(!this.is(e))throw new z(`expected ${e}`);this.p++}skipNl(){for(;this.peek()?.type==="nl";)this.p++}skipTerminators(){for(;this.peek()?.type==="nl"||this.is(";");)this.p++}program(){let e={rules:[],funcs:new Map};for(;;){this.skipTerminators();let t=this.peek();if(!t)return e;if(t.text==="function"||t.text==="func"){this.p++;let r=this.next().text;this.expect("(");let a=[];for(;!this.is(")");)a.push(this.next().text),this.is(",")&&this.p++,this.skipNl();this.p++,this.skipNl(),e.funcs.set(r,{params:a,body:this.block()});continue}let n={};if(t.text==="BEGIN"||t.text==="END")this.p++,n[t.text==="BEGIN"?"begin":"end"]=!0;else{if(t.text==="BEGINFILE"||t.text==="ENDFILE")throw new z("BEGINFILE");this.is("{")||(n.pattern=this.expr(),this.is(",")&&(this.p++,this.skipNl(),n.pattern2=this.expr()))}if(this.is("{"))n.action=this.block();else if(n.begin||n.end)throw new z("BEGIN without action");e.rules.push(n)}}block(){this.expect("{");let e=[];for(;;){if(this.skipTerminators(),this.is("}"))return this.p++,{k:"block",body:e};e.push(this.statement())}}statement(){let e=this.peek();if(!e)throw new z("eof");if(this.is("{"))return this.block();if(e.type==="kw")switch(e.text){case"if":{this.p++,this.expect("(");let n=this.expr();this.expect(")"),this.skipNl();let r=this.statement(),a=this.p;return this.skipTerminators(),this.is("else")?(this.p++,this.skipNl(),{k:"if",c:n,t:r,f:this.statement()}):(this.p=a,{k:"if",c:n,t:r})}case"while":{this.p++,this.expect("(");let n=this.expr();return this.expect(")"),this.is(";")?(this.p++,{k:"while",c:n,body:{k:"block",body:[]}}):(this.skipNl(),{k:"while",c:n,body:this.statement()})}case"do":{this.p++,this.skipNl();let n=this.statement();this.skipTerminators(),this.expect("while"),this.expect("(");let r=this.expr();return this.expect(")"),this.end(),{k:"do",body:n,c:r}}case"for":{if(this.p++,this.expect("("),this.peek()?.type==="ident"&&this.is("in",1)&&this.peek(2)?.type==="ident"&&this.is(")",3)){let o=this.next().text;this.p++;let l=this.next().text;return this.p++,this.skipNl(),{k:"forin",v:o,arr:l,body:this.statement()}}let n=this.is(";")?void 0:{k:"expr",e:this.expr()};this.expect(";"),this.skipNl();let r=this.is(";")?void 0:this.expr();this.expect(";"),this.skipNl();let a=this.is(")")?void 0:{k:"expr",e:this.expr()};return this.expect(")"),this.is(";")?(this.p++,{k:"for",init:n,c:r,inc:a,body:{k:"block",body:[]}}):(this.skipNl(),{k:"for",init:n,c:r,inc:a,body:this.statement()})}case"print":case"printf":{this.p++;let n=[];if(!this.atEnd())for(n.push(this.expr(!0));this.is(",");)this.p++,this.skipNl(),n.push(this.expr(!0));if(this.is(">")||this.is(">>")||this.is("|")||this.is("|&"))throw new z("output redirection");let r=n.length===1&&n[0].k==="group"?n[0].list:n;return this.end(),{k:"print",args:r,printf:e.text==="printf"}}case"next":return this.p++,this.end(),{k:"next"};case"nextfile":throw new z("nextfile");case"break":return this.p++,this.end(),{k:"break"};case"continue":return this.p++,this.end(),{k:"continue"};case"exit":{this.p++;let n=this.atEnd()?void 0:this.expr();return this.end(),{k:"exit",e:n}}case"return":{this.p++;let n=this.atEnd()?void 0:this.expr();return this.end(),{k:"return",e:n}}case"delete":{this.p++;let n=this.next().text,r;return this.is("[")&&(this.p++,r=this.exprList("]")),this.end(),{k:"delete",name:n,subs:r}}case"getline":throw new z("getline")}let t=this.expr();return this.end(),{k:"expr",e:t}}atEnd(){let e=this.peek();return!e||e.type==="nl"||this.is(";")||this.is("}")||this.is(">")||this.is(">>")||this.is("|")}end(){if(this.peek()?.type==="nl"||this.is(";"))this.p++;else if(!this.is("}")&&this.peek())throw new z("expected end of statement")}exprList(e){let t=[this.expr()];for(;this.is(",");)this.p++,t.push(this.expr());return this.expect(e),t}expr(e=!1){let t=this.ternary(e),n=this.peek();return n?.type==="op"&&["=","+=","-=","*=","/=","%=","^="].includes(n.text)&&Vt(t)?(this.p++,this.skipNl(),{k:"assign",op:n.text,target:t,e:this.expr(e)}):t}ternary(e){let t=this.or(e);if(!this.is("?"))return t;this.p++,this.skipNl();let n=this.expr(e);return this.skipNl(),this.expect(":"),this.skipNl(),{k:"cond",c:t,a:n,b:this.expr(e)}}or(e){let t=this.and(e);for(;this.is("||");)this.p++,this.skipNl(),t={k:"bin",op:"||",l:t,r:this.and(e)};return t}and(e){let t=this.inExpr(e);for(;this.is("&&");)this.p++,this.skipNl(),t={k:"bin",op:"&&",l:t,r:this.inExpr(e)};return t}inExpr(e){let t=this.match(e);for(;this.is("in");){this.p++;let n=this.next().text;t={k:"in",subs:t.k==="group"?t.list:[t],name:n}}return t}match(e){let t=this.rel(e);for(;this.is("~")||this.is("!~");)t={k:"bin",op:this.next().text,l:t,r:this.rel(e)};return t}rel(e){let t=this.concat(),n=this.peek();return n?.type==="op"&&["<","<=",">=","==","!="].includes(n.text)||n?.text===">"&&n.type==="op"&&!e?(this.p++,{k:"bin",op:n.text,l:t,r:this.concat()}):t}concat(){let e=this.additive();for(;;){let t=this.peek();if(!(t&&(t.type==="num"||t.type==="str"||t.type==="ident"||t.type==="op"&&(t.text==="$"||t.text==="("))))return e;e={k:"bin",op:"concat",l:e,r:this.additive()}}}additive(){let e=this.mul();for(;this.is("+")||this.is("-");)e={k:"bin",op:this.next().text,l:e,r:this.mul()};return e}mul(){let e=this.unary();for(;this.is("*")||this.is("/")||this.is("%");)e={k:"bin",op:this.next().text,l:e,r:this.unary()};return e}unary(){return this.is("!")||this.is("-")||this.is("+")?{k:"unary",op:this.next().text,e:this.unary()}:this.power()}power(){let e=this.postfix();if(!this.is("^"))return e;this.p++;let t=this.is("-")||this.is("+")||this.is("!")?this.unary():this.power();return{k:"bin",op:"^",l:e,r:t}}postfix(){if(this.is("++")||this.is("--")){let t=this.next().text,n=this.primary();if(!Vt(n))throw new z("bad ++");return{k:"incr",op:t,prefix:!0,target:n}}let e=this.primary();return(this.is("++")||this.is("--"))&&Vt(e)?{k:"incr",op:this.next().text,prefix:!1,target:e}:e}primary(){let e=this.next();switch(e.type){case"num":return{k:"num",v:Number(e.text)};case"str":return{k:"str",v:co(e.text.slice(1,-1))};case"regex":{let t=ie(e.text.slice(1,-1).replace(/\\\//g,"/"),"ere",{sedEscapes:!0});if(!t)throw new z("regex");return{k:"re",re:t}}case"ident":{let t=e.text;if(this.is("(")&&this.peek().start===e.end){this.p++;let n=this.is(")")?(this.p++,[]):this.exprList(")");if(lo.has(t))throw new z(t);return{k:"call",name:t,args:n}}return t==="length"?{k:"call",name:t,args:[]}:this.is("[")?(this.p++,{k:"idx",name:t,subs:this.exprList("]")}):{k:"var",name:t}}case"kw":throw e.text==="getline"?new z("getline"):new z(`unexpected ${e.text}`);case"op":if(e.text==="$"){if(this.is("++")||this.is("--"))throw new z("$++");return this.is("-")?(this.p++,{k:"field",e:{k:"unary",op:"-",e:this.primary()}}):{k:"field",e:this.primary()}}if(e.text==="("){this.skipNl();let t=this.expr();if(this.is(",")){let n=[t];for(;this.is(",");)this.p++,n.push(this.expr());return this.expect(")"),{k:"group",list:n}}return this.expect(")"),t}if(e.text==="-"||e.text==="!"||e.text==="+")return{k:"unary",op:e.text,e:this.unary()}}throw new z(`unexpected ${e.text}`)}};function Vt(s){return s.k==="var"||s.k==="idx"||s.k==="field"}function co(s){return s.replace(/\\([nt"\\/rab]|[0-7]{1,3})/g,(e,t)=>/^[0-7]/.test(t)?String.fromCharCode(parseInt(t,8)):{n:`
14
- `,t:" ",'"':'"',"\\":"\\","/":"/",r:"\r",a:"\x07",b:"\b"}[t])}var Le=class{constructor(e){this.s=e}s},tr=/^\s*[-+]?(\d+\.?\d*|\.\d+)([eE][-+]?\d+)?\s*$/;function B(s){if(typeof s=="number")return s;let e=s===void 0?"":typeof s=="string"?s:s.s,t=/^\s*[-+]?(\d+\.?\d*|\.\d+)([eE][-+]?\d+)?/.exec(e);return t?Number(t[0]):0}function nr(s,e="%.6g"){return Number.isInteger(s)&&Math.abs(s)<1e16?String(s===0?0:s):ge(e,[s])}function D(s){return s===void 0?"":typeof s=="number"?nr(s):typeof s=="string"?s:s.s}function Xs(s){return s===void 0||typeof s=="number"||s instanceof Le&&tr.test(s.s)}function fe(s){return s===void 0?!1:typeof s=="number"?s!==0:typeof s=="string"?s!=="":tr.test(s.s)?B(s)!==0:s.s!==""}function Qe(s,e){if(Xs(s)&&Xs(e)){let r=B(s),a=B(e);return r<a?-1:r>a?1:0}let t=D(s),n=D(e);return t<n?-1:t>n?1:0}function ge(s,e){let t=0,n=()=>e[t++];return s.replace(/%([-+ #0]*)(\*|\d+)?(?:\.(\*|\d*))?([diouxXcseEfFgG%])/g,(r,a,o,l,c)=>{if(c==="%")return"%";let u=o==="*"?B(n()):o?Number(o):0,h=l==="*"?B(n()):l!==void 0?Number(l||0):void 0,d=n(),p,f="";switch(c){case"d":case"i":case"u":{let g=Math.trunc(B(d));f=g<0?"-":a.includes("+")?"+":a.includes(" ")?" ":"",p=String(Math.abs(g)),h!==void 0&&(p=p.padStart(h,"0"));break}case"o":p=Math.trunc(Math.abs(B(d))).toString(8);break;case"x":p=Math.trunc(Math.abs(B(d))).toString(16);break;case"X":p=Math.trunc(Math.abs(B(d))).toString(16).toUpperCase();break;case"c":p=typeof d=="number"?String.fromCharCode(d):D(d).slice(0,1);break;case"s":p=D(d),h!==void 0&&(p=p.slice(0,h));break;default:{let g=B(d);f=g<0||Object.is(g,-0)?"-":a.includes("+")?"+":a.includes(" ")?" ":"",p=uo(Math.abs(g),c,h??6,a.includes("#"))}}let m=f+p;return m.length<u&&(a.includes("-")?m=m.padEnd(u):a.includes("0")&&/[diouxXeEfFgG]/.test(c)&&!(h!==void 0&&/[diouxX]/.test(c))?m=f+p.padStart(u-f.length,"0"):m=m.padStart(u)),m})}function Ks(s){return s.replace(/e([+-])(\d)$/,"e$10$2")}function Qs(s,e){let t=s.toFixed(e);if(e>60)return t;let n=s.toFixed(Math.min(100,e+40)),r=n.indexOf("."),a=n.slice(r+1+e);if(!/^50*$/.test(a))return t;let o=t.replace(/^-/,"").replace(".","");return Number(o[o.length-1])%2===0?t:n.slice(0,e?r+1+e:r)}function uo(s,e,t,n){let r=e===e.toUpperCase(),a;if(e==="f"||e==="F")a=Qs(s,t);else if(e==="e"||e==="E")a=Ks(s.toExponential(t));else{let o=t===0?1:t,l=s===0?0:Math.floor(Math.log10(s));l<-4||l>=o?(a=Ks(s.toExponential(o-1)),n||(a=a.replace(/\.?0+e/,"e"))):(a=Qs(s,Math.max(0,o-1-l)),!n&&a.includes(".")&&(a=a.replace(/\.?0+$/,"")))}return r?a.toUpperCase():a}var mt=class{},et=class{},Oe=class{},Pe=class{},gt=class{constructor(e){this.v=e}v},Mn=class{constructor(e){this.prog=e;this.vars.set("FS"," "),this.vars.set("OFS"," "),this.vars.set("ORS",`
15
- `),this.vars.set("SUBSEP",""),this.vars.set("NR",0),this.vars.set("FNR",0),this.vars.set("RSTART",0),this.vars.set("RLENGTH",-1),this.vars.set("FILENAME","")}prog;vars=new Map;arrays=new Map;fields=[""];out=[];steps=0;locals=[];tick(){if(++this.steps>2e5)throw new z("too many steps")}getVar(e){let t=this.locals[this.locals.length-1];if(t?.has(e)){let n=t.get(e);if(n instanceof Map)throw new z("array as scalar");return n}return e==="NF"?this.fields.length-1:this.vars.get(e)}setVar(e,t){let n=this.locals[this.locals.length-1];if(n?.has(e)){n.set(e,t);return}if(e==="NF"){let r=Math.max(0,Math.trunc(B(t)));for(;this.fields.length-1<r;)this.fields.push("");this.fields.length=r+1,this.rebuild();return}this.vars.set(e,t)}array(e){let t=this.locals[this.locals.length-1];if(t?.has(e)){let r=t.get(e);return r instanceof Map||(r=new Map,t.set(e,r)),r}let n=this.arrays.get(e);return n||(n=new Map,this.arrays.set(e,n)),n}key(e){return e.map(t=>D(this.eval(t))).join(D(this.vars.get("SUBSEP")))}setRecord(e){this.fields=[e,...this.split(e,D(this.vars.get("FS")))]}split(e,t){if(t instanceof RegExp)return e===""?[]:e.split(t);if(t===" "){let r=e.replace(/^[ \t\n]+|[ \t\n]+$/g,"");return r?r.split(/[ \t\n]+/):[]}if(e==="")return[];if(t.length===1&&t!=="\\")return e.split(t);let n=ie(t,"ere",{sedEscapes:!0});if(!n)throw new z("FS");return e.split(new RegExp(n.source,n.flags))}rebuild(){this.fields[0]=this.fields.slice(1).join(D(this.vars.get("OFS")))}getField(e){if(e<0)throw new z("negative field");return e===0?new Le(this.fields[0]):new Le(this.fields[e]??"")}setField(e,t){if(e<0)throw new z("negative field");if(e===0){this.setRecord(D(t));return}for(;this.fields.length<=e;)this.fields.push("");this.fields[e]=D(t),this.rebuild()}assignTo(e,t){return e.k==="var"?this.setVar(e.name,t):e.k==="idx"?this.array(e.name).set(this.key(e.subs),t):e.k==="field"&&this.setField(Math.trunc(B(this.eval(e.e))),t),t}regexOf(e){if(e.k==="re")return new RegExp(e.re.source,e.re.flags);let t=ie(D(this.eval(e)),"ere",{sedEscapes:!0});if(!t)throw new z("dynamic regex");return new RegExp(t.source,t.flags)}eval(e){switch(this.tick(),e.k){case"num":return e.v;case"str":return e.v;case"re":return this.regexOf(e).test(this.fields[0])?1:0;case"var":return this.getVar(e.name);case"idx":{let t=this.array(e.name),n=this.key(e.subs);return t.has(n)||t.set(n,void 0),t.get(n)}case"field":return this.getField(Math.trunc(B(this.eval(e.e))));case"group":return this.eval(e.list[e.list.length-1]);case"in":return this.array(e.name).has(this.key(e.subs))?1:0;case"cond":return fe(this.eval(e.c))?this.eval(e.a):this.eval(e.b);case"unary":{let t=this.eval(e.e);return e.op==="!"?fe(t)?0:1:e.op==="-"?-B(t):B(t)}case"assign":{if(e.op==="=")return this.assignTo(e.target,this.eval(e.e));let t=B(this.eval(e.e)),n=B(this.eval(e.target));return this.assignTo(e.target,er(e.op.slice(0,-1),n,t))}case"incr":{let t=B(this.eval(e.target)),n=e.op==="++"?t+1:t-1;return this.assignTo(e.target,n),e.prefix?n:t}case"bin":switch(e.op){case"&&":return fe(this.eval(e.l))&&fe(this.eval(e.r))?1:0;case"||":return fe(this.eval(e.l))||fe(this.eval(e.r))?1:0;case"~":case"!~":{let t=this.regexOf(e.r).test(D(this.eval(e.l)));return e.op==="~"===t?1:0}case"concat":return D(this.eval(e.l))+D(this.eval(e.r));case"<":return Qe(this.eval(e.l),this.eval(e.r))<0?1:0;case"<=":return Qe(this.eval(e.l),this.eval(e.r))<=0?1:0;case">":return Qe(this.eval(e.l),this.eval(e.r))>0?1:0;case">=":return Qe(this.eval(e.l),this.eval(e.r))>=0?1:0;case"==":return Qe(this.eval(e.l),this.eval(e.r))===0?1:0;case"!=":return Qe(this.eval(e.l),this.eval(e.r))!==0?1:0;default:return er(e.op,B(this.eval(e.l)),B(this.eval(e.r)))}case"call":return this.call(e.name,e.args)}}call(e,t){let n=this.prog.funcs.get(e);if(n){let a=new Map;n.params.forEach((o,l)=>{let c=t[l];c&&c.k==="var"&&(this.arrays.has(c.name)||this.locals[this.locals.length-1]?.get(c.name)instanceof Map)?a.set(o,this.array(c.name)):a.set(o,c?this.eval(c):void 0)}),this.locals.push(a);try{this.exec(n.body);return}catch(o){if(o instanceof gt)return o.v;throw o}finally{this.locals.pop()}}let r=a=>t[a]?this.eval(t[a]):void 0;switch(e){case"length":{if(!t.length)return this.fields[0].length;let a=t[0];return a.k==="var"&&this.arrays.has(a.name)?this.arrays.get(a.name).size:D(r(0)).length}case"substr":{let a=D(r(0)),o=Math.round(B(r(1))),l=t.length>2?o+Math.round(B(r(2))):1/0,c=Math.max(o,1),u=Math.min(l,a.length+1);return u>c?a.slice(c-1,u-1):""}case"index":return D(r(0)).indexOf(D(r(1)))+1;case"split":{if(t[1]?.k!=="var")throw new z("split target");let a=t.length>2?t[2].k==="re"?this.regexOf(t[2]):D(r(2)):D(this.vars.get("FS")),o=this.split(D(r(0)),a),l=this.array(t[1].name);return l.clear(),o.forEach((c,u)=>l.set(String(u+1),new Le(c))),o.length}case"sub":case"gsub":{let a=this.regexOf(t[0]),o=t[2]??{k:"field",e:{k:"num",v:0}};if(!Vt(o))throw new z("sub target");let l=D(r(1)),c=0,u=new RegExp(a.source,a.flags+(e==="gsub"?"g":"")),h=D(this.eval(o)).replace(u,d=>(c++,l.replace(/\\\\|\\&|&/g,p=>p==="&"?d:p==="\\&"?"&":"\\")));return c&&this.assignTo(o,h),c}case"match":{let a=this.regexOf(t[1]).exec(D(r(0)));return this.vars.set("RSTART",a?a.index+1:0),this.vars.set("RLENGTH",a?a[0].length:-1),a?a.index+1:0}case"sprintf":return ge(D(r(0)),t.slice(1).map(a=>this.eval(a)));case"tolower":return D(r(0)).toLowerCase();case"toupper":return D(r(0)).toUpperCase();case"int":return Math.trunc(B(r(0)));case"sqrt":return Math.sqrt(B(r(0)));case"exp":return Math.exp(B(r(0)));case"log":return Math.log(B(r(0)));case"sin":return Math.sin(B(r(0)));case"cos":return Math.cos(B(r(0)));case"atan2":return Math.atan2(B(r(0)),B(r(1)))}throw new z(`function ${e}`)}exec(e){switch(this.tick(),e.k){case"block":for(let t of e.body)this.exec(t);return;case"expr":this.eval(e.e);return;case"print":{let t=D(this.vars.get("ORS"));if(e.printf){if(!e.args.length)throw new z("printf without format");this.write(ge(D(this.eval(e.args[0])),e.args.slice(1).map(r=>this.eval(r))));return}let n=e.args.length?e.args.map(r=>{let a=this.eval(r);return typeof a=="number"?nr(a,D(this.vars.get("OFMT"))||"%.6g"):D(a)}).join(D(this.vars.get("OFS"))):this.fields[0];this.write(n+t);return}case"if":fe(this.eval(e.c))?this.exec(e.t):e.f&&this.exec(e.f);return;case"while":for(;fe(this.eval(e.c));)try{this.exec(e.body)}catch(t){if(t instanceof Oe)break;if(!(t instanceof Pe))throw t}return;case"do":do try{this.exec(e.body)}catch(t){if(t instanceof Oe)break;if(!(t instanceof Pe))throw t}while(fe(this.eval(e.c)));return;case"for":for(e.init&&this.exec(e.init);!e.c||fe(this.eval(e.c));){try{this.exec(e.body)}catch(t){if(t instanceof Oe)break;if(!(t instanceof Pe))throw t}e.inc&&this.exec(e.inc)}return;case"forin":for(let t of[...this.array(e.arr).keys()]){this.setVar(e.v,new Le(t));try{this.exec(e.body)}catch(n){if(n instanceof Oe)break;if(!(n instanceof Pe))throw n}}return;case"next":throw new mt;case"exit":throw new et;case"break":throw new Oe;case"continue":throw new Pe;case"return":throw new gt(e.e?this.eval(e.e):void 0);case"delete":e.subs?this.array(e.name).delete(this.key(e.subs)):this.array(e.name).clear();return}}write(e){this.out.push(e)}selects(e){return e.pattern?e.pattern2?e.active?(fe(this.eval(e.pattern2))&&(e.active=!1),!0):fe(this.eval(e.pattern))?(e.active=!fe(this.eval(e.pattern2)),!0):!1:fe(this.eval(e.pattern)):!0}};function er(s,e,t){switch(s){case"+":return e+t;case"-":return e-t;case"*":return e*t;case"/":if(t===0)throw new z("division by zero");return e/t;case"%":if(t===0)throw new z("division by zero");return e%t;case"^":return e**t}throw new z(s)}function sr(s){try{return new Tn(Nn(s)).program()}catch(e){if(e instanceof z)return;throw e}}function _t(s,e,t={}){let n=sr(s);if(!n)return;let r=new Mn(n);t.fs!==void 0&&r.vars.set("FS",t.fs);for(let[o,l]of Object.entries(t.vars??{}))r.vars.set(o,new Le(l));try{let o=!1;try{for(let u of n.rules)u.begin&&r.exec(u.action)}catch(u){if(!(u instanceof et))throw u;o=!0}let l=n.rules.filter(u=>!u.begin&&!u.end),c=n.rules.some(u=>u.end);if(!o&&(l.length||c))try{e.forEach((u,h)=>{r.vars.set("NR",h+1),r.vars.set("FNR",h+1),r.setRecord(u);try{for(let d of l)r.selects(d)&&(d.action?r.exec(d.action):r.out.push(r.fields[0]+D(r.vars.get("ORS"))))}catch(d){if(!(d instanceof mt))throw d}})}catch(u){if(!(u instanceof et))throw u}try{for(let u of n.rules)u.end&&r.exec(u.action)}catch(u){if(!(u instanceof et))throw u}}catch(o){if(o instanceof z||o instanceof mt||o instanceof Oe||o instanceof Pe||o instanceof gt)return;throw o}let a=r.out.join("");return a===""?[]:a.replace(/\n$/,"").split(`
16
- `)}function ho(s){let e={maxField:0,usesNF:!1,numeric:new Map,regexes:new Map,counts:!1},t=c=>c.k==="field"&&c.e.k==="num"?c.e.v:void 0,n=(c,u)=>{let h=t(c);if(h===void 0||h===0)return;let d=e.numeric.get(h)??[];u!==void 0&&d.push(u),e.numeric.set(h,d)},r=(c,u)=>e.regexes.set(c,[...e.regexes.get(c)??[],u]),a=(c,u)=>{let h=!1,d=m=>m.k==="var"&&m.name===u,p=m=>{if(!(!m||h)){m.k==="bin"&&["+","-","*","/","%","^","<",">","<=",">="].includes(m.op)&&(d(m.l)||d(m.r))&&(h=!0);for(let g of Object.values(m))g&&typeof g=="object"&&"k"in g&&p(g);m.k==="call"&&m.args.forEach(p)}},f=m=>{if(!(!m||h))for(let g of Object.values(m))Array.isArray(g)?g.forEach(_=>"k"in _&&["block","expr","print","if","while","do","for","forin","return","exit","delete"].includes(_.k)?f(_):p(_)):g&&typeof g=="object"&&"k"in g&&(["block","expr","print","if","while","do","for","forin","return"].includes(g.k)&&!("op"in g)?f(g):p(g))};return f(c),h},o=(c,u=!1)=>{if(c)switch(c.k){case"field":{let h=t(c);h!==void 0&&(e.maxField=Math.max(e.maxField,h)),c.e.k==="var"&&c.e.name==="NF"&&(e.usesNF=!0),o(c.e);return}case"var":c.name==="NF"&&(e.usesNF=!0);return;case"re":u&&r(0,c.re);return;case"bin":{["<","<=",">",">=","==","!="].includes(c.op)?(c.r.k==="num"&&n(c.l,c.r.v),c.l.k==="num"&&n(c.r,c.l.v)):["+","-","*","/","%","^"].includes(c.op)?(n(c.l),n(c.r)):(c.op==="~"||c.op==="!~")&&c.r.k==="re"&&r(c.l.k==="field"&&c.l.e.k==="var"&&c.l.e.name==="NF"?-1:t(c.l)??0,c.r.re),o(c.l),o(c.r);return}case"assign":c.op!=="="&&n(c.e),c.target.k==="var"&&c.target.name==="FS"&&c.e.k==="str"&&(e.fsAssigned=c.e.v),o(c.target),o(c.e);return;case"incr":c.target.k==="idx"&&c.target.subs.some(h=>h.k==="field")&&(e.counts=!0),o(c.target);return;case"idx":c.subs.forEach(h=>o(h));return;case"call":{let h=s.funcs.get(c.name);h&&c.args.forEach((d,p)=>{h.params[p]&&a(h.body,h.params[p])&&n(d)}),c.args.forEach(d=>o(d));return}case"unary":o(c.e,u&&c.op==="!");return;case"cond":o(c.c),o(c.a),o(c.b);return;case"in":c.subs.forEach(h=>o(h));return;case"group":c.list.forEach(h=>o(h));return}},l=c=>{if(c)switch(c.k){case"block":c.body.forEach(l);return;case"expr":o(c.e);return;case"print":{c.printf&&c.args[0]?.k==="str"&&[...c.args[0].v.matchAll(/%[-+ #0]*(?:\*|\d+)?(?:\.\d*)?([a-zA-Z%])/g)].map(h=>h[1]).filter(h=>h!=="%").forEach((h,d)=>{/[dioxXeEfFgGu]/.test(h)&&c.args[d+1]&&n(c.args[d+1])}),c.args.forEach(u=>o(u));return}case"if":o(c.c,!0),l(c.t),l(c.f);return;case"while":case"do":o(c.c,!0),l(c.body);return;case"for":l(c.init),o(c.c),l(c.inc),l(c.body);return;case"forin":l(c.body);return;case"exit":case"return":o(c.e);return;case"delete":c.subs?.forEach(u=>o(u));return}};for(let c of s.rules)o(c.pattern,!0),o(c.pattern2,!0),l(c.action);for(let c of s.funcs.values())l(c.body);return e}var po=[["apple","banana","cherry","grape"],["red","yellow","green","purple"],["tokyo","osaka","kyoto","nara"],["alpha","beta","gamma","delta"],["north","south","east","west"],["one","two","three","four"]];function fo(s){if(!s.length)return[3,12,7,25];let e=s[0];if(e===0)return[-2,3,5,0];let t=[.8,1.2,1.5,.5].map(n=>e*n);return Number.isInteger(e)?t.map(Math.round):t.map(n=>Math.round(n*100)/100)}function Jt(s,e={}){let t=sr(s);if(!t)return;let n=ho(t),r=t.rules.every(u=>u.begin),a=e.fs??n.fsAssigned??" ",o=a===" "?" ":a==="\\t"||a===" "?" ":a.length===1?a:/^\[(.)/.exec(a)?.[1]??" ",l;if(r)l=[];else if(n.maxField===0&&!n.usesNF){let u=[];for(let h of n.regexes.get(0)??[]){let d=be(h,2);d&&u.push(...d.matching.filter(p=>!p.startsWith("abc ")).slice(0,1))}l=["line one",...u,"a somewhat longer line of text","line two"],n.counts&&l.push(l[1])}else{let u=Math.min(Math.max(n.maxField,3),6),h=4,d=[];for(let p=0;p<h;p++){let f=[];for(let m=1;m<=u;m++)f.push(n.numeric.has(m)?String(fo(n.numeric.get(m))[p]):po[m-1][p]);d.push(f)}for(let[p,f]of n.regexes){let m=/\$$/.test(f[0].source)&&!/\\\$$/.test(f[0].source),g=p===-1||p===0&&m?u-1:Math.max(p,1)-1;if(g>=u)continue;let _=be(f[0],3);if(!_)continue;let b=_.matching.filter(w=>!w.includes(o)&&!w.startsWith("abc "));b[0]&&(d[0][g]=b[0]),(b[1]??b[0])&&(d[2][g]=b[1]??b[0])}l=d.map(p=>p.join(o)),n.counts&&l.push(l[0])}let c=_t(s,l,{fs:e.fs,vars:e.vars});if(c)return{input:l,output:c.length>6?[...c.slice(0,5),"\u2026"]:c}}var U=class extends Error{},mo=["<=>","**=","||=","//=","&&=","...","**","++","--","+=","-=","*=","/=",".=","%=","x=","==","!=","<=",">=","=~","!~","&&","||","//","..","->","=>","+","-","*","/","%",".","<",">","=","!","?",":",",",";","(",")","{","}","[","]","\\"],ir={"{":"}","(":")","[":"]","<":">"};function tt(s,e,t){let n=ir[t]??t,r=1,a=e,o="";for(;a<s.length;){let l=s[a];if(l==="\\"&&a+1<s.length){o+=s[a+1]===n||s[a+1]===t?t==="/"?"\\/":s[a+1]:l+s[a+1],a+=2;continue}if(t!==n&&l===t)r++;else if(l===n&&--r===0)return[o,a+1];o+=l,a++}throw new U("unterminated")}function An(s){let e=[],t=0,n=()=>{let r=e[e.length-1];return r?r.t==="op"?!/^[)\]}]$/.test(r.v)&&r.v!=="++"&&r.v!=="--":r.t==="word"?["if","unless","and","or","not","split","grep","return","print","say","while","until","push","join"].includes(r.v):!1:!0};for(;t<s.length;){let r=s[t];if(/\s/.test(r)){t++;continue}if(r==="#"){for(;t<s.length&&s[t]!==`
17
- `;)t++;continue}let a;if(a=/^\d+(\.\d+)?([eE][-+]?\d+)?/.exec(s.slice(t))){e.push({t:"num",v:a[0]}),t+=a[0].length;continue}if(a=/^[$@%](\{\w+\}|\w+|[_.,\\/&0!])/.exec(s.slice(t))){e.push({t:"var",v:a[0][0]+a[1].replace(/^\{|\}$/g,"")}),t+=a[0].length;continue}if(r==="'"){let[l,c]=tt(s,t+1,"'");e.push({t:"str",v:l.replace(/\\(['\\])/g,"$1")}),t=c;continue}if(r==='"'){let[l,c]=tt(s,t+1,'"');e.push({t:"istr",v:l}),t=c;continue}if((a=/^(s|tr|y|m|qr|qw|q|qq)\s*([^\w\s])/.exec(s.slice(t)))&&!/\w/.test(s[t-1]??"")&&(a[1]!=="y"||n()||s[t+1]!==" ")){let l=a[1],c=a[2],[u,h]=tt(s,t+a[0].length,c);if(l==="s"||l==="tr"||l==="y"){let p;if(ir[c]){for(;/\s/.test(s[h]);)h++;[p,h]=tt(s,h+1,s[h])}else[p,h]=tt(s,h,c);let f=/^[a-z]*/.exec(s.slice(h))[0];e.push({t:l==="s"?"subst":"tr",v:l,pat:u,rep:p,flags:f}),t=h+f.length;continue}let d=/^[a-z]*/.exec(s.slice(h))[0];l==="qw"?e.push({t:"qw",v:u}):l==="q"?e.push({t:"str",v:u}):l==="qq"?e.push({t:"istr",v:u}):e.push({t:"re",v:l,pat:u,flags:d}),t=h+d.length;continue}if(r==="/"&&n()){let[l,c]=tt(s,t+1,"/"),u=/^[a-z]*/.exec(s.slice(c))[0];e.push({t:"re",v:"m",pat:l,flags:u}),t=c+u.length;continue}if(a=/^[A-Za-z_]\w*(::\w+)*/.exec(s.slice(t))){e.push({t:"word",v:a[0]}),t+=a[0].length;continue}if(s.startsWith("<>",t)||s.startsWith("<STDIN>",t))throw new U("reading input");let o=mo.find(l=>s.startsWith(l,t));if(!o)throw new U(`char ${r}`);e.push({t:"op",v:o}),t+=o.length}return e}var go=new Set(["length","uc","lc","ucfirst","lcfirst","chomp","chop","defined","abs","int","sqrt","keys","values","scalar","exists","delete","chr","ord","reverse"]),_o=new Set(["print","say","printf","join","split","sprintf","substr","index","push","sort","reverse","die","warn","lc","uc"]),Bt=class{constructor(e){this.toks=e}toks;p=0;peek(e){let t=this.toks[this.p];return e===void 0||t&&(t.t==="op"||t.t==="word")&&t.v===e?t:void 0}next(){let e=this.toks[this.p++];if(!e)throw new U("end");return e}expect(e){if(!this.peek(e))throw new U(`expected ${e}`);this.p++}program(){let e=[],t=[],n=[];for(;this.p<this.toks.length;){if(this.peek(";")){this.p++;continue}if((this.peek("BEGIN")||this.peek("END"))&&this.toks[this.p+1]?.v==="{"){(this.next().v==="BEGIN"?e:n).push(...this.block());continue}t.push(this.statement())}return{begin:e,main:t,end:n}}block(){this.expect("{");let e=[];for(;!this.peek("}");){if(this.peek(";")){this.p++;continue}e.push(this.statement())}return this.p++,e}statement(){let e=this.peek();if(e?.t==="word"&&(e.v==="if"||e.v==="unless")){this.p++,this.expect("(");let n=this.expr();this.expect(")");let r=this.block(),a;if(this.peek("elsif"))throw new U("elsif");return this.peek("else")&&(this.p++,a=this.block()),{k:"if",c:n,t:r,f:a,unless:e.v==="unless"}}if(e?.t==="word"&&(e.v==="for"||e.v==="foreach")){this.p++;let n;this.peek("my")&&this.p++,this.toks[this.p]?.t==="var"&&(n=this.next().v.slice(1)),this.expect("(");let r=this.expr();return this.expect(")"),{k:"for",v:n,list:r,body:this.block()}}let t;if(this.peek("next")?(this.p++,t={k:"next"}):this.peek("last")?(this.p++,t={k:"last"}):t={k:"expr",e:this.expr()},this.peek("if")||this.peek("unless")){let n=this.next().v;t={k:"if",c:this.expr(),t:[t],unless:n==="unless"}}else(this.peek("for")||this.peek("foreach"))&&(this.p++,t={k:"for",list:this.expr(),body:[t]});if(this.peek(";"))this.p++;else if(!this.peek("}")&&this.p<this.toks.length)throw new U("expected ;");return t}expr(){let e=this.lowAnd();for(;this.peek("or");)this.p++,e={k:"bin",op:"||",l:e,r:this.lowAnd()};return e}lowAnd(){let e=this.lowNot();for(;this.peek("and");)this.p++,e={k:"bin",op:"&&",l:e,r:this.lowNot()};return e}lowNot(){return this.peek("not")?(this.p++,{k:"un",op:"!",e:this.lowNot()}):this.comma()}comma(){let e=this.assign();if(!this.peek(",")&&!this.peek("=>"))return e;let t=[e];for(;(this.peek(",")||this.peek("=>"))&&(this.p++,!this.atListEnd());)t.push(this.assign());return{k:"list",items:t}}atListEnd(){let e=this.peek();return!e||[";",")","}","]"].includes(e.v)||e.t==="word"&&["if","unless","for","foreach","or","and"].includes(e.v)}assign(){let e=this.ternary(),t=this.peek();return t?.t==="op"&&["=","+=","-=","*=","/=",".=","%=","x=","**=","||=","//=","&&="].includes(t.v)?(this.p++,{k:"assign",op:t.v,l:e,r:this.assign()}):e}ternary(){let e=this.range();if(!this.peek("?"))return e;this.p++;let t=this.assign();return this.expect(":"),{k:"cond",c:e,a:t,b:this.assign()}}range(){let e=this.oror();return this.peek("..")?(this.p++,{k:"bin",op:"..",l:e,r:this.oror()}):e}oror(){let e=this.andand();for(;this.peek("||")||this.peek("//");)e={k:"bin",op:this.next().v,l:e,r:this.andand()};return e}andand(){let e=this.equality();for(;this.peek("&&");)this.p++,e={k:"bin",op:"&&",l:e,r:this.equality()};return e}equality(){let e=this.relational();for(;;){let t=this.peek();if(!t||!["==","!=","<=>","eq","ne","cmp"].includes(t.v))return e;this.p++,e={k:"bin",op:t.v,l:e,r:this.relational()}}}relational(){let e=this.additive();for(;;){let t=this.peek();if(!t||!["<",">","<=",">=","lt","gt","le","ge"].includes(t.v))return e;this.p++,e={k:"bin",op:t.v,l:e,r:this.additive()}}}additive(){let e=this.multiplicative();for(;this.peek("+")||this.peek("-")||this.peek(".");)e={k:"bin",op:this.next().v,l:e,r:this.multiplicative()};return e}multiplicative(){let e=this.bind();for(;this.peek("*")||this.peek("/")||this.peek("%")||this.peek("x");)e={k:"bin",op:this.next().v,l:e,r:this.bind()};return e}bind(){let e=this.unary();if(this.peek("=~")||this.peek("!~")){let t=this.next().v==="!~",n=this.unary();if(n.k==="match")return{...n,target:e,neg:t!==n.neg};if(n.k==="subst"&&!t)return{...n,target:e};if(n.k==="tr"&&!t)return{...n,target:e};throw new U("dynamic =~")}return e}unary(){return this.peek("!")?(this.p++,{k:"un",op:"!",e:this.unary()}):this.peek("-")?(this.p++,{k:"un",op:"-",e:this.unary()}):this.peek("+")?(this.p++,this.unary()):this.power()}power(){let e=this.incdec();return this.peek("**")?(this.p++,{k:"bin",op:"**",l:e,r:this.unary()}):e}incdec(){if(this.peek("++")||this.peek("--"))return{k:"incr",op:this.next().v,pre:!0,e:this.primary()};let e=this.primary();return this.peek("++")||this.peek("--")?{k:"incr",op:this.next().v,pre:!1,e}:e}regex(e,t){if(/[^gimsxr]/.test(t)||t.includes("x"))throw new U("regex flags");let n=ie(e,"pcre",{ignoreCase:t.includes("i")});if(!n||/\$\w|@\w/.test(e.replace(/\\./g,"").replace(/\$$/,"")))throw new U("regex");return{source:n.source,flags:n.flags+(t.includes("m")?"m":"")+(t.includes("s")?"s":"")}}primary(){let e=this.next();switch(e.t){case"num":return{k:"num",v:Number(e.v)};case"str":return{k:"str",v:e.v};case"istr":return{k:"istr",v:e.v};case"qw":return{k:"list",items:e.v.trim().split(/\s+/).filter(Boolean).map(t=>({k:"str",v:t}))};case"re":return{k:"match",re:this.regex(e.pat,e.flags),neg:!1,global:e.flags.includes("g")};case"subst":if(/[^gimsre]/.test(e.flags))throw new U("s flags");return{k:"subst",re:this.regex(e.pat,e.flags.replace(/[re]/g,"")),rep:e.rep,global:e.flags.includes("g"),ret:e.flags.includes("r"),evalRep:e.flags.includes("e")};case"tr":return{k:"tr",from:e.pat,to:e.rep,flags:e.flags};case"var":{let t=e.v[0],n=e.v.slice(1);if(t==="$"&&this.peek("[")){this.p++;let r=this.expr();return this.expect("]"),{k:"elem",name:n,idx:r}}if(t==="$"&&this.peek("{")){this.p++;let r=this.toks[this.p],a=r?.t==="word"&&this.toks[this.p+1]?.v==="}"?(this.p++,{k:"str",v:r.v}):this.expr();return this.expect("}"),{k:"helem",name:n,key:a}}return t==="@"?{k:"array",name:n}:t==="%"?{k:"hash",name:n}:{k:"scalar",name:n}}case"word":{let t=e.v;if(t==="my")return this.primary();if(t==="STDERR"||t==="STDOUT")throw new U("filehandle");if(t==="sort"&&this.peek("{")){let n=this.block(),r=this.atListEnd()?[]:[this.comma()];return{k:"call",name:t,args:r,block:n}}if(this.peek("(")){this.p++;let n=this.peek(")")?[]:[this.expr()];return this.expect(")"),{k:"call",name:t,args:rr(n)}}if(go.has(t))return this.atListEnd()||this.peek("=")||this.peek(".")||this.peek("==")||this.peek(">")||this.peek("<")||this.peek("+")||this.peek("-")||this.peek("?")||this.peek("eq")||this.peek(",")?{k:"call",name:t,args:[]}:{k:"call",name:t,args:[this.unary()]};if(_o.has(t)||["next","last"].includes(t)){let n=this.atListEnd()?[]:[this.comma()];return{k:"call",name:t,args:rr(n)}}throw new U(`function ${t}`)}case"op":if(e.v==="("){if(this.peek(")"))return this.p++,{k:"list",items:[]};let t=this.expr();return this.expect(")"),t.k==="list"?t:{k:"list",items:[t]}}}throw new U(`unexpected ${e.v}`)}};function rr(s){return s.length===1&&s[0].k==="list"?s[0].items:s}function F(s){if(typeof s=="number")return s;let e=/^\s*[-+]?(\d+\.?\d*|\.\d+)([eE][-+]?\d+)?/.exec(s??"");return e?Number(e[0]):0}function E(s){return s===void 0?"":typeof s=="number"?Number.isInteger(s)&&Math.abs(s)<1e15?String(s):ge("%.15g",[s]):s}var ze=s=>s!==void 0&&s!==""&&s!=="0"&&s!==0,st=class{},nt=class{},Rn=class{scalars=new Map;arrays=new Map;hashes=new Map;out="";caps=[];steps=0;tick(){if(++this.steps>1e5)throw new U("too many steps")}arr(e){let t=this.arrays.get(e);return t||(t=[],this.arrays.set(e,t)),t}hash(e){let t=this.hashes.get(e);return t||(t=new Map,this.hashes.set(e,t)),t}scalar(e){return/^\d+$/.test(e)&&e!=="0"?this.caps[Number(e)]:e==="&"?this.caps[0]:this.scalars.get(e)}interpolate(e){let t={n:`
18
- `,t:" ",r:"\r","\\":"\\",'"':'"',$:"$","@":"@",e:"\x1B",a:"\x07",0:"\0"},n=e.replace(/\\([ULulEQ])/g,"$1").replace(/\\(.)|\$\{(\w+)\}|\$(\w+|&|\.(?!\w))(?:\[(-?\d+|\$\w+)\]|\{(\w+|\$\w+)\})?|@(\w+)/g,(l,c,u,h,d,p,f)=>{if(c!==void 0)return t[c]??c;if(u)return E(this.scalar(u));if(f)return this.arrays.has(f)?this.arr(f).map(E).join(" "):l;if(d!==void 0){let m=/^\$/.test(d)?F(this.scalar(d.slice(1))):Number(d),g=this.arr(h);return E(g[m<0?g.length+m:m])}return E(p!==void 0?this.hash(h).get(/^\$/.test(p)?E(this.scalar(p.slice(1))):p):this.scalar(h))});if(!n.includes(""))return n;let r="",a="",o="";for(let l=0;l<n.length;l++){if(n[l]===""){let u=n[++l];if(u==="U"||u==="L")a=u;else if(u==="E")a="";else if(u==="u"||u==="l")o=u;else if(u==="Q")throw new U("\\Q");continue}let c=a==="U"?n[l].toUpperCase():a==="L"?n[l].toLowerCase():n[l];o&&(c=o==="u"?c.toUpperCase():c.toLowerCase(),o=""),r+=c}return r}lvalueSet(e,t){switch(e.k){case"scalar":return this.scalars.set(e.name,t),t;case"elem":{let n=this.arr(e.name),r=F(this.ev(e.idx));return n[r<0?n.length+r:r]=t,t}case"helem":return this.hash(e.name).set(E(this.ev(e.key)),t),t}throw new U("lvalue")}list(e){switch(e.k){case"list":return e.items.flatMap(t=>this.list(t));case"array":return[...this.arr(e.name)];case"hash":return[...this.hash(e.name)].flat();case"call":return e.name==="keys"?[...this.hashOf(e.args[0]).keys()]:e.name==="values"?[...this.hashOf(e.args[0]).values()]:e.name==="split"?this.split(e):e.name==="sort"?this.sort(e):e.name==="reverse"?e.args.flatMap(t=>this.list(t)).reverse():[this.ev(e)];case"bin":if(e.op===".."){let t=F(this.ev(e.l)),n=F(this.ev(e.r));if(n-t>1e3)throw new U("long range");return Array.from({length:Math.max(0,n-t+1)},(r,a)=>t+a)}return[this.ev(e)];case"match":if(e.global){let t=new RegExp(e.re.source,e.re.flags.replace("g","")+"g");return[...E(e.target?this.ev(e.target):this.scalar("_")).matchAll(t)].map(n=>n.length>1?n[1]:n[0])}return[this.ev(e)];default:return[this.ev(e)]}}hashOf(e){if(e?.k!=="hash")throw new U("keys of non-hash");return this.hash(e.name)}split(e){let[t,n,r]=e.args,a=E(n?this.ev(n):this.scalar("_")),o;if(t.k==="str"&&t.v===" "?o=a.replace(/^\s+/,"").split(/\s+/):t.k==="match"?o=a.split(new RegExp(t.re.source,t.re.flags)):o=a.split(E(this.ev(t))),r)throw new U("split limit");for(;o.length&&o[o.length-1]==="";)o.pop();return o}sort(e){let t=e.args.flatMap(n=>this.list(n));return e.block?[...t].sort((n,r)=>{this.scalars.set("a",n),this.scalars.set("b",r);let a=0;for(let o of e.block)o.k==="expr"&&(a=this.ev(o.e));return F(a)}):[...t].sort((n,r)=>E(n)<E(r)?-1:E(n)>E(r)?1:0)}ev(e){switch(this.tick(),e.k){case"num":return e.v;case"str":return e.v;case"istr":return this.interpolate(e.v);case"scalar":return this.scalar(e.name);case"array":return this.arr(e.name).length;case"hash":return this.hash(e.name).size;case"elem":{let t=this.arr(e.name),n=F(this.ev(e.idx));return t[n<0?t.length+n:n]}case"helem":return this.hash(e.name).get(E(this.ev(e.key)));case"list":{let t;for(let n of e.items)t=this.ev(n);return t}case"match":{let t=E(e.target?this.ev(e.target):this.scalar("_")),n=new RegExp(e.re.source,e.re.flags.replace("g","")).exec(t);return n&&(this.caps=[...n]),!!n!==e.neg?1:""}case"subst":{let t=e.target??{k:"scalar",name:"_"},n=E(this.ev(t)),r=0,a=new RegExp(e.re.source,e.re.flags+(e.global?"g":"")),o=n.replace(a,(...l)=>{r++;let c=l.slice(0,-2).filter(u=>typeof u=="string"||u===void 0);if(this.caps=c,e.evalRep){let u=new Bt(An(e.rep));return E(this.ev(u.expr()))}return this.interpolate(e.rep)});return e.ret?o:(r&&this.lvalueSet(t,o),r||"")}case"tr":{let t=e.target??{k:"scalar",name:"_"};if(/[^dsrc]/.test(e.flags)||e.flags.includes("c"))throw new U("tr flags");let n=c=>c.replace(/(.)-(.)/g,(u,h,d)=>Array.from({length:d.charCodeAt(0)-h.charCodeAt(0)+1},(p,f)=>String.fromCharCode(h.charCodeAt(0)+f)).join("")),r=[...n(e.from)],a=[...n(e.to)];!a.length&&!e.flags.includes("d")&&(a=r);let o=0,l="";for(let c of E(this.ev(t))){let u=r.indexOf(c);if(u<0){l+=c;continue}o++,u<a.length?l+=a[u]:e.flags.includes("d")||(l+=a[a.length-1]??c)}return e.flags.includes("s")&&(l=l.replace(/(.)\1+/g,(c,u)=>a.includes(u)?u:c)),e.flags.includes("r")?l:(this.lvalueSet(t,l),o)}case"un":return e.op==="!"?ze(this.ev(e.e))?1:"":-F(this.ev(e.e));case"cond":return ze(this.ev(e.c))?this.ev(e.a):this.ev(e.b);case"incr":{let t=this.ev(e.e),n=F(t)+(e.op==="++"?1:-1);return this.lvalueSet(e.e,n),e.pre?n:F(t)}case"assign":{if(e.op==="="){if(e.l.k==="array")return this.arrays.set(e.l.name,this.list(e.r)),this.arr(e.l.name).length;if(e.l.k==="list")throw new U("list assignment");return this.lvalueSet(e.l,this.ev(e.r))}let t=this.ev(e.l);return e.op==="||="?ze(t)?t:this.lvalueSet(e.l,this.ev(e.r)):e.op==="//="?t!==void 0?t:this.lvalueSet(e.l,this.ev(e.r)):e.op==="&&="?ze(t)?this.lvalueSet(e.l,this.ev(e.r)):t:this.lvalueSet(e.l,this.binop(e.op.slice(0,-1),t,this.ev(e.r)))}case"bin":if(e.op==="..")throw new U("flip-flop");if(e.op==="&&"){let t=this.ev(e.l);return ze(t)?this.ev(e.r):t}if(e.op==="||"){let t=this.ev(e.l);return ze(t)?t:this.ev(e.r)}if(e.op==="//"){let t=this.ev(e.l);return t!==void 0?t:this.ev(e.r)}return this.binop(e.op,this.ev(e.l),this.ev(e.r));case"call":return this.call(e)}}binop(e,t,n){switch(e){case"+":return F(t)+F(n);case"-":return F(t)-F(n);case"*":return F(t)*F(n);case"/":if(F(n)===0)throw new U("division by zero");return F(t)/F(n);case"%":if(Math.trunc(F(n))===0)throw new U("division by zero");return(Math.trunc(F(t))%Math.trunc(F(n))+Math.trunc(F(n)))%Math.trunc(F(n));case"**":return F(t)**F(n);case".":return E(t)+E(n);case"x":return E(t).repeat(Math.max(0,Math.trunc(F(n))));case"==":return F(t)===F(n)?1:"";case"!=":return F(t)!==F(n)?1:"";case"<":return F(t)<F(n)?1:"";case">":return F(t)>F(n)?1:"";case"<=":return F(t)<=F(n)?1:"";case">=":return F(t)>=F(n)?1:"";case"<=>":return Math.sign(F(t)-F(n));case"eq":return E(t)===E(n)?1:"";case"ne":return E(t)!==E(n)?1:"";case"lt":return E(t)<E(n)?1:"";case"gt":return E(t)>E(n)?1:"";case"le":return E(t)<=E(n)?1:"";case"ge":return E(t)>=E(n)?1:"";case"cmp":return E(t)<E(n)?-1:E(t)>E(n)?1:0}throw new U(e)}call(e){let t=e.args,n=()=>t.length?this.ev(t[0]):this.scalar("_");switch(e.name){case"print":case"say":{let r=t.length?t.flatMap(a=>this.list(a)):[this.scalar("_")];return this.out+=r.map(E).join(E(this.scalars.get(",")))+(e.name==="say"?`
19
- `:E(this.scalars.get("\\"))),1}case"printf":{let r=t.flatMap(a=>this.list(a));return this.out+=ge(E(r[0]),r.slice(1).map(a=>(typeof a=="string"&&/^\s*-?\d/.test(a),a))),1}case"sprintf":{let r=t.flatMap(a=>this.list(a));return ge(E(r[0]),r.slice(1))}case"length":return t.length||this.scalar("_")!==void 0?E(n()).length:void 0;case"uc":return E(n()).toUpperCase();case"lc":return E(n()).toLowerCase();case"ucfirst":{let r=E(n());return r.charAt(0).toUpperCase()+r.slice(1)}case"lcfirst":{let r=E(n());return r.charAt(0).toLowerCase()+r.slice(1)}case"chomp":{let r=t[0]??{k:"scalar",name:"_"},a=E(this.ev(r));return a.endsWith(`
20
- `)?(this.lvalueSet(r,a.slice(0,-1)),1):0}case"defined":return n()!==void 0?1:"";case"abs":return Math.abs(F(n()));case"int":return Math.trunc(F(n()));case"sqrt":return Math.sqrt(F(n()));case"chr":return String.fromCharCode(F(n()));case"ord":return E(n()).charCodeAt(0)||0;case"scalar":return t[0]?.k==="array"?this.arr(t[0].name).length:this.ev(t[0]);case"reverse":return[...t.length?t.flatMap(r=>this.list(r)).map(E).join(""):E(this.scalar("_"))].reverse().join("");case"join":{let r=t.flatMap(a=>this.list(a));return r.slice(1).map(E).join(E(r[0]))}case"substr":{let r=E(this.ev(t[0])),a=F(this.ev(t[1]));return a<0&&(a=r.length+a),t[2]?r.substr(a,F(this.ev(t[2]))):r.slice(a)}case"index":return E(this.ev(t[0])).indexOf(E(this.ev(t[1])));case"exists":{let r=t[0];if(r?.k!=="helem")throw new U("exists");return this.hash(r.name).has(E(this.ev(r.key)))?1:""}case"delete":{let r=t[0];if(r?.k!=="helem")throw new U("delete");let a=E(this.ev(r.key)),o=this.hash(r.name).get(a);return this.hash(r.name).delete(a),o}case"push":{if(t[0]?.k!=="array")throw new U("push");let r=this.arr(t[0].name);return r.push(...t.slice(1).flatMap(a=>this.list(a))),r.length}case"keys":return this.hashOf(t[0]).size;case"split":return this.split(e).length;case"next":throw new st;case"last":throw new nt}throw new U(`function ${e.name}`)}exec(e){switch(this.tick(),e.k){case"expr":this.ev(e.e);return;case"block":e.body.forEach(t=>this.exec(t));return;case"next":throw new st;case"last":throw new nt;case"if":{ze(this.ev(e.c))!==!!e.unless?e.t.forEach(n=>this.exec(n)):e.f?.forEach(n=>this.exec(n));return}case"for":{let t=this.list(e.list),n=e.v??"_",r=this.scalars.get(n);try{for(let a of t)this.scalars.set(n,a),e.body.forEach(o=>this.exec(o))}catch(a){if(!(a instanceof nt))throw a}finally{this.scalars.set(n,r)}}}}};function bt(s){let e={},t=[];for(let n=0;n<s.length;n++){let r=s[n];if(r===void 0)return;if(!r.startsWith("-")||r==="-"||r==="--")break;for(let a=1;a<r.length;a++){let o=r[a];if(o==="e"||o==="E"){let l=a+1<r.length?r.slice(a+1):s[++n];if(l===void 0)return;t.push(l);break}if(o==="n")e.loop=e.loop??"n";else if(o==="p")e.loop="p";else if(o==="l"){if(e.chompL=!0,/^\d/.test(r.slice(a+1)))return}else if(o==="a")e.autosplit=!0,e.loop=e.loop??"n";else if(o==="F"){e.fieldSep=r.slice(a+1).replace(/^\/(.*)\/$/,"$1").replace(/^(['"])(.*)\1$/,"$2"),e.autosplit=!0,e.loop=e.loop??"n";break}else{if(o==="i")break;if(o==="w"||o==="s"&&!1)continue;return}}}return t.length?{opts:e,code:t.join(`
21
- `)}:void 0}function rt(s,e,t){let n;try{n=new Bt(An(s)).program()}catch(l){if(l instanceof U)return;throw l}let r=new Rn;r.scalars.set(",",""),r.scalars.set("\\",e.chompL?`
13
+ `;)s[t]==="\\"?t++:s[t]==="["?c=!0:s[t]==="]"&&(c=!1),t++;t=Math.min(t+1,s.length),e.push({type:"regex",text:s.slice(a,t),start:a,end:t});continue}let o;if(o=/^(\d+\.?\d*|\.\d+)([eE][-+]?\d+)?/.exec(s.slice(t))){t+=o[0].length,e.push({type:"num",text:o[0],start:a,end:t});continue}if(o=/^[A-Za-z_][A-Za-z0-9_]*/.exec(s.slice(t))){t+=o[0].length,e.push({type:co.has(o[0])?"kw":"ident",text:o[0],start:a,end:t});continue}let l=uo.find(c=>s.startsWith(c,t))??r;t+=l.length,e.push({type:"op",text:l,start:a,end:t})}return e}var Fn=class{constructor(e,t,n){this.src=e;this.toks=t;this.lang=n;this.s=O(n)}src;toks;lang;s;p=0;program(){let e=[];for(;this.p<this.toks.length;){let t=this.toks[this.p];if(t.type==="nl"||t.text===";"){this.p++;continue}e.push(t.text==="function"||t.text==="func"?this.functionDef():this.rule())}return e}tok(e,t,n,r,a=[]){return{start:e,end:t,kind:n,explanation:r,children:a}}text(e){return e.length?this.src.slice(e[0].start,e[e.length-1].end):""}matching(e){let t=this.toks[e].text,n=t==="{"?"}":t==="("?")":"]",r=0;for(let a=e;a<this.toks.length;a++)if(this.toks[a].text===t)r++;else if(this.toks[a].text===n&&--r===0)return a;return this.toks.length-1}rule(){let{s:e}=this,t=this.p;for(;this.p<this.toks.length&&this.toks[this.p].text!=="{"&&this.toks[this.p].type!=="nl"&&this.toks[this.p].text!==";";)["(","["].includes(this.toks[this.p].text)&&(this.p=this.matching(this.p)),this.p++;let n=this.toks.slice(t,this.p),r,a=n[n.length-1]?.end??0;if(this.toks[this.p]?.text==="{"){let h=this.matching(this.p);r=this.block(this.p,h),a=this.toks[h].end,this.p=h+1}let o=[],l="";if(n.length){let h=this.pattern(n);o.push(h.token),l=h.when}r&&o.push(r);let c=(n[0]??this.toks[t]).start,u;if(!r)u=e(`${l}\u3092\u51FA\u529B\u3059\u308B\uFF08\u30A2\u30AF\u30B7\u30E7\u30F3\u3092\u7701\u7565\u3059\u308B\u3068 \`print\` \u3068\u540C\u3058\uFF09`,`print ${l} (no action means \`print\`)`);else if(n.length)n[0].text==="BEGIN"||n[0].text==="END"?u=n[0].text==="BEGIN"?e("\u6700\u521D\u306E\u884C\u3092\u8AAD\u3080\u524D\u306B1\u56DE\u3060\u3051 `{ }` \u5185\u3092\u5B9F\u884C\u3059\u308B\uFF08\u521D\u671F\u5316\u306A\u3069\uFF09","run `{ }` once before reading any input (setup)"):e("\u3059\u3079\u3066\u306E\u884C\u3092\u8AAD\u307F\u7D42\u3048\u305F\u5F8C\u306B1\u56DE\u3060\u3051 `{ }` \u5185\u3092\u5B9F\u884C\u3059\u308B\uFF08\u96C6\u8A08\u7D50\u679C\u306E\u51FA\u529B\u306A\u3069\uFF09","run `{ }` once after all input is read (e.g. print totals)"):u=e(`${l}\u306B\u5BFE\u3057\u3066 \`{ }\` \u5185\u3092\u5B9F\u884C\u3059\u308B`,`run \`{ }\` for ${l}`);else return{...r,explanation:e("\u30EB\u30FC\u30EB: \u3059\u3079\u3066\u306E\u884C\u306B\u5BFE\u3057\u3066 `{ }` \u5185\u306E\u6587\u3092\u9806\u306B\u5B9F\u884C\u3059\u308B","Rule: run the statements in `{ }` for every line")};return this.tok(c,a,"block",e("\u30EB\u30FC\u30EB: ","Rule: ")+u,o)}pattern(e){let{s:t}=this,n=this.text(e),r=e[0].start,a=e[e.length-1].end;if(e.length===1&&(n==="BEGIN"||n==="END"||n==="BEGINFILE"||n==="ENDFILE")){let l={BEGIN:["`BEGIN`: \u5165\u529B\u3092\u8AAD\u3080\u524D","`BEGIN`: before any input"],END:["`END`: \u3059\u3079\u3066\u306E\u5165\u529B\u3092\u8AAD\u3093\u3060\u5F8C","`END`: after all input"],BEGINFILE:["`BEGINFILE`: \u5404\u30D5\u30A1\u30A4\u30EB\u3092\u8AAD\u3080\u524D\uFF08GNU awk\uFF09","`BEGINFILE`: before each file (GNU awk)"],ENDFILE:["`ENDFILE`: \u5404\u30D5\u30A1\u30A4\u30EB\u3092\u8AAD\u3093\u3060\u5F8C\uFF08GNU awk\uFF09","`ENDFILE`: after each file (GNU awk)"]};return{token:this.tok(r,a,"keyword",t(l[n][0],l[n][1])),when:""}}let o=e.findIndex(l=>l.text===",");if(o>0){let l=this.pattern(e.slice(0,o)),c=this.pattern(e.slice(o+1)),u=t(`${l.when}\u304B\u3089 ${c.when}\u307E\u3067\u306E\u7BC4\u56F2\u306E\u884C`,`lines from ${l.when} through ${c.when}`);return{token:this.tok(r,a,"pattern",t(`\u7BC4\u56F2\u30D1\u30BF\u30FC\u30F3: ${u}`,`Range pattern: ${u}`),[l.token,this.tok(e[o].start,e[o].end,"operator",t("`,`: \u7BC4\u56F2\uFF08\u5DE6\u306B\u4E00\u81F4\u3057\u305F\u884C\u304B\u3089\u53F3\u306B\u4E00\u81F4\u3057\u305F\u884C\u307E\u3067\uFF09","`,`: a range from the first match to the second")),c.token]),when:u}}if(/^!\s*([A-Za-z_]\w*)\[\$0\]\+\+$/.test(n))return{token:this.tok(r,a,"pattern",t("\u91CD\u8907\u884C\u3092\u9664\u304F\u5B9A\u756A\u306E\u66F8\u304D\u65B9: \u914D\u5217\u3067\u5404\u884C\u306E\u51FA\u73FE\u56DE\u6570\u3092\u6570\u3048\u3001\u521D\u3081\u3066\u51FA\u3066\u304D\u305F\u884C\u3060\u3051\u3092\u5BFE\u8C61\u306B\u3059\u308B","The classic dedupe idiom: count each line in an array and select only its first occurrence"),this.atoms(e)),when:t("\u521D\u3081\u3066\u51FA\u3066\u304D\u305F\u884C","the first occurrence of each line")};if(e.length===1&&e[0].type==="regex"){let l=e[0].text.slice(1,-1);return{token:this.regexToken(e[0],t(`\u6B63\u898F\u8868\u73FE \`${l}\` \u306B\u4E00\u81F4\u3059\u308B\u884C`,`Lines matching the regex \`${l}\``)),when:t(`\`${l}\` \u306B\u4E00\u81F4\u3059\u308B\u884C`,`lines matching \`${l}\``)}}return e.length===1&&e[0].type==="num"?{token:this.tok(r,a,"pattern",t(`\`${n}\`: \u5E38\u306B\u771F\uFF080 \u4EE5\u5916\u306E\u6570\u5024\uFF09`,`\`${n}\`: always true (non-zero)`)),when:n==="0"?t("\u3069\u306E\u884C\u3082","no lines"):t("\u3059\u3079\u3066\u306E\u884C","every line")}:{token:this.tok(r,a,"pattern",t(`\u6761\u4EF6 \`${n}\` \u304C\u771F\uFF080 \u3084\u7A7A\u6587\u5B57\u4EE5\u5916\uFF09\u306B\u306A\u308B\u884C`,`Lines where \`${n}\` is true (not 0 or empty)`),this.atoms(e)),when:t(`\`${n}\` \u304C\u771F\u306B\u306A\u308B\u884C`,`lines where \`${n}\` is true`)}}regexToken(e,t){let n=e.text.endsWith("/")&&e.text.length>1?e.text.slice(1,-1):e.text.slice(1);return this.tok(e.start,e.end,"pattern",t,ke(Ne(n,"ere",this.lang),e.start+1))}functionDef(){let{s:e}=this,t=this.toks[this.p++],n=this.toks[this.p++];for(;this.p<this.toks.length&&this.toks[this.p].text!=="{";)this.p++;if(this.p>=this.toks.length)return this.tok(t.start,n?.end??t.end,"error",e("\u95A2\u6570\u5B9A\u7FA9\u304C\u4E0D\u5B8C\u5168","Incomplete function definition"));let r=this.matching(this.p),a=this.block(this.p,r);return this.p=r+1,this.tok(t.start,this.toks[r].end,"function",e(`\u95A2\u6570 \`${n?.text}\` \u3092\u5B9A\u7FA9\u3059\u308B`,`Defines the function \`${n?.text}\``),[a])}block(e,t){let{s:n}=this,r=[],a=e+1;for(;a<t;){let o=this.toks[a];if(o.type==="nl"||o.text===";"){a++;continue}let l=this.statementEnd(a,t);r.push(this.statement(a,l)),a=l}return this.tok(this.toks[e].start,this.toks[t].end,"block",n("\u30A2\u30AF\u30B7\u30E7\u30F3 `{ }`: \u4E2D\u306E\u6587\u3092\u9806\u306B\u5B9F\u884C\u3059\u308B","Action `{ }`: runs the statements in order"),r)}statementEnd(e,t){let n=this.toks[e],r=l=>this.toks[l]?.text==="("?this.matching(l)+1:l,a=l=>{for(;l<t&&this.toks[l].type==="nl";)l++;return l<t?this.statementEnd(l,t):l};if(n.text==="{")return this.matching(e)+1;if(n.text==="if"){let l=a(r(e+1)),c=l;for(;c<t&&(this.toks[c].type==="nl"||this.toks[c].text===";");)c++;return this.toks[c]?.text==="else"&&(l=a(c+1)),l}if(n.text==="while"||n.text==="for")return a(r(e+1));let o=e;for(;o<t&&this.toks[o].type!=="nl"&&this.toks[o].text!==";"&&this.toks[o].text!=="}";)["(","[","{"].includes(this.toks[o].text)&&(o=this.matching(o)),o++;return o}statement(e,t){let{s:n}=this,r=this.toks.slice(e,t).filter(d=>d.type!=="nl"),a=this.text(r),o=r[0].start,l=r[r.length-1].end,c=r[0].text,u=(d,p=this.atoms(r))=>this.tok(o,l,"command",d,p);switch(c){case"{":return this.block(e,t-1);case"print":case"printf":{let d=r.findIndex((b,w)=>w>0&&[">",">>","|"].includes(b.text)&&!this.insideParens(r,w)),p=r.slice(1,d<0?void 0:d),f=this.text(p),m=c==="print"?f?n(`\`${f}\` \u3092\u51FA\u529B\u3059\u308B\uFF08\`,\` \u3067\u533A\u5207\u3063\u305F\u5024\u306E\u9593\u306B\u306F OFS\uFF1D\u65E2\u5B9A\u3067\u7A7A\u767D\u304C\u5165\u308B\uFF09`,`print \`${f}\` (values separated by \`,\` are joined with OFS, a space by default)`):n("\u73FE\u5728\u306E\u884C\uFF08`$0`\uFF09\u3092\u305D\u306E\u307E\u307E\u51FA\u529B\u3059\u308B","print the current line (`$0`)"):n(`\u66F8\u5F0F\u3092\u6307\u5B9A\u3057\u3066\u51FA\u529B\u3059\u308B: \`${f}\`\uFF08\`%s\` \u6587\u5B57\u5217, \`%d\` \u6574\u6570, \`\\n\` \u6539\u884C\u3002\u6539\u884C\u306F\u81EA\u52D5\u3067\u4ED8\u304B\u306A\u3044\uFF09`,`print with a format: \`${f}\` (\`%s\` string, \`%d\` integer; no newline is added)`);if(d>=0){let b=this.text(r.slice(d+1)),w=r[d].text;m+=w===">"?n(`\u3002\u51FA\u529B\u5148\u306F\u30D5\u30A1\u30A4\u30EB ${b}\uFF08\u6700\u521D\u306B\u4E0A\u66F8\u304D\u3001\u4EE5\u964D\u306F\u8FFD\u8A18\uFF09`,`, to the file ${b} (truncated once, then appended)`):w===">>"?n(`\u3002\u51FA\u529B\u5148\u306F\u30D5\u30A1\u30A4\u30EB ${b}\uFF08\u8FFD\u8A18\uFF09`,`, appended to the file ${b}`):n(`\u3002\u51FA\u529B\u3092\u30B3\u30DE\u30F3\u30C9 ${b} \u306B\u30D1\u30A4\u30D7\u3067\u6E21\u3059`,`, piped to the command ${b}`)}let g=c==="printf"&&p[0]?.type==="str"?p[0]:void 0,_=this.atoms(r);return g&&_.unshift(this.tok(g.start,g.end,"string",n("\u66F8\u5F0F\u6587\u5B57\u5217","Format string"),ke(mt(g.text.slice(1,-1),this.lang),g.start+1))),u(m,_)}case"next":return u(n("\u3053\u306E\u884C\u306E\u51E6\u7406\u3092\u3053\u3053\u3067\u7D42\u3048\u3066\u3001\u6B21\u306E\u884C\u306B\u9032\u3080","stop processing this line and move to the next"),[]);case"nextfile":return u(n("\u3053\u306E\u30D5\u30A1\u30A4\u30EB\u306E\u51E6\u7406\u3092\u7D42\u3048\u3066\u3001\u6B21\u306E\u30D5\u30A1\u30A4\u30EB\u306B\u9032\u3080","skip to the next file"),[]);case"exit":return u(n(`awk \u3092\u7D42\u4E86\u3059\u308B${r[1]?`\uFF08\u7D42\u4E86\u30B9\u30C6\u30FC\u30BF\u30B9 ${this.text(r.slice(1))}\uFF09`:""}\uFF08END \u304C\u3042\u308C\u3070\u5B9F\u884C\u3055\u308C\u308B\uFF09`,`exit awk${r[1]?` with status ${this.text(r.slice(1))}`:""} (END still runs)`));case"break":return u(n("\u30EB\u30FC\u30D7\u3092\u629C\u3051\u308B","leave the loop"),[]);case"continue":return u(n("\u30EB\u30FC\u30D7\u306E\u6B21\u306E\u7E70\u308A\u8FD4\u3057\u306B\u9032\u3080","continue with the next iteration"),[]);case"return":return u(n("\u95A2\u6570\u304B\u3089\u5024\u3092\u8FD4\u3059","return from the function"));case"delete":return u(n(`\u914D\u5217\u306E\u8981\u7D20 \`${this.text(r.slice(1))}\` \u3092\u524A\u9664\u3059\u308B`,`delete the array element \`${this.text(r.slice(1))}\``));case"getline":return u(n("\u6B21\u306E\u884C\u3092\u8AAD\u307F\u8FBC\u3080","read the next line"));case"if":{let d=this.matching(e+1),p=this.text(this.toks.slice(e+2,d)),f=this.statementEnd(this.firstNonNl(d+1,t),t),m=[...this.atoms(this.toks.slice(e+1,d+1)),this.statement(this.firstNonNl(d+1,t),f)],g=f;for(;g<t&&(this.toks[g].type==="nl"||this.toks[g].text===";");)g++;if(this.toks[g]?.text==="else"){m.push(this.tok(this.toks[g].start,this.toks[g].end,"keyword",n("`else`: \u6761\u4EF6\u304C\u507D\u306E\u3068\u304D","`else`: otherwise")));let _=this.firstNonNl(g+1,t);m.push(this.statement(_,this.statementEnd(_,t)))}return this.tok(o,l,"keyword",n(`\u6761\u4EF6\u5206\u5C90: \`${p}\` \u304C\u771F\u306A\u3089\u6B21\u306E\u6587\u3092\u5B9F\u884C\u3059\u308B`,`if \`${p}\` is true, run the next statement`),m)}case"for":case"while":{let d=this.matching(e+1),p=this.toks.slice(e+2,d),f=this.text(p),m=/^\(?\s*([A-Za-z_]\w*)\s+in\s+([A-Za-z_]\w*)\s*\)?$/.exec(f),g=c==="while"?n(`\`${f}\` \u304C\u771F\u306E\u9593\u3001\u6B21\u306E\u6587\u3092\u7E70\u308A\u8FD4\u3059`,`repeat the next statement while \`${f}\` is true`):m?n(`\u914D\u5217 \`${m[2]}\` \u306E\u5404\u30AD\u30FC\u3092 \`${m[1]}\` \u306B\u5165\u308C\u3066\u7E70\u308A\u8FD4\u3059\uFF08\u9806\u5E8F\u306F\u4E0D\u5B9A\uFF09`,`loop over each key of the array \`${m[2]}\` as \`${m[1]}\` (in no particular order)`):n(`\`for (${f})\`: \u521D\u671F\u5316; \u6761\u4EF6; \u66F4\u65B0 \u3067\u56DE\u6570\u3092\u5236\u5FA1\u3057\u3066\u7E70\u308A\u8FD4\u3059`,`\`for (${f})\`: loop with init; condition; update`),_=this.firstNonNl(d+1,t),b=[...this.atoms(this.toks.slice(e+1,d+1))];return _<t&&b.push(this.statement(_,this.statementEnd(_,t))),this.tok(o,l,"keyword",g,b)}}let h=r.findIndex(d=>["=","+=","-=","*=","/=","%=","^="].includes(d.text)&&!this.insideParens(r,r.indexOf(d)));if(h>0){let d=this.text(r.slice(0,h)),p=this.text(r.slice(h+1)),f=r[h].text,m={"=":[`\`${d}\` \u306B \`${p}\` \u3092\u4EE3\u5165\u3059\u308B`,`set \`${d}\` to \`${p}\``],"+=":[`\`${d}\` \u306B \`${p}\` \u3092\u8DB3\u3059\uFF08\u5408\u8A08\u306E\u8A08\u7B97\u306A\u3069\u306B\u4F7F\u3046\uFF09`,`add \`${p}\` to \`${d}\` (e.g. to sum)`],"-=":[`\`${d}\` \u304B\u3089 \`${p}\` \u3092\u5F15\u304F`,`subtract \`${p}\` from \`${d}\``],"*=":[`\`${d}\` \u306B \`${p}\` \u3092\u639B\u3051\u308B`,`multiply \`${d}\` by \`${p}\``],"/=":[`\`${d}\` \u3092 \`${p}\` \u3067\u5272\u308B`,`divide \`${d}\` by \`${p}\``],"%=":[`\`${d}\` \u3092 \`${p}\` \u3067\u5272\u3063\u305F\u4F59\u308A\u306B\u3059\u308B`,`set \`${d}\` to the remainder`],"^=":[`\`${d}\` \u3092 \`${p}\` \u4E57\u3059\u308B`,`raise \`${d}\` to \`${p}\``]},g=/^\$\d+$|^\$NF$/.test(d)?n("\uFF08\u30D5\u30A3\u30FC\u30EB\u30C9\u3092\u66F8\u304D\u63DB\u3048\u308B\u3068 `$0` \u3082 OFS \u3067\u7D44\u307F\u7ACB\u3066\u76F4\u3055\u308C\u308B\uFF09"," (changing a field rebuilds `$0` with OFS)"):"";return u(n(m[f][0],m[f][1])+g)}if(r.length>=2&&(r[r.length-1].text==="++"||r[r.length-1].text==="--"||r[0].text==="++"||r[0].text==="--")){let d=r[0].text==="++"||r[r.length-1].text==="++",p=this.text(r.filter(f=>f.text!=="++"&&f.text!=="--"));return u(n(`\`${p}\` \u30921${d?"\u5897\u3084\u3059":"\u6E1B\u3089\u3059"}\uFF08\u30AB\u30A6\u30F3\u30C8\u306A\u3069\u306B\u4F7F\u3046\uFF09`,`${d?"increment":"decrement"} \`${p}\` (e.g. to count)`))}if(r[0].type==="ident"&&r[1]?.text==="("&&this.matching(e+1)===t-1){let d=Vt[c];return u(d?n(`\`${c}()\` \u3092\u547C\u3073\u51FA\u3059: ${d[0]}`,`call \`${c}()\`: ${d[1]}`):n(`\u95A2\u6570 \`${c}\` \u3092\u547C\u3073\u51FA\u3059`,`call the function \`${c}\``))}return u(n(`\u5F0F \`${a}\` \u3092\u8A55\u4FA1\u3059\u308B`,`evaluate \`${a}\``))}firstNonNl(e,t){for(;e<t&&this.toks[e].type==="nl";)e++;return e}insideParens(e,t){let n=0;for(let r=0;r<t;r++)e[r].text==="("||e[r].text==="["?n++:(e[r].text===")"||e[r].text==="]")&&n--;return n>0}atoms(e){let{s:t}=this,n=[];for(let r=0;r<e.length;r++){let a=e[r],o=e[r+1];if(a.text==="$"&&o){let l=o.end,c;if(o.type==="num")c=o.text==="0"?t("`$0`: \u73FE\u5728\u306E\u884C\u5168\u4F53","`$0`: the whole current line"):t(`\`$${o.text}\`: ${o.text} \u756A\u76EE\u306E\u30D5\u30A3\u30FC\u30EB\u30C9\uFF08\u5217\uFF09`,`\`$${o.text}\`: field ${o.text}`);else if(o.text==="NF")c=t("`$NF`: \u6700\u5F8C\u306E\u30D5\u30A3\u30FC\u30EB\u30C9\uFF08\u5217\uFF09","`$NF`: the last field");else if(o.text==="("){let u=e.findIndex((d,p)=>p>r&&d.text===")");l=(e[u]??o).end;let h=this.src.slice(o.end,e[u]?.start??o.end);c=h.replace(/\s/g,"")==="NF-1"?t("`$(NF-1)`: \u6700\u5F8C\u304B\u30892\u756A\u76EE\u306E\u30D5\u30A3\u30FC\u30EB\u30C9","`$(NF-1)`: the second-to-last field"):t(`\`$(${h})\`: \u8A08\u7B97\u3057\u305F\u756A\u53F7\u306E\u30D5\u30A3\u30FC\u30EB\u30C9`,`\`$(${h})\`: the field with the computed number`),r=u>=0?u:r+1,n.push(this.tok(a.start,l,"variable",c));continue}else c=t(`\`$${o.text}\`: \u5909\u6570 ${o.text} \u306E\u5024\u3092\u756A\u53F7\u3068\u3059\u308B\u30D5\u30A3\u30FC\u30EB\u30C9`,`\`$${o.text}\`: the field numbered by ${o.text}`);n.push(this.tok(a.start,l,"variable",c)),r++;continue}if(a.type==="ident"&&In[a.text])n.push(this.tok(a.start,a.end,"variable",`\`${a.text}\`: ${t(In[a.text][0],In[a.text][1])}`));else if(a.type==="ident"&&Vt[a.text]&&o?.text==="(")n.push(this.tok(a.start,a.end,"function",`\`${a.text}()\`: ${t(Vt[a.text][0],Vt[a.text][1])}`));else if(a.type==="kw"&&a.text==="getline")n.push(this.tok(a.start,a.end,"function",t("`getline`: \u6B21\u306E\u884C\u3092\u8AAD\u307F\u8FBC\u3080","`getline`: read the next line")));else if(a.type==="regex")n.push(this.regexToken(a,t(`\u6B63\u898F\u8868\u73FE \`${a.text}\``,`Regex \`${a.text}\``)));else if(a.type==="op"||a.type==="kw"&&a.text==="in"){let l={"~":["\u5DE6\u304C\u53F3\u306E\u6B63\u898F\u8868\u73FE\u306B\u4E00\u81F4\u3059\u308B","the left side matches the regex"],"!~":["\u5DE6\u304C\u53F3\u306E\u6B63\u898F\u8868\u73FE\u306B\u4E00\u81F4\u3057\u306A\u3044","the left side does not match the regex"],"&&":["\u4E21\u65B9\u304C\u771F","both are true"],"||":["\u3069\u3061\u3089\u304B\u304C\u771F","either is true"],"!":["\u5426\u5B9A","not"],"==":["\u7B49\u3057\u3044","equal"],"!=":["\u7B49\u3057\u304F\u306A\u3044","not equal"],in:["\u5DE6\u306E\u30AD\u30FC\u304C\u53F3\u306E\u914D\u5217\u306B\u3042\u308B\u304B","whether the key is in the array"],"?":["\u6761\u4EF6\u6F14\u7B97\u5B50\uFF08`\u6761\u4EF6 ? \u771F\u306E\u3068\u304D : \u507D\u306E\u3068\u304D`\uFF09","conditional (`cond ? a : b`)"]};l[a.text]&&n.push(this.tok(a.start,a.end,"operator",`\`${a.text}\`: ${t(l[a.text][0],l[a.text][1])}`))}}return n}};function rr(s,e){let t=On(s);if(!t.length)return[];try{return new Fn(s,t,e).program()}catch{let n=O(e);return[{start:0,end:s.length,kind:"error",children:[],explanation:n("awk \u30D7\u30ED\u30B0\u30E9\u30E0\u3092\u89E3\u6790\u3067\u304D\u307E\u305B\u3093\u3067\u3057\u305F","Could not parse the awk program")}]}}var V=class extends Error{};var ho=new Set(["rand","srand","system","close","fflush","strftime","systime","gensub","asort","asorti","mktime"]),Ln=class{constructor(e){this.toks=e}toks;p=0;peek(e=0){return this.toks[this.p+e]}is(e,t=0){let n=this.peek(t);return!!n&&n.type!=="str"&&n.type!=="regex"&&n.text===e}next(){let e=this.toks[this.p++];if(!e)throw new V("unexpected end");return e}expect(e){if(!this.is(e))throw new V(`expected ${e}`);this.p++}skipNl(){for(;this.peek()?.type==="nl";)this.p++}skipTerminators(){for(;this.peek()?.type==="nl"||this.is(";");)this.p++}program(){let e={rules:[],funcs:new Map};for(;;){this.skipTerminators();let t=this.peek();if(!t)return e;if(t.text==="function"||t.text==="func"){this.p++;let r=this.next().text;this.expect("(");let a=[];for(;!this.is(")");)a.push(this.next().text),this.is(",")&&this.p++,this.skipNl();this.p++,this.skipNl(),e.funcs.set(r,{params:a,body:this.block()});continue}let n={};if(t.text==="BEGIN"||t.text==="END")this.p++,n[t.text==="BEGIN"?"begin":"end"]=!0;else{if(t.text==="BEGINFILE"||t.text==="ENDFILE")throw new V("BEGINFILE");this.is("{")||(n.pattern=this.expr(),this.is(",")&&(this.p++,this.skipNl(),n.pattern2=this.expr()))}if(this.is("{"))n.action=this.block();else if(n.begin||n.end)throw new V("BEGIN without action");e.rules.push(n)}}block(){this.expect("{");let e=[];for(;;){if(this.skipTerminators(),this.is("}"))return this.p++,{k:"block",body:e};e.push(this.statement())}}statement(){let e=this.peek();if(!e)throw new V("eof");if(this.is("{"))return this.block();if(e.type==="kw")switch(e.text){case"if":{this.p++,this.expect("(");let n=this.expr();this.expect(")"),this.skipNl();let r=this.statement(),a=this.p;return this.skipTerminators(),this.is("else")?(this.p++,this.skipNl(),{k:"if",c:n,t:r,f:this.statement()}):(this.p=a,{k:"if",c:n,t:r})}case"while":{this.p++,this.expect("(");let n=this.expr();return this.expect(")"),this.is(";")?(this.p++,{k:"while",c:n,body:{k:"block",body:[]}}):(this.skipNl(),{k:"while",c:n,body:this.statement()})}case"do":{this.p++,this.skipNl();let n=this.statement();this.skipTerminators(),this.expect("while"),this.expect("(");let r=this.expr();return this.expect(")"),this.end(),{k:"do",body:n,c:r}}case"for":{if(this.p++,this.expect("("),this.peek()?.type==="ident"&&this.is("in",1)&&this.peek(2)?.type==="ident"&&this.is(")",3)){let o=this.next().text;this.p++;let l=this.next().text;return this.p++,this.skipNl(),{k:"forin",v:o,arr:l,body:this.statement()}}let n=this.is(";")?void 0:{k:"expr",e:this.expr()};this.expect(";"),this.skipNl();let r=this.is(";")?void 0:this.expr();this.expect(";"),this.skipNl();let a=this.is(")")?void 0:{k:"expr",e:this.expr()};return this.expect(")"),this.is(";")?(this.p++,{k:"for",init:n,c:r,inc:a,body:{k:"block",body:[]}}):(this.skipNl(),{k:"for",init:n,c:r,inc:a,body:this.statement()})}case"print":case"printf":{this.p++;let n=[];if(!this.atEnd())for(n.push(this.expr(!0));this.is(",");)this.p++,this.skipNl(),n.push(this.expr(!0));if(this.is(">")||this.is(">>")||this.is("|")||this.is("|&"))throw new V("output redirection");let r=n.length===1&&n[0].k==="group"?n[0].list:n;return this.end(),{k:"print",args:r,printf:e.text==="printf"}}case"next":return this.p++,this.end(),{k:"next"};case"nextfile":throw new V("nextfile");case"break":return this.p++,this.end(),{k:"break"};case"continue":return this.p++,this.end(),{k:"continue"};case"exit":{this.p++;let n=this.atEnd()?void 0:this.expr();return this.end(),{k:"exit",e:n}}case"return":{this.p++;let n=this.atEnd()?void 0:this.expr();return this.end(),{k:"return",e:n}}case"delete":{this.p++;let n=this.next().text,r;return this.is("[")&&(this.p++,r=this.exprList("]")),this.end(),{k:"delete",name:n,subs:r}}case"getline":throw new V("getline")}let t=this.expr();return this.end(),{k:"expr",e:t}}atEnd(){let e=this.peek();return!e||e.type==="nl"||this.is(";")||this.is("}")||this.is(">")||this.is(">>")||this.is("|")}end(){if(this.peek()?.type==="nl"||this.is(";"))this.p++;else if(!this.is("}")&&this.peek())throw new V("expected end of statement")}exprList(e){let t=[this.expr()];for(;this.is(",");)this.p++,t.push(this.expr());return this.expect(e),t}expr(e=!1){let t=this.ternary(e),n=this.peek();return n?.type==="op"&&["=","+=","-=","*=","/=","%=","^="].includes(n.text)&&Jt(t)?(this.p++,this.skipNl(),{k:"assign",op:n.text,target:t,e:this.expr(e)}):t}ternary(e){let t=this.or(e);if(!this.is("?"))return t;this.p++,this.skipNl();let n=this.expr(e);return this.skipNl(),this.expect(":"),this.skipNl(),{k:"cond",c:t,a:n,b:this.expr(e)}}or(e){let t=this.and(e);for(;this.is("||");)this.p++,this.skipNl(),t={k:"bin",op:"||",l:t,r:this.and(e)};return t}and(e){let t=this.inExpr(e);for(;this.is("&&");)this.p++,this.skipNl(),t={k:"bin",op:"&&",l:t,r:this.inExpr(e)};return t}inExpr(e){let t=this.match(e);for(;this.is("in");){this.p++;let n=this.next().text;t={k:"in",subs:t.k==="group"?t.list:[t],name:n}}return t}match(e){let t=this.rel(e);for(;this.is("~")||this.is("!~");)t={k:"bin",op:this.next().text,l:t,r:this.rel(e)};return t}rel(e){let t=this.concat(),n=this.peek();return n?.type==="op"&&["<","<=",">=","==","!="].includes(n.text)||n?.text===">"&&n.type==="op"&&!e?(this.p++,{k:"bin",op:n.text,l:t,r:this.concat()}):t}concat(){let e=this.additive();for(;;){let t=this.peek();if(!(t&&(t.type==="num"||t.type==="str"||t.type==="ident"||t.type==="op"&&(t.text==="$"||t.text==="("))))return e;e={k:"bin",op:"concat",l:e,r:this.additive()}}}additive(){let e=this.mul();for(;this.is("+")||this.is("-");)e={k:"bin",op:this.next().text,l:e,r:this.mul()};return e}mul(){let e=this.unary();for(;this.is("*")||this.is("/")||this.is("%");)e={k:"bin",op:this.next().text,l:e,r:this.unary()};return e}unary(){return this.is("!")||this.is("-")||this.is("+")?{k:"unary",op:this.next().text,e:this.unary()}:this.power()}power(){let e=this.postfix();if(!this.is("^"))return e;this.p++;let t=this.is("-")||this.is("+")||this.is("!")?this.unary():this.power();return{k:"bin",op:"^",l:e,r:t}}postfix(){if(this.is("++")||this.is("--")){let t=this.next().text,n=this.primary();if(!Jt(n))throw new V("bad ++");return{k:"incr",op:t,prefix:!0,target:n}}let e=this.primary();return(this.is("++")||this.is("--"))&&Jt(e)?{k:"incr",op:this.next().text,prefix:!1,target:e}:e}primary(){let e=this.next();switch(e.type){case"num":return{k:"num",v:Number(e.text)};case"str":return{k:"str",v:po(e.text.slice(1,-1))};case"regex":{let t=ie(e.text.slice(1,-1).replace(/\\\//g,"/"),"ere",{sedEscapes:!0});if(!t)throw new V("regex");return{k:"re",re:t}}case"ident":{let t=e.text;if(this.is("(")&&this.peek().start===e.end){this.p++;let n=this.is(")")?(this.p++,[]):this.exprList(")");if(ho.has(t))throw new V(t);return{k:"call",name:t,args:n}}return t==="length"?{k:"call",name:t,args:[]}:this.is("[")?(this.p++,{k:"idx",name:t,subs:this.exprList("]")}):{k:"var",name:t}}case"kw":throw e.text==="getline"?new V("getline"):new V(`unexpected ${e.text}`);case"op":if(e.text==="$"){if(this.is("++")||this.is("--"))throw new V("$++");return this.is("-")?(this.p++,{k:"field",e:{k:"unary",op:"-",e:this.primary()}}):{k:"field",e:this.primary()}}if(e.text==="("){this.skipNl();let t=this.expr();if(this.is(",")){let n=[t];for(;this.is(",");)this.p++,n.push(this.expr());return this.expect(")"),{k:"group",list:n}}return this.expect(")"),t}if(e.text==="-"||e.text==="!"||e.text==="+")return{k:"unary",op:e.text,e:this.unary()}}throw new V(`unexpected ${e.text}`)}};function Jt(s){return s.k==="var"||s.k==="idx"||s.k==="field"}function po(s){return s.replace(/\\([nt"\\/rab]|[0-7]{1,3})/g,(e,t)=>/^[0-7]/.test(t)?String.fromCharCode(parseInt(t,8)):{n:`
14
+ `,t:" ",'"':'"',"\\":"\\","/":"/",r:"\r",a:"\x07",b:"\b"}[t])}var Pe=class{constructor(e){this.s=e}s},cr=/^\s*[-+]?(\d+\.?\d*|\.\d+)([eE][-+]?\d+)?\s*$/;function B(s){if(typeof s=="number")return s;let e=s===void 0?"":typeof s=="string"?s:s.s,t=/^\s*[-+]?(\d+\.?\d*|\.\d+)([eE][-+]?\d+)?/.exec(e);return t?Number(t[0]):0}function ur(s,e="%.6g"){return Number.isInteger(s)&&Math.abs(s)<1e16?String(s===0?0:s):_e(e,[s])}function W(s){return s===void 0?"":typeof s=="number"?ur(s):typeof s=="string"?s:s.s}function ir(s){return s===void 0||typeof s=="number"||s instanceof Pe&&cr.test(s.s)}function fe(s){return s===void 0?!1:typeof s=="number"?s!==0:typeof s=="string"?s!=="":cr.test(s.s)?B(s)!==0:s.s!==""}function Qe(s,e){if(ir(s)&&ir(e)){let r=B(s),a=B(e);return r<a?-1:r>a?1:0}let t=W(s),n=W(e);return t<n?-1:t>n?1:0}function _e(s,e){let t=0,n=()=>e[t++];return s.replace(/%([-+ #0]*)(\*|\d+)?(?:\.(\*|\d*))?([diouxXcseEfFgG%])/g,(r,a,o,l,c)=>{if(c==="%")return"%";let u=o==="*"?B(n()):o?Number(o):0,h=l==="*"?B(n()):l!==void 0?Number(l||0):void 0,d=n(),p,f="";switch(c){case"d":case"i":case"u":{let g=Math.trunc(B(d));f=g<0?"-":a.includes("+")?"+":a.includes(" ")?" ":"",p=String(Math.abs(g)),h!==void 0&&(p=p.padStart(h,"0"));break}case"o":p=Math.trunc(Math.abs(B(d))).toString(8);break;case"x":p=Math.trunc(Math.abs(B(d))).toString(16);break;case"X":p=Math.trunc(Math.abs(B(d))).toString(16).toUpperCase();break;case"c":p=typeof d=="number"?String.fromCharCode(d):W(d).slice(0,1);break;case"s":p=W(d),h!==void 0&&(p=p.slice(0,h));break;default:{let g=B(d);f=g<0||Object.is(g,-0)?"-":a.includes("+")?"+":a.includes(" ")?" ":"",p=fo(Math.abs(g),c,h??6,a.includes("#"))}}let m=f+p;return m.length<u&&(a.includes("-")?m=m.padEnd(u):a.includes("0")&&/[diouxXeEfFgG]/.test(c)&&!(h!==void 0&&/[diouxX]/.test(c))?m=f+p.padStart(u-f.length,"0"):m=m.padStart(u)),m})}function ar(s){return s.replace(/e([+-])(\d)$/,"e$10$2")}function or(s,e){let t=s.toFixed(e);if(e>60)return t;let n=s.toFixed(Math.min(100,e+40)),r=n.indexOf("."),a=n.slice(r+1+e);if(!/^50*$/.test(a))return t;let o=t.replace(/^-/,"").replace(".","");return Number(o[o.length-1])%2===0?t:n.slice(0,e?r+1+e:r)}function fo(s,e,t,n){let r=e===e.toUpperCase(),a;if(e==="f"||e==="F")a=or(s,t);else if(e==="e"||e==="E")a=ar(s.toExponential(t));else{let o=t===0?1:t,l=s===0?0:Math.floor(Math.log10(s));l<-4||l>=o?(a=ar(s.toExponential(o-1)),n||(a=a.replace(/\.?0+e/,"e"))):(a=or(s,Math.max(0,o-1-l)),!n&&a.includes(".")&&(a=a.replace(/\.?0+$/,"")))}return r?a.toUpperCase():a}var gt=class{},et=class{},Oe=class{},Le=class{},_t=class{constructor(e){this.v=e}v},Pn=class{constructor(e){this.prog=e;this.vars.set("FS"," "),this.vars.set("OFS"," "),this.vars.set("ORS",`
15
+ `),this.vars.set("SUBSEP",""),this.vars.set("NR",0),this.vars.set("FNR",0),this.vars.set("RSTART",0),this.vars.set("RLENGTH",-1),this.vars.set("FILENAME","")}prog;vars=new Map;arrays=new Map;fields=[""];out=[];steps=0;locals=[];tick(){if(++this.steps>2e5)throw new V("too many steps")}getVar(e){let t=this.locals[this.locals.length-1];if(t?.has(e)){let n=t.get(e);if(n instanceof Map)throw new V("array as scalar");return n}return e==="NF"?this.fields.length-1:this.vars.get(e)}setVar(e,t){let n=this.locals[this.locals.length-1];if(n?.has(e)){n.set(e,t);return}if(e==="NF"){let r=Math.max(0,Math.trunc(B(t)));for(;this.fields.length-1<r;)this.fields.push("");this.fields.length=r+1,this.rebuild();return}this.vars.set(e,t)}array(e){let t=this.locals[this.locals.length-1];if(t?.has(e)){let r=t.get(e);return r instanceof Map||(r=new Map,t.set(e,r)),r}let n=this.arrays.get(e);return n||(n=new Map,this.arrays.set(e,n)),n}key(e){return e.map(t=>W(this.eval(t))).join(W(this.vars.get("SUBSEP")))}setRecord(e){this.fields=[e,...this.split(e,W(this.vars.get("FS")))]}split(e,t){if(t instanceof RegExp)return e===""?[]:e.split(t);if(t===" "){let r=e.replace(/^[ \t\n]+|[ \t\n]+$/g,"");return r?r.split(/[ \t\n]+/):[]}if(e==="")return[];if(t.length===1&&t!=="\\")return e.split(t);let n=ie(t,"ere",{sedEscapes:!0});if(!n)throw new V("FS");return e.split(new RegExp(n.source,n.flags))}rebuild(){this.fields[0]=this.fields.slice(1).join(W(this.vars.get("OFS")))}getField(e){if(e<0)throw new V("negative field");return e===0?new Pe(this.fields[0]):new Pe(this.fields[e]??"")}setField(e,t){if(e<0)throw new V("negative field");if(e===0){this.setRecord(W(t));return}for(;this.fields.length<=e;)this.fields.push("");this.fields[e]=W(t),this.rebuild()}assignTo(e,t){return e.k==="var"?this.setVar(e.name,t):e.k==="idx"?this.array(e.name).set(this.key(e.subs),t):e.k==="field"&&this.setField(Math.trunc(B(this.eval(e.e))),t),t}regexOf(e){if(e.k==="re")return new RegExp(e.re.source,e.re.flags);let t=ie(W(this.eval(e)),"ere",{sedEscapes:!0});if(!t)throw new V("dynamic regex");return new RegExp(t.source,t.flags)}eval(e){switch(this.tick(),e.k){case"num":return e.v;case"str":return e.v;case"re":return this.regexOf(e).test(this.fields[0])?1:0;case"var":return this.getVar(e.name);case"idx":{let t=this.array(e.name),n=this.key(e.subs);return t.has(n)||t.set(n,void 0),t.get(n)}case"field":return this.getField(Math.trunc(B(this.eval(e.e))));case"group":return this.eval(e.list[e.list.length-1]);case"in":return this.array(e.name).has(this.key(e.subs))?1:0;case"cond":return fe(this.eval(e.c))?this.eval(e.a):this.eval(e.b);case"unary":{let t=this.eval(e.e);return e.op==="!"?fe(t)?0:1:e.op==="-"?-B(t):B(t)}case"assign":{if(e.op==="=")return this.assignTo(e.target,this.eval(e.e));let t=B(this.eval(e.e)),n=B(this.eval(e.target));return this.assignTo(e.target,lr(e.op.slice(0,-1),n,t))}case"incr":{let t=B(this.eval(e.target)),n=e.op==="++"?t+1:t-1;return this.assignTo(e.target,n),e.prefix?n:t}case"bin":switch(e.op){case"&&":return fe(this.eval(e.l))&&fe(this.eval(e.r))?1:0;case"||":return fe(this.eval(e.l))||fe(this.eval(e.r))?1:0;case"~":case"!~":{let t=this.regexOf(e.r).test(W(this.eval(e.l)));return e.op==="~"===t?1:0}case"concat":return W(this.eval(e.l))+W(this.eval(e.r));case"<":return Qe(this.eval(e.l),this.eval(e.r))<0?1:0;case"<=":return Qe(this.eval(e.l),this.eval(e.r))<=0?1:0;case">":return Qe(this.eval(e.l),this.eval(e.r))>0?1:0;case">=":return Qe(this.eval(e.l),this.eval(e.r))>=0?1:0;case"==":return Qe(this.eval(e.l),this.eval(e.r))===0?1:0;case"!=":return Qe(this.eval(e.l),this.eval(e.r))!==0?1:0;default:return lr(e.op,B(this.eval(e.l)),B(this.eval(e.r)))}case"call":return this.call(e.name,e.args)}}call(e,t){let n=this.prog.funcs.get(e);if(n){let a=new Map;n.params.forEach((o,l)=>{let c=t[l];c&&c.k==="var"&&(this.arrays.has(c.name)||this.locals[this.locals.length-1]?.get(c.name)instanceof Map)?a.set(o,this.array(c.name)):a.set(o,c?this.eval(c):void 0)}),this.locals.push(a);try{this.exec(n.body);return}catch(o){if(o instanceof _t)return o.v;throw o}finally{this.locals.pop()}}let r=a=>t[a]?this.eval(t[a]):void 0;switch(e){case"length":{if(!t.length)return this.fields[0].length;let a=t[0];return a.k==="var"&&this.arrays.has(a.name)?this.arrays.get(a.name).size:W(r(0)).length}case"substr":{let a=W(r(0)),o=Math.round(B(r(1))),l=t.length>2?o+Math.round(B(r(2))):1/0,c=Math.max(o,1),u=Math.min(l,a.length+1);return u>c?a.slice(c-1,u-1):""}case"index":return W(r(0)).indexOf(W(r(1)))+1;case"split":{if(t[1]?.k!=="var")throw new V("split target");let a=t.length>2?t[2].k==="re"?this.regexOf(t[2]):W(r(2)):W(this.vars.get("FS")),o=this.split(W(r(0)),a),l=this.array(t[1].name);return l.clear(),o.forEach((c,u)=>l.set(String(u+1),new Pe(c))),o.length}case"sub":case"gsub":{let a=this.regexOf(t[0]),o=t[2]??{k:"field",e:{k:"num",v:0}};if(!Jt(o))throw new V("sub target");let l=W(r(1)),c=0,u=new RegExp(a.source,a.flags+(e==="gsub"?"g":"")),h=W(this.eval(o)).replace(u,d=>(c++,l.replace(/\\\\|\\&|&/g,p=>p==="&"?d:p==="\\&"?"&":"\\")));return c&&this.assignTo(o,h),c}case"match":{let a=this.regexOf(t[1]).exec(W(r(0)));return this.vars.set("RSTART",a?a.index+1:0),this.vars.set("RLENGTH",a?a[0].length:-1),a?a.index+1:0}case"sprintf":return _e(W(r(0)),t.slice(1).map(a=>this.eval(a)));case"tolower":return W(r(0)).toLowerCase();case"toupper":return W(r(0)).toUpperCase();case"int":return Math.trunc(B(r(0)));case"sqrt":return Math.sqrt(B(r(0)));case"exp":return Math.exp(B(r(0)));case"log":return Math.log(B(r(0)));case"sin":return Math.sin(B(r(0)));case"cos":return Math.cos(B(r(0)));case"atan2":return Math.atan2(B(r(0)),B(r(1)))}throw new V(`function ${e}`)}exec(e){switch(this.tick(),e.k){case"block":for(let t of e.body)this.exec(t);return;case"expr":this.eval(e.e);return;case"print":{let t=W(this.vars.get("ORS"));if(e.printf){if(!e.args.length)throw new V("printf without format");this.write(_e(W(this.eval(e.args[0])),e.args.slice(1).map(r=>this.eval(r))));return}let n=e.args.length?e.args.map(r=>{let a=this.eval(r);return typeof a=="number"?ur(a,W(this.vars.get("OFMT"))||"%.6g"):W(a)}).join(W(this.vars.get("OFS"))):this.fields[0];this.write(n+t);return}case"if":fe(this.eval(e.c))?this.exec(e.t):e.f&&this.exec(e.f);return;case"while":for(;fe(this.eval(e.c));)try{this.exec(e.body)}catch(t){if(t instanceof Oe)break;if(!(t instanceof Le))throw t}return;case"do":do try{this.exec(e.body)}catch(t){if(t instanceof Oe)break;if(!(t instanceof Le))throw t}while(fe(this.eval(e.c)));return;case"for":for(e.init&&this.exec(e.init);!e.c||fe(this.eval(e.c));){try{this.exec(e.body)}catch(t){if(t instanceof Oe)break;if(!(t instanceof Le))throw t}e.inc&&this.exec(e.inc)}return;case"forin":for(let t of[...this.array(e.arr).keys()]){this.setVar(e.v,new Pe(t));try{this.exec(e.body)}catch(n){if(n instanceof Oe)break;if(!(n instanceof Le))throw n}}return;case"next":throw new gt;case"exit":throw new et;case"break":throw new Oe;case"continue":throw new Le;case"return":throw new _t(e.e?this.eval(e.e):void 0);case"delete":e.subs?this.array(e.name).delete(this.key(e.subs)):this.array(e.name).clear();return}}write(e){this.out.push(e)}selects(e){return e.pattern?e.pattern2?e.active?(fe(this.eval(e.pattern2))&&(e.active=!1),!0):fe(this.eval(e.pattern))?(e.active=!fe(this.eval(e.pattern2)),!0):!1:fe(this.eval(e.pattern)):!0}};function lr(s,e,t){switch(s){case"+":return e+t;case"-":return e-t;case"*":return e*t;case"/":if(t===0)throw new V("division by zero");return e/t;case"%":if(t===0)throw new V("division by zero");return e%t;case"^":return e**t}throw new V(s)}function hr(s){try{return new Ln(On(s)).program()}catch(e){if(e instanceof V)return;throw e}}function bt(s,e,t={}){let n=hr(s);if(!n)return;let r=new Pn(n);t.fs!==void 0&&r.vars.set("FS",t.fs);for(let[o,l]of Object.entries(t.vars??{}))r.vars.set(o,new Pe(l));try{let o=!1;try{for(let u of n.rules)u.begin&&r.exec(u.action)}catch(u){if(!(u instanceof et))throw u;o=!0}let l=n.rules.filter(u=>!u.begin&&!u.end),c=n.rules.some(u=>u.end);if(!o&&(l.length||c))try{e.forEach((u,h)=>{r.vars.set("NR",h+1),r.vars.set("FNR",h+1),r.setRecord(u);try{for(let d of l)r.selects(d)&&(d.action?r.exec(d.action):r.out.push(r.fields[0]+W(r.vars.get("ORS"))))}catch(d){if(!(d instanceof gt))throw d}})}catch(u){if(!(u instanceof et))throw u}try{for(let u of n.rules)u.end&&r.exec(u.action)}catch(u){if(!(u instanceof et))throw u}}catch(o){if(o instanceof V||o instanceof gt||o instanceof Oe||o instanceof Le||o instanceof _t)return;throw o}let a=r.out.join("");return a===""?[]:a.replace(/\n$/,"").split(`
16
+ `)}function mo(s){let e={maxField:0,usesNF:!1,numeric:new Map,regexes:new Map,counts:!1},t=c=>c.k==="field"&&c.e.k==="num"?c.e.v:void 0,n=(c,u)=>{let h=t(c);if(h===void 0||h===0)return;let d=e.numeric.get(h)??[];u!==void 0&&d.push(u),e.numeric.set(h,d)},r=(c,u)=>e.regexes.set(c,[...e.regexes.get(c)??[],u]),a=(c,u)=>{let h=!1,d=m=>m.k==="var"&&m.name===u,p=m=>{if(!(!m||h)){m.k==="bin"&&["+","-","*","/","%","^","<",">","<=",">="].includes(m.op)&&(d(m.l)||d(m.r))&&(h=!0);for(let g of Object.values(m))g&&typeof g=="object"&&"k"in g&&p(g);m.k==="call"&&m.args.forEach(p)}},f=m=>{if(!(!m||h))for(let g of Object.values(m))Array.isArray(g)?g.forEach(_=>"k"in _&&["block","expr","print","if","while","do","for","forin","return","exit","delete"].includes(_.k)?f(_):p(_)):g&&typeof g=="object"&&"k"in g&&(["block","expr","print","if","while","do","for","forin","return"].includes(g.k)&&!("op"in g)?f(g):p(g))};return f(c),h},o=(c,u=!1)=>{if(c)switch(c.k){case"field":{let h=t(c);h!==void 0&&(e.maxField=Math.max(e.maxField,h)),c.e.k==="var"&&c.e.name==="NF"&&(e.usesNF=!0),o(c.e);return}case"var":c.name==="NF"&&(e.usesNF=!0);return;case"re":u&&r(0,c.re);return;case"bin":{["<","<=",">",">=","==","!="].includes(c.op)?(c.r.k==="num"&&n(c.l,c.r.v),c.l.k==="num"&&n(c.r,c.l.v)):["+","-","*","/","%","^"].includes(c.op)?(n(c.l),n(c.r)):(c.op==="~"||c.op==="!~")&&c.r.k==="re"&&r(c.l.k==="field"&&c.l.e.k==="var"&&c.l.e.name==="NF"?-1:t(c.l)??0,c.r.re),o(c.l),o(c.r);return}case"assign":c.op!=="="&&n(c.e),c.target.k==="var"&&c.target.name==="FS"&&c.e.k==="str"&&(e.fsAssigned=c.e.v),o(c.target),o(c.e);return;case"incr":c.target.k==="idx"&&c.target.subs.some(h=>h.k==="field")&&(e.counts=!0),o(c.target);return;case"idx":c.subs.forEach(h=>o(h));return;case"call":{let h=s.funcs.get(c.name);h&&c.args.forEach((d,p)=>{h.params[p]&&a(h.body,h.params[p])&&n(d)}),c.args.forEach(d=>o(d));return}case"unary":o(c.e,u&&c.op==="!");return;case"cond":o(c.c),o(c.a),o(c.b);return;case"in":c.subs.forEach(h=>o(h));return;case"group":c.list.forEach(h=>o(h));return}},l=c=>{if(c)switch(c.k){case"block":c.body.forEach(l);return;case"expr":o(c.e);return;case"print":{c.printf&&c.args[0]?.k==="str"&&[...c.args[0].v.matchAll(/%[-+ #0]*(?:\*|\d+)?(?:\.\d*)?([a-zA-Z%])/g)].map(h=>h[1]).filter(h=>h!=="%").forEach((h,d)=>{/[dioxXeEfFgGu]/.test(h)&&c.args[d+1]&&n(c.args[d+1])}),c.args.forEach(u=>o(u));return}case"if":o(c.c,!0),l(c.t),l(c.f);return;case"while":case"do":o(c.c,!0),l(c.body);return;case"for":l(c.init),o(c.c),l(c.inc),l(c.body);return;case"forin":l(c.body);return;case"exit":case"return":o(c.e);return;case"delete":c.subs?.forEach(u=>o(u));return}};for(let c of s.rules)o(c.pattern,!0),o(c.pattern2,!0),l(c.action);for(let c of s.funcs.values())l(c.body);return e}var go=[["apple","banana","cherry","grape"],["red","yellow","green","purple"],["tokyo","osaka","kyoto","nara"],["alpha","beta","gamma","delta"],["north","south","east","west"],["one","two","three","four"]];function _o(s){if(!s.length)return[3,12,7,25];let e=s[0];if(e===0)return[-2,3,5,0];let t=[.8,1.2,1.5,.5].map(n=>e*n);return Number.isInteger(e)?t.map(Math.round):t.map(n=>Math.round(n*100)/100)}function Bt(s,e={}){let t=hr(s);if(!t)return;let n=mo(t),r=t.rules.every(u=>u.begin),a=e.fs??n.fsAssigned??" ",o=a===" "?" ":a==="\\t"||a===" "?" ":a.length===1?a:/^\[(.)/.exec(a)?.[1]??" ",l;if(r)l=[];else if(n.maxField===0&&!n.usesNF){let u=[];for(let h of n.regexes.get(0)??[]){let d=be(h,2);d&&u.push(...d.matching.filter(p=>!p.startsWith("abc ")).slice(0,1))}l=["line one",...u,"a somewhat longer line of text","line two"],n.counts&&l.push(l[1])}else{let u=Math.min(Math.max(n.maxField,3),6),h=4,d=[];for(let p=0;p<h;p++){let f=[];for(let m=1;m<=u;m++)f.push(n.numeric.has(m)?String(_o(n.numeric.get(m))[p]):go[m-1][p]);d.push(f)}for(let[p,f]of n.regexes){let m=/\$$/.test(f[0].source)&&!/\\\$$/.test(f[0].source),g=p===-1||p===0&&m?u-1:Math.max(p,1)-1;if(g>=u)continue;let _=be(f[0],3);if(!_)continue;let b=_.matching.filter(w=>!w.includes(o)&&!w.startsWith("abc "));b[0]&&(d[0][g]=b[0]),(b[1]??b[0])&&(d[2][g]=b[1]??b[0])}l=d.map(p=>p.join(o)),n.counts&&l.push(l[0])}let c=bt(s,l,{fs:e.fs,vars:e.vars});if(c)return{input:l,output:c.length>6?[...c.slice(0,5),"\u2026"]:c}}var z=class extends Error{},bo=["<=>","**=","||=","//=","&&=","...","**","++","--","+=","-=","*=","/=",".=","%=","x=","==","!=","<=",">=","=~","!~","&&","||","//","..","->","=>","+","-","*","/","%",".","<",">","=","!","?",":",",",";","(",")","{","}","[","]","\\"],pr={"{":"}","(":")","[":"]","<":">"};function tt(s,e,t){let n=pr[t]??t,r=1,a=e,o="";for(;a<s.length;){let l=s[a];if(l==="\\"&&a+1<s.length){o+=s[a+1]===n||s[a+1]===t?t==="/"?"\\/":s[a+1]:l+s[a+1],a+=2;continue}if(t!==n&&l===t)r++;else if(l===n&&--r===0)return[o,a+1];o+=l,a++}throw new z("unterminated")}function qn(s){let e=[],t=0,n=()=>{let r=e[e.length-1];return r?r.t==="op"?!/^[)\]}]$/.test(r.v)&&r.v!=="++"&&r.v!=="--":r.t==="word"?["if","unless","and","or","not","split","grep","return","print","say","while","until","push","join"].includes(r.v):!1:!0};for(;t<s.length;){let r=s[t];if(/\s/.test(r)){t++;continue}if(r==="#"){for(;t<s.length&&s[t]!==`
17
+ `;)t++;continue}let a;if(a=/^\d+(\.\d+)?([eE][-+]?\d+)?/.exec(s.slice(t))){e.push({t:"num",v:a[0]}),t+=a[0].length;continue}if(a=/^[$@%](\{\w+\}|\w+|[_.,\\/&0!])/.exec(s.slice(t))){e.push({t:"var",v:a[0][0]+a[1].replace(/^\{|\}$/g,"")}),t+=a[0].length;continue}if(r==="'"){let[l,c]=tt(s,t+1,"'");e.push({t:"str",v:l.replace(/\\(['\\])/g,"$1")}),t=c;continue}if(r==='"'){let[l,c]=tt(s,t+1,'"');e.push({t:"istr",v:l}),t=c;continue}if((a=/^(s|tr|y|m|qr|qw|q|qq)\s*([^\w\s])/.exec(s.slice(t)))&&!/\w/.test(s[t-1]??"")&&(a[1]!=="y"||n()||s[t+1]!==" ")){let l=a[1],c=a[2],[u,h]=tt(s,t+a[0].length,c);if(l==="s"||l==="tr"||l==="y"){let p;if(pr[c]){for(;/\s/.test(s[h]);)h++;[p,h]=tt(s,h+1,s[h])}else[p,h]=tt(s,h,c);let f=/^[a-z]*/.exec(s.slice(h))[0];e.push({t:l==="s"?"subst":"tr",v:l,pat:u,rep:p,flags:f}),t=h+f.length;continue}let d=/^[a-z]*/.exec(s.slice(h))[0];l==="qw"?e.push({t:"qw",v:u}):l==="q"?e.push({t:"str",v:u}):l==="qq"?e.push({t:"istr",v:u}):e.push({t:"re",v:l,pat:u,flags:d}),t=h+d.length;continue}if(r==="/"&&n()){let[l,c]=tt(s,t+1,"/"),u=/^[a-z]*/.exec(s.slice(c))[0];e.push({t:"re",v:"m",pat:l,flags:u}),t=c+u.length;continue}if(a=/^[A-Za-z_]\w*(::\w+)*/.exec(s.slice(t))){e.push({t:"word",v:a[0]}),t+=a[0].length;continue}if(s.startsWith("<>",t)||s.startsWith("<STDIN>",t))throw new z("reading input");let o=bo.find(l=>s.startsWith(l,t));if(!o)throw new z(`char ${r}`);e.push({t:"op",v:o}),t+=o.length}return e}var xo=new Set(["length","uc","lc","ucfirst","lcfirst","chomp","chop","defined","abs","int","sqrt","keys","values","scalar","exists","delete","chr","ord","reverse"]),wo=new Set(["print","say","printf","join","split","sprintf","substr","index","push","sort","reverse","die","warn","lc","uc"]),Ht=class{constructor(e){this.toks=e}toks;p=0;peek(e){let t=this.toks[this.p];return e===void 0||t&&(t.t==="op"||t.t==="word")&&t.v===e?t:void 0}next(){let e=this.toks[this.p++];if(!e)throw new z("end");return e}expect(e){if(!this.peek(e))throw new z(`expected ${e}`);this.p++}program(){let e=[],t=[],n=[];for(;this.p<this.toks.length;){if(this.peek(";")){this.p++;continue}if((this.peek("BEGIN")||this.peek("END"))&&this.toks[this.p+1]?.v==="{"){(this.next().v==="BEGIN"?e:n).push(...this.block());continue}t.push(this.statement())}return{begin:e,main:t,end:n}}block(){this.expect("{");let e=[];for(;!this.peek("}");){if(this.peek(";")){this.p++;continue}e.push(this.statement())}return this.p++,e}statement(){let e=this.peek();if(e?.t==="word"&&(e.v==="if"||e.v==="unless")){this.p++,this.expect("(");let n=this.expr();this.expect(")");let r=this.block(),a;if(this.peek("elsif"))throw new z("elsif");return this.peek("else")&&(this.p++,a=this.block()),{k:"if",c:n,t:r,f:a,unless:e.v==="unless"}}if(e?.t==="word"&&(e.v==="for"||e.v==="foreach")){this.p++;let n;this.peek("my")&&this.p++,this.toks[this.p]?.t==="var"&&(n=this.next().v.slice(1)),this.expect("(");let r=this.expr();return this.expect(")"),{k:"for",v:n,list:r,body:this.block()}}let t;if(this.peek("next")?(this.p++,t={k:"next"}):this.peek("last")?(this.p++,t={k:"last"}):t={k:"expr",e:this.expr()},this.peek("if")||this.peek("unless")){let n=this.next().v;t={k:"if",c:this.expr(),t:[t],unless:n==="unless"}}else(this.peek("for")||this.peek("foreach"))&&(this.p++,t={k:"for",list:this.expr(),body:[t]});if(this.peek(";"))this.p++;else if(!this.peek("}")&&this.p<this.toks.length)throw new z("expected ;");return t}expr(){let e=this.lowAnd();for(;this.peek("or");)this.p++,e={k:"bin",op:"||",l:e,r:this.lowAnd()};return e}lowAnd(){let e=this.lowNot();for(;this.peek("and");)this.p++,e={k:"bin",op:"&&",l:e,r:this.lowNot()};return e}lowNot(){return this.peek("not")?(this.p++,{k:"un",op:"!",e:this.lowNot()}):this.comma()}comma(){let e=this.assign();if(!this.peek(",")&&!this.peek("=>"))return e;let t=[e];for(;(this.peek(",")||this.peek("=>"))&&(this.p++,!this.atListEnd());)t.push(this.assign());return{k:"list",items:t}}atListEnd(){let e=this.peek();return!e||[";",")","}","]"].includes(e.v)||e.t==="word"&&["if","unless","for","foreach","or","and"].includes(e.v)}assign(){let e=this.ternary(),t=this.peek();return t?.t==="op"&&["=","+=","-=","*=","/=",".=","%=","x=","**=","||=","//=","&&="].includes(t.v)?(this.p++,{k:"assign",op:t.v,l:e,r:this.assign()}):e}ternary(){let e=this.range();if(!this.peek("?"))return e;this.p++;let t=this.assign();return this.expect(":"),{k:"cond",c:e,a:t,b:this.assign()}}range(){let e=this.oror();return this.peek("..")?(this.p++,{k:"bin",op:"..",l:e,r:this.oror()}):e}oror(){let e=this.andand();for(;this.peek("||")||this.peek("//");)e={k:"bin",op:this.next().v,l:e,r:this.andand()};return e}andand(){let e=this.equality();for(;this.peek("&&");)this.p++,e={k:"bin",op:"&&",l:e,r:this.equality()};return e}equality(){let e=this.relational();for(;;){let t=this.peek();if(!t||!["==","!=","<=>","eq","ne","cmp"].includes(t.v))return e;this.p++,e={k:"bin",op:t.v,l:e,r:this.relational()}}}relational(){let e=this.additive();for(;;){let t=this.peek();if(!t||!["<",">","<=",">=","lt","gt","le","ge"].includes(t.v))return e;this.p++,e={k:"bin",op:t.v,l:e,r:this.additive()}}}additive(){let e=this.multiplicative();for(;this.peek("+")||this.peek("-")||this.peek(".");)e={k:"bin",op:this.next().v,l:e,r:this.multiplicative()};return e}multiplicative(){let e=this.bind();for(;this.peek("*")||this.peek("/")||this.peek("%")||this.peek("x");)e={k:"bin",op:this.next().v,l:e,r:this.bind()};return e}bind(){let e=this.unary();if(this.peek("=~")||this.peek("!~")){let t=this.next().v==="!~",n=this.unary();if(n.k==="match")return{...n,target:e,neg:t!==n.neg};if(n.k==="subst"&&!t)return{...n,target:e};if(n.k==="tr"&&!t)return{...n,target:e};throw new z("dynamic =~")}return e}unary(){return this.peek("!")?(this.p++,{k:"un",op:"!",e:this.unary()}):this.peek("-")?(this.p++,{k:"un",op:"-",e:this.unary()}):this.peek("+")?(this.p++,this.unary()):this.power()}power(){let e=this.incdec();return this.peek("**")?(this.p++,{k:"bin",op:"**",l:e,r:this.unary()}):e}incdec(){if(this.peek("++")||this.peek("--"))return{k:"incr",op:this.next().v,pre:!0,e:this.primary()};let e=this.primary();return this.peek("++")||this.peek("--")?{k:"incr",op:this.next().v,pre:!1,e}:e}regex(e,t){if(/[^gimsxr]/.test(t)||t.includes("x"))throw new z("regex flags");let n=ie(e,"pcre",{ignoreCase:t.includes("i")});if(!n||/\$\w|@\w/.test(e.replace(/\\./g,"").replace(/\$$/,"")))throw new z("regex");return{source:n.source,flags:n.flags+(t.includes("m")?"m":"")+(t.includes("s")?"s":"")}}primary(){let e=this.next();switch(e.t){case"num":return{k:"num",v:Number(e.v)};case"str":return{k:"str",v:e.v};case"istr":return{k:"istr",v:e.v};case"qw":return{k:"list",items:e.v.trim().split(/\s+/).filter(Boolean).map(t=>({k:"str",v:t}))};case"re":return{k:"match",re:this.regex(e.pat,e.flags),neg:!1,global:e.flags.includes("g")};case"subst":if(/[^gimsre]/.test(e.flags))throw new z("s flags");return{k:"subst",re:this.regex(e.pat,e.flags.replace(/[re]/g,"")),rep:e.rep,global:e.flags.includes("g"),ret:e.flags.includes("r"),evalRep:e.flags.includes("e")};case"tr":return{k:"tr",from:e.pat,to:e.rep,flags:e.flags};case"var":{let t=e.v[0],n=e.v.slice(1);if(t==="$"&&this.peek("[")){this.p++;let r=this.expr();return this.expect("]"),{k:"elem",name:n,idx:r}}if(t==="$"&&this.peek("{")){this.p++;let r=this.toks[this.p],a=r?.t==="word"&&this.toks[this.p+1]?.v==="}"?(this.p++,{k:"str",v:r.v}):this.expr();return this.expect("}"),{k:"helem",name:n,key:a}}return t==="@"?{k:"array",name:n}:t==="%"?{k:"hash",name:n}:{k:"scalar",name:n}}case"word":{let t=e.v;if(t==="my")return this.primary();if(t==="STDERR"||t==="STDOUT")throw new z("filehandle");if(t==="sort"&&this.peek("{")){let n=this.block(),r=this.atListEnd()?[]:[this.comma()];return{k:"call",name:t,args:r,block:n}}if(this.peek("(")){this.p++;let n=this.peek(")")?[]:[this.expr()];return this.expect(")"),{k:"call",name:t,args:dr(n)}}if(xo.has(t))return this.atListEnd()||this.peek("=")||this.peek(".")||this.peek("==")||this.peek(">")||this.peek("<")||this.peek("+")||this.peek("-")||this.peek("?")||this.peek("eq")||this.peek(",")?{k:"call",name:t,args:[]}:{k:"call",name:t,args:[this.unary()]};if(wo.has(t)||["next","last"].includes(t)){let n=this.atListEnd()?[]:[this.comma()];return{k:"call",name:t,args:dr(n)}}throw new z(`function ${t}`)}case"op":if(e.v==="("){if(this.peek(")"))return this.p++,{k:"list",items:[]};let t=this.expr();return this.expect(")"),t.k==="list"?t:{k:"list",items:[t]}}}throw new z(`unexpected ${e.v}`)}};function dr(s){return s.length===1&&s[0].k==="list"?s[0].items:s}function L(s){if(typeof s=="number")return s;let e=/^\s*[-+]?(\d+\.?\d*|\.\d+)([eE][-+]?\d+)?/.exec(s??"");return e?Number(e[0]):0}function M(s){return s===void 0?"":typeof s=="number"?Number.isInteger(s)&&Math.abs(s)<1e15?String(s):_e("%.15g",[s]):s}var ze=s=>s!==void 0&&s!==""&&s!=="0"&&s!==0,st=class{},nt=class{},jn=class{scalars=new Map;arrays=new Map;hashes=new Map;out="";caps=[];steps=0;tick(){if(++this.steps>1e5)throw new z("too many steps")}arr(e){let t=this.arrays.get(e);return t||(t=[],this.arrays.set(e,t)),t}hash(e){let t=this.hashes.get(e);return t||(t=new Map,this.hashes.set(e,t)),t}scalar(e){return/^\d+$/.test(e)&&e!=="0"?this.caps[Number(e)]:e==="&"?this.caps[0]:this.scalars.get(e)}interpolate(e){let t={n:`
18
+ `,t:" ",r:"\r","\\":"\\",'"':'"',$:"$","@":"@",e:"\x1B",a:"\x07",0:"\0"},n=e.replace(/\\([ULulEQ])/g,"$1").replace(/\\(.)|\$\{(\w+)\}|\$(\w+|&|\.(?!\w))(?:\[(-?\d+|\$\w+)\]|\{(\w+|\$\w+)\})?|@(\w+)/g,(l,c,u,h,d,p,f)=>{if(c!==void 0)return t[c]??c;if(u)return M(this.scalar(u));if(f)return this.arrays.has(f)?this.arr(f).map(M).join(" "):l;if(d!==void 0){let m=/^\$/.test(d)?L(this.scalar(d.slice(1))):Number(d),g=this.arr(h);return M(g[m<0?g.length+m:m])}return M(p!==void 0?this.hash(h).get(/^\$/.test(p)?M(this.scalar(p.slice(1))):p):this.scalar(h))});if(!n.includes(""))return n;let r="",a="",o="";for(let l=0;l<n.length;l++){if(n[l]===""){let u=n[++l];if(u==="U"||u==="L")a=u;else if(u==="E")a="";else if(u==="u"||u==="l")o=u;else if(u==="Q")throw new z("\\Q");continue}let c=a==="U"?n[l].toUpperCase():a==="L"?n[l].toLowerCase():n[l];o&&(c=o==="u"?c.toUpperCase():c.toLowerCase(),o=""),r+=c}return r}lvalueSet(e,t){switch(e.k){case"scalar":return this.scalars.set(e.name,t),t;case"elem":{let n=this.arr(e.name),r=L(this.ev(e.idx));return n[r<0?n.length+r:r]=t,t}case"helem":return this.hash(e.name).set(M(this.ev(e.key)),t),t}throw new z("lvalue")}list(e){switch(e.k){case"list":return e.items.flatMap(t=>this.list(t));case"array":return[...this.arr(e.name)];case"hash":return[...this.hash(e.name)].flat();case"call":return e.name==="keys"?[...this.hashOf(e.args[0]).keys()]:e.name==="values"?[...this.hashOf(e.args[0]).values()]:e.name==="split"?this.split(e):e.name==="sort"?this.sort(e):e.name==="reverse"?e.args.flatMap(t=>this.list(t)).reverse():[this.ev(e)];case"bin":if(e.op===".."){let t=L(this.ev(e.l)),n=L(this.ev(e.r));if(n-t>1e3)throw new z("long range");return Array.from({length:Math.max(0,n-t+1)},(r,a)=>t+a)}return[this.ev(e)];case"match":if(e.global){let t=new RegExp(e.re.source,e.re.flags.replace("g","")+"g");return[...M(e.target?this.ev(e.target):this.scalar("_")).matchAll(t)].map(n=>n.length>1?n[1]:n[0])}return[this.ev(e)];default:return[this.ev(e)]}}hashOf(e){if(e?.k!=="hash")throw new z("keys of non-hash");return this.hash(e.name)}split(e){let[t,n,r]=e.args,a=M(n?this.ev(n):this.scalar("_")),o;if(t.k==="str"&&t.v===" "?o=a.replace(/^\s+/,"").split(/\s+/):t.k==="match"?o=a.split(new RegExp(t.re.source,t.re.flags)):o=a.split(M(this.ev(t))),r)throw new z("split limit");for(;o.length&&o[o.length-1]==="";)o.pop();return o}sort(e){let t=e.args.flatMap(n=>this.list(n));return e.block?[...t].sort((n,r)=>{this.scalars.set("a",n),this.scalars.set("b",r);let a=0;for(let o of e.block)o.k==="expr"&&(a=this.ev(o.e));return L(a)}):[...t].sort((n,r)=>M(n)<M(r)?-1:M(n)>M(r)?1:0)}ev(e){switch(this.tick(),e.k){case"num":return e.v;case"str":return e.v;case"istr":return this.interpolate(e.v);case"scalar":return this.scalar(e.name);case"array":return this.arr(e.name).length;case"hash":return this.hash(e.name).size;case"elem":{let t=this.arr(e.name),n=L(this.ev(e.idx));return t[n<0?t.length+n:n]}case"helem":return this.hash(e.name).get(M(this.ev(e.key)));case"list":{let t;for(let n of e.items)t=this.ev(n);return t}case"match":{let t=M(e.target?this.ev(e.target):this.scalar("_")),n=new RegExp(e.re.source,e.re.flags.replace("g","")).exec(t);return n&&(this.caps=[...n]),!!n!==e.neg?1:""}case"subst":{let t=e.target??{k:"scalar",name:"_"},n=M(this.ev(t)),r=0,a=new RegExp(e.re.source,e.re.flags+(e.global?"g":"")),o=n.replace(a,(...l)=>{r++;let c=l.slice(0,-2).filter(u=>typeof u=="string"||u===void 0);if(this.caps=c,e.evalRep){let u=new Ht(qn(e.rep));return M(this.ev(u.expr()))}return this.interpolate(e.rep)});return e.ret?o:(r&&this.lvalueSet(t,o),r||"")}case"tr":{let t=e.target??{k:"scalar",name:"_"};if(/[^dsrc]/.test(e.flags)||e.flags.includes("c"))throw new z("tr flags");let n=c=>c.replace(/(.)-(.)/g,(u,h,d)=>Array.from({length:d.charCodeAt(0)-h.charCodeAt(0)+1},(p,f)=>String.fromCharCode(h.charCodeAt(0)+f)).join("")),r=[...n(e.from)],a=[...n(e.to)];!a.length&&!e.flags.includes("d")&&(a=r);let o=0,l="";for(let c of M(this.ev(t))){let u=r.indexOf(c);if(u<0){l+=c;continue}o++,u<a.length?l+=a[u]:e.flags.includes("d")||(l+=a[a.length-1]??c)}return e.flags.includes("s")&&(l=l.replace(/(.)\1+/g,(c,u)=>a.includes(u)?u:c)),e.flags.includes("r")?l:(this.lvalueSet(t,l),o)}case"un":return e.op==="!"?ze(this.ev(e.e))?1:"":-L(this.ev(e.e));case"cond":return ze(this.ev(e.c))?this.ev(e.a):this.ev(e.b);case"incr":{let t=this.ev(e.e),n=L(t)+(e.op==="++"?1:-1);return this.lvalueSet(e.e,n),e.pre?n:L(t)}case"assign":{if(e.op==="="){if(e.l.k==="array")return this.arrays.set(e.l.name,this.list(e.r)),this.arr(e.l.name).length;if(e.l.k==="list")throw new z("list assignment");return this.lvalueSet(e.l,this.ev(e.r))}let t=this.ev(e.l);return e.op==="||="?ze(t)?t:this.lvalueSet(e.l,this.ev(e.r)):e.op==="//="?t!==void 0?t:this.lvalueSet(e.l,this.ev(e.r)):e.op==="&&="?ze(t)?this.lvalueSet(e.l,this.ev(e.r)):t:this.lvalueSet(e.l,this.binop(e.op.slice(0,-1),t,this.ev(e.r)))}case"bin":if(e.op==="..")throw new z("flip-flop");if(e.op==="&&"){let t=this.ev(e.l);return ze(t)?this.ev(e.r):t}if(e.op==="||"){let t=this.ev(e.l);return ze(t)?t:this.ev(e.r)}if(e.op==="//"){let t=this.ev(e.l);return t!==void 0?t:this.ev(e.r)}return this.binop(e.op,this.ev(e.l),this.ev(e.r));case"call":return this.call(e)}}binop(e,t,n){switch(e){case"+":return L(t)+L(n);case"-":return L(t)-L(n);case"*":return L(t)*L(n);case"/":if(L(n)===0)throw new z("division by zero");return L(t)/L(n);case"%":if(Math.trunc(L(n))===0)throw new z("division by zero");return(Math.trunc(L(t))%Math.trunc(L(n))+Math.trunc(L(n)))%Math.trunc(L(n));case"**":return L(t)**L(n);case".":return M(t)+M(n);case"x":return M(t).repeat(Math.max(0,Math.trunc(L(n))));case"==":return L(t)===L(n)?1:"";case"!=":return L(t)!==L(n)?1:"";case"<":return L(t)<L(n)?1:"";case">":return L(t)>L(n)?1:"";case"<=":return L(t)<=L(n)?1:"";case">=":return L(t)>=L(n)?1:"";case"<=>":return Math.sign(L(t)-L(n));case"eq":return M(t)===M(n)?1:"";case"ne":return M(t)!==M(n)?1:"";case"lt":return M(t)<M(n)?1:"";case"gt":return M(t)>M(n)?1:"";case"le":return M(t)<=M(n)?1:"";case"ge":return M(t)>=M(n)?1:"";case"cmp":return M(t)<M(n)?-1:M(t)>M(n)?1:0}throw new z(e)}call(e){let t=e.args,n=()=>t.length?this.ev(t[0]):this.scalar("_");switch(e.name){case"print":case"say":{let r=t.length?t.flatMap(a=>this.list(a)):[this.scalar("_")];return this.out+=r.map(M).join(M(this.scalars.get(",")))+(e.name==="say"?`
19
+ `:M(this.scalars.get("\\"))),1}case"printf":{let r=t.flatMap(a=>this.list(a));return this.out+=_e(M(r[0]),r.slice(1).map(a=>(typeof a=="string"&&/^\s*-?\d/.test(a),a))),1}case"sprintf":{let r=t.flatMap(a=>this.list(a));return _e(M(r[0]),r.slice(1))}case"length":return t.length||this.scalar("_")!==void 0?M(n()).length:void 0;case"uc":return M(n()).toUpperCase();case"lc":return M(n()).toLowerCase();case"ucfirst":{let r=M(n());return r.charAt(0).toUpperCase()+r.slice(1)}case"lcfirst":{let r=M(n());return r.charAt(0).toLowerCase()+r.slice(1)}case"chomp":{let r=t[0]??{k:"scalar",name:"_"},a=M(this.ev(r));return a.endsWith(`
20
+ `)?(this.lvalueSet(r,a.slice(0,-1)),1):0}case"defined":return n()!==void 0?1:"";case"abs":return Math.abs(L(n()));case"int":return Math.trunc(L(n()));case"sqrt":return Math.sqrt(L(n()));case"chr":return String.fromCharCode(L(n()));case"ord":return M(n()).charCodeAt(0)||0;case"scalar":return t[0]?.k==="array"?this.arr(t[0].name).length:this.ev(t[0]);case"reverse":return[...t.length?t.flatMap(r=>this.list(r)).map(M).join(""):M(this.scalar("_"))].reverse().join("");case"join":{let r=t.flatMap(a=>this.list(a));return r.slice(1).map(M).join(M(r[0]))}case"substr":{let r=M(this.ev(t[0])),a=L(this.ev(t[1]));return a<0&&(a=r.length+a),t[2]?r.substr(a,L(this.ev(t[2]))):r.slice(a)}case"index":return M(this.ev(t[0])).indexOf(M(this.ev(t[1])));case"exists":{let r=t[0];if(r?.k!=="helem")throw new z("exists");return this.hash(r.name).has(M(this.ev(r.key)))?1:""}case"delete":{let r=t[0];if(r?.k!=="helem")throw new z("delete");let a=M(this.ev(r.key)),o=this.hash(r.name).get(a);return this.hash(r.name).delete(a),o}case"push":{if(t[0]?.k!=="array")throw new z("push");let r=this.arr(t[0].name);return r.push(...t.slice(1).flatMap(a=>this.list(a))),r.length}case"keys":return this.hashOf(t[0]).size;case"split":return this.split(e).length;case"next":throw new st;case"last":throw new nt}throw new z(`function ${e.name}`)}exec(e){switch(this.tick(),e.k){case"expr":this.ev(e.e);return;case"block":e.body.forEach(t=>this.exec(t));return;case"next":throw new st;case"last":throw new nt;case"if":{ze(this.ev(e.c))!==!!e.unless?e.t.forEach(n=>this.exec(n)):e.f?.forEach(n=>this.exec(n));return}case"for":{let t=this.list(e.list),n=e.v??"_",r=this.scalars.get(n);try{for(let a of t)this.scalars.set(n,a),e.body.forEach(o=>this.exec(o))}catch(a){if(!(a instanceof nt))throw a}finally{this.scalars.set(n,r)}}}}};function xt(s){let e={},t=[];for(let n=0;n<s.length;n++){let r=s[n];if(r===void 0)return;if(!r.startsWith("-")||r==="-"||r==="--")break;for(let a=1;a<r.length;a++){let o=r[a];if(o==="e"||o==="E"){let l=a+1<r.length?r.slice(a+1):s[++n];if(l===void 0)return;t.push(l);break}if(o==="n")e.loop=e.loop??"n";else if(o==="p")e.loop="p";else if(o==="l"){if(e.chompL=!0,/^\d/.test(r.slice(a+1)))return}else if(o==="a")e.autosplit=!0,e.loop=e.loop??"n";else if(o==="F"){e.fieldSep=r.slice(a+1).replace(/^\/(.*)\/$/,"$1").replace(/^(['"])(.*)\1$/,"$2"),e.autosplit=!0,e.loop=e.loop??"n";break}else{if(o==="i")break;if(o==="w"||o==="s"&&!1)continue;return}}}return t.length?{opts:e,code:t.join(`
21
+ `)}:void 0}function rt(s,e,t){let n;try{n=new Ht(qn(s)).program()}catch(l){if(l instanceof z)return;throw l}let r=new jn;r.scalars.set(",",""),r.scalars.set("\\",e.chompL?`
22
22
  `:"");let a=e.fieldSep!==void 0?ie(e.fieldSep,"pcre"):void 0;if(e.fieldSep!==void 0&&!a)return;try{let l=c=>c.forEach(u=>r.exec(u));if(l(n.begin),e.loop)for(let[c,u]of t.entries()){if(r.scalars.set(".",c+1),r.scalars.set("_",e.chompL?u:u+`
23
23
  `),e.autosplit){let h=u,d=a?h.split(new RegExp(a.source,a.flags)):h.replace(/^\s+/,"").split(/\s+/);for(;d.length&&d[d.length-1]==="";)d.pop();!e.chompL&&!a||!e.chompL&&a&&d.length&&(d[d.length-1]+=`
24
- `),r.arrays.set("F",d)}try{l(n.main)}catch(h){if(!(h instanceof st))throw h}e.loop==="p"&&(r.out+=E(r.scalars.get("_"))+E(r.scalars.get("\\")))}else l(n.main);l(n.end)}catch(l){if(l instanceof U||l instanceof st||l instanceof nt)return;throw l}if(r.out==="")return[];let o=r.out.split(`
25
- `);return o[o.length-1]===""&&o.pop(),o}function Ht(s,e){if(!e.loop){let d=rt(s,e,[]);return d&&{input:[],output:d}}let t;try{t=An(s)}catch{return}let n=[];for(let d of t)if((d.t==="re"||d.t==="subst")&&d.pat){let p=ie(d.pat,"pcre",{ignoreCase:d.flags?.includes("i")});p&&n.push({re:p,subst:d.t==="subst"})}let r=[...s.matchAll(/\$F\[(\d+)\]/g)].map(d=>Number(d[1])),a=new Map;for(let d of s.matchAll(/\$F\[(\d+)\]\s*(?:[<>]=?|==|!=)\s*(-?\d+(?:\.\d+)?)/g))a.set(Number(d[1]),Number(d[2]));for(let d of s.matchAll(/\$F\[(\d+)\]\s*(?:[-+*/]|\+=)|(?:\+=|[-+*/])\s*\$F\[(\d+)\]/g)){let p=Number(d[1]??d[2]);a.has(p)||a.set(p,NaN)}let o=/\$\w+\{[^}]+\}\s*\+\+|\+\+\s*\$\w+\{/.test(s),l=/(?:[-+*\/]=?|[<>]=?|==)\s*\$_\b|\$_\s*(?:[-+*\/<>]|==)/.test(s),c=t.findIndex((d,p)=>d.t==="re"&&t[p-1]?.t==="word"&&t[p-1].v==="split"),u;if(l&&!e.autosplit&&!r.length)u=["3","12","7","25"];else if(c>=0&&!e.autosplit){let d=ie(t[c].pat,"pcre"),p=d&&be(d,3)?.matching.find(f=>!/^abc |\sxyz$/.test(f));if(!p)return;u=[["apple","red","tokyo"],["banana","yellow","osaka"],["cherry","green","kyoto"]].map(f=>f.join(p))}else if(e.autosplit||r.length){let d=Math.max(3,...r.map(m=>m+1)),p=e.fieldSep&&e.fieldSep.length===1?e.fieldSep:e.fieldSep?/^\\s/.test(e.fieldSep)?" ":e.fieldSep[0]:" ",f=[["apple","banana","cherry","grape"],["red","yellow","green","purple"],["tokyo","osaka","kyoto","nara"]];u=[0,1,2,3].map(m=>Array.from({length:d},(g,_)=>{if(a.has(_)){let b=a.get(_);return Number.isNaN(b)?String([3,12,7,25][m]):String(b===0?[-2,3,5,0][m]:Math.round(b*[.8,1.2,1.5,.5][m]))}return f[_%3][m]}).join(p))}else{let d=[];for(let{re:p,subst:f}of n){let m=be(p,3);if(!m)continue;let g=m.matching.find(k=>!/^abc |\sxyz$/.test(k))??m.matching[0],_=m.matching.find(k=>k!==g&&!/^abc |\sxyz$/.test(k))??g,b=p.source.startsWith("^"),w=p.source.endsWith("$")&&!p.source.endsWith("\\$");d.push(f?!b&&!w?`${g} ${_}`:b&&!w?`${g}text`:b?g:`text${g}`:g)}u=["line one",...d,"line two"]}o&&u.push(u[1]??u[0]);let h=rt(s,e,u);return h&&{input:u,output:h.length>8?[...h.slice(0,7),"\u2026"]:h}}function Gt(s){return new TextEncoder().encode(s).length}function ar(s){let e="";for(let t of new TextEncoder().encode(s))e+=String.fromCharCode(t);return btoa(e)}function or(s){let e=s.replace(/-/g,"+").replace(/_/g,"/").replace(/=.*$/s,"").replace(/[^A-Za-z0-9+/]/g,"");e.length%4===1&&(e=e.slice(0,-1));let t=atob(e+"=".repeat((4-e.length%4)%4));return new TextDecoder().decode(Uint8Array.from(t,n=>n.charCodeAt(0)))}var ae=class extends Error{},Zt=class{constructor(e,t){this.src=e;this.flavor=t}src;flavor;i=0;patterns=[];script(e=!1){let t=[];for(;;){for(;/[\s;]/.test(this.src[this.i]??"");)this.i++;if(this.i>=this.src.length){if(e)throw new ae;return t}if(this.src[this.i]==="}"){if(!e)throw new ae;return this.i++,t}if(this.src[this.i]==="#"){for(;this.i<this.src.length&&this.src[this.i]!==`
24
+ `),r.arrays.set("F",d)}try{l(n.main)}catch(h){if(!(h instanceof st))throw h}e.loop==="p"&&(r.out+=M(r.scalars.get("_"))+M(r.scalars.get("\\")))}else l(n.main);l(n.end)}catch(l){if(l instanceof z||l instanceof st||l instanceof nt)return;throw l}if(r.out==="")return[];let o=r.out.split(`
25
+ `);return o[o.length-1]===""&&o.pop(),o}function Gt(s,e){if(!e.loop){let d=rt(s,e,[]);return d&&{input:[],output:d}}let t;try{t=qn(s)}catch{return}let n=[];for(let d of t)if((d.t==="re"||d.t==="subst")&&d.pat){let p=ie(d.pat,"pcre",{ignoreCase:d.flags?.includes("i")});p&&n.push({re:p,subst:d.t==="subst"})}let r=[...s.matchAll(/\$F\[(\d+)\]/g)].map(d=>Number(d[1])),a=new Map;for(let d of s.matchAll(/\$F\[(\d+)\]\s*(?:[<>]=?|==|!=)\s*(-?\d+(?:\.\d+)?)/g))a.set(Number(d[1]),Number(d[2]));for(let d of s.matchAll(/\$F\[(\d+)\]\s*(?:[-+*/]|\+=)|(?:\+=|[-+*/])\s*\$F\[(\d+)\]/g)){let p=Number(d[1]??d[2]);a.has(p)||a.set(p,NaN)}let o=/\$\w+\{[^}]+\}\s*\+\+|\+\+\s*\$\w+\{/.test(s),l=/(?:[-+*\/]=?|[<>]=?|==)\s*\$_\b|\$_\s*(?:[-+*\/<>]|==)/.test(s),c=t.findIndex((d,p)=>d.t==="re"&&t[p-1]?.t==="word"&&t[p-1].v==="split"),u;if(l&&!e.autosplit&&!r.length)u=["3","12","7","25"];else if(c>=0&&!e.autosplit){let d=ie(t[c].pat,"pcre"),p=d&&be(d,3)?.matching.find(f=>!/^abc |\sxyz$/.test(f));if(!p)return;u=[["apple","red","tokyo"],["banana","yellow","osaka"],["cherry","green","kyoto"]].map(f=>f.join(p))}else if(e.autosplit||r.length){let d=Math.max(3,...r.map(m=>m+1)),p=e.fieldSep&&e.fieldSep.length===1?e.fieldSep:e.fieldSep?/^\\s/.test(e.fieldSep)?" ":e.fieldSep[0]:" ",f=[["apple","banana","cherry","grape"],["red","yellow","green","purple"],["tokyo","osaka","kyoto","nara"]];u=[0,1,2,3].map(m=>Array.from({length:d},(g,_)=>{if(a.has(_)){let b=a.get(_);return Number.isNaN(b)?String([3,12,7,25][m]):String(b===0?[-2,3,5,0][m]:Math.round(b*[.8,1.2,1.5,.5][m]))}return f[_%3][m]}).join(p))}else{let d=[];for(let{re:p,subst:f}of n){let m=be(p,3);if(!m)continue;let g=m.matching.find(y=>!/^abc |\sxyz$/.test(y))??m.matching[0],_=m.matching.find(y=>y!==g&&!/^abc |\sxyz$/.test(y))??g,b=p.source.startsWith("^"),w=p.source.endsWith("$")&&!p.source.endsWith("\\$");d.push(f?!b&&!w?`${g} ${_}`:b&&!w?`${g}text`:b?g:`text${g}`:g)}u=["line one",...d,"line two"]}o&&u.push(u[1]??u[0]);let h=rt(s,e,u);return h&&{input:u,output:h.length>8?[...h.slice(0,7),"\u2026"]:h}}function Yt(s){return new TextEncoder().encode(s).length}function fr(s){let e="";for(let t of new TextEncoder().encode(s))e+=String.fromCharCode(t);return btoa(e)}function mr(s){let e=s.replace(/-/g,"+").replace(/_/g,"/").replace(/=.*$/s,"").replace(/[^A-Za-z0-9+/]/g,"");e.length%4===1&&(e=e.slice(0,-1));let t=atob(e+"=".repeat((4-e.length%4)%4));return new TextDecoder().decode(Uint8Array.from(t,n=>n.charCodeAt(0)))}var ae=class extends Error{},Kt=class{constructor(e,t){this.src=e;this.flavor=t}src;flavor;i=0;patterns=[];script(e=!1){let t=[];for(;;){for(;/[\s;]/.test(this.src[this.i]??"");)this.i++;if(this.i>=this.src.length){if(e)throw new ae;return t}if(this.src[this.i]==="}"){if(!e)throw new ae;return this.i++,t}if(this.src[this.i]==="#"){for(;this.i<this.src.length&&this.src[this.i]!==`
26
26
  `;)this.i++;continue}t.push(this.command())}}regex(e,t,n=!1){let r=this.i;for(;this.i<this.src.length&&this.src[this.i]!==e;){if(this.src[this.i]===`
27
27
  `)throw new ae;this.i+=this.src[this.i]==="\\"?2:1}if(this.i>=this.src.length)throw new ae;let a=this.src.slice(r,this.i++);if(e!=="/"&&(a=a.split("\\"+e).join(e)),a==="")return;let o=ie(a,this.flavor,{sedEscapes:!0,ignoreCase:n});if(!o)throw new ae;return this.patterns.push({re:o,kind:t}),o}address(){let e=this.src.slice(this.i),t;if(t=/^(\d+)~(\d+)/.exec(e))return this.i+=t[0].length,{kind:"step",first:Number(t[1]),step:Number(t[2])};if(t=/^\d+/.exec(e))return this.i+=t[0].length,{kind:"line",n:Number(t[0])};if(e[0]==="$")return this.i++,{kind:"last"};if(e[0]==="/"||e[0]==="\\"){let n=e[0]==="/"?"/":e[1];this.i+=e[0]==="/"?1:2;let r=this.i;if(this.regex(n,"address"),this.src[this.i]==="I"){this.patterns.pop(),this.i=r;let o=this.regex(n,"address",!0);return this.i++,{kind:"re",re:o}}if(this.src[this.i]==="M")throw new ae;return{kind:"re",re:this.patterns[this.patterns.length-1]?.re}}}command(){let e={neg:!1,name:""};if(e.a1=this.address(),e.a1&&this.src[this.i]===","){this.i++;let n=/^\+(\d+)/.exec(this.src.slice(this.i));if(n)this.i+=n[0].length,e.a2={kind:"plus",n:Number(n[1])};else if(e.a2=this.address(),!e.a2)throw new ae}for(;this.src[this.i]===" ";)this.i++;for(this.src[this.i]==="!"&&(e.neg=!0,this.i++);this.src[this.i]===" ";)this.i++;let t=this.src[this.i++];switch(e.name=t,t){case"s":{let n=this.src[this.i++],r=this.i;e.re=this.regex(n,"s");let a=this.i;for(;this.i<this.src.length&&this.src[this.i]!==n;){if(this.src[this.i]===`
28
- `)throw new ae;this.i+=this.src[this.i]==="\\"?2:1}if(this.i>=this.src.length)throw new ae;e.rep=this.src.slice(a,this.i++);let o="";for(;/[gpIi0-9]/.test(this.src[this.i]??"");)o+=this.src[this.i++];if(/[wWmMe]/.test(this.src[this.i]??""))throw new ae;e.global=o.includes("g"),e.print=o.includes("p");let l=/\d+/.exec(o);if(l&&(e.nth=Number(l[0])),/[iI]/.test(o)){let c=this.i;this.i=r,this.patterns.pop(),e.re=this.regex(n,"s",!0),this.i=c}return e.rep=n==="/"?e.rep:e.rep.split("\\"+n).join(n),e}case"y":{let n=this.src[this.i++],r=()=>{let a=this.i;for(;this.i<this.src.length&&this.src[this.i]!==n;)this.i+=this.src[this.i]==="\\"?2:1;if(this.i>=this.src.length)throw new ae;return bo(this.src.slice(a,this.i++),n)};if(e.from=r(),e.to=r(),[...e.from].length!==[...e.to].length)throw new ae;return e}case"a":case"i":case"c":{for(this.src[this.i]==="\\"&&this.i++,this.src[this.i]===`
28
+ `)throw new ae;this.i+=this.src[this.i]==="\\"?2:1}if(this.i>=this.src.length)throw new ae;e.rep=this.src.slice(a,this.i++);let o="";for(;/[gpIi0-9]/.test(this.src[this.i]??"");)o+=this.src[this.i++];if(/[wWmMe]/.test(this.src[this.i]??""))throw new ae;e.global=o.includes("g"),e.print=o.includes("p");let l=/\d+/.exec(o);if(l&&(e.nth=Number(l[0])),/[iI]/.test(o)){let c=this.i;this.i=r,this.patterns.pop(),e.re=this.regex(n,"s",!0),this.i=c}return e.rep=n==="/"?e.rep:e.rep.split("\\"+n).join(n),e}case"y":{let n=this.src[this.i++],r=()=>{let a=this.i;for(;this.i<this.src.length&&this.src[this.i]!==n;)this.i+=this.src[this.i]==="\\"?2:1;if(this.i>=this.src.length)throw new ae;return yo(this.src.slice(a,this.i++),n)};if(e.from=r(),e.to=r(),[...e.from].length!==[...e.to].length)throw new ae;return e}case"a":case"i":case"c":{for(this.src[this.i]==="\\"&&this.i++,this.src[this.i]===`
29
29
  `&&this.i++;this.src[this.i]===" ";)this.i++;let n=this.i;for(;this.i<this.src.length&&this.src[this.i]!==`
30
- `;)this.i++;return e.text=this.src.slice(n,this.i),e}case"q":case"Q":{let n=/^\s*\d+/.exec(this.src.slice(this.i));return n&&(this.i+=n[0].length),e}case"{":return e.block=this.script(!0),e;case"d":case"p":case"=":return e;default:throw new ae}}};function bo(s,e){return s.replace(/\\(.)/g,(t,n)=>n==="n"?`
31
- `:n==="t"?" ":n===e?e:n)}function xo(s,e){let t="",n="",r="",a=o=>{for(let l of o){let c=n==="U"?l.toUpperCase():n==="L"?l.toLowerCase():l;r&&(c=r==="u"?c.toUpperCase():c.toLowerCase(),r=""),t+=c}};for(let o=0;o<s.length;o++){let l=s[o];if(l==="&"){a(e[0]);continue}if(l!=="\\"||o+1>=s.length){a(l);continue}let c=s[++o];/[0-9]/.test(c)?a(e[Number(c)]??""):c==="n"?a(`
32
- `):c==="t"?a(" "):c==="U"||c==="L"?n=c:c==="E"?n="":c==="u"||c==="l"?r=c:a(c)}return t}function Fn(s,e,t,n,r){switch(s.kind){case"line":return t===s.n;case"last":return n;case"step":return s.step===0?t===s.first:t>=s.first&&(t-s.first)%s.step===0;case"re":{let a=s.re??r.lastRe;return a?(r.lastRe=a,new RegExp(a.source,a.flags).test(e)):!1}}}function wo(s,e,t,n,r){let a;if(!s.a1)a=!0;else if(!s.a2)a=Fn(s.a1,e,t,n,r);else if(s.active){a=!0;let o=s.a2;o.kind==="plus"?t>=s.endLine&&(s.active=!1):o.kind==="line"?t>=o.n&&(s.active=!1):Fn(o,e,t,n,r)&&(s.active=!1)}else if(Fn(s.a1,e,t,n,r)){a=!0;let o=s.a2;o.kind==="plus"?(s.endLine=t+o.n,s.active=o.n>0):o.kind==="line"?s.active=o.n>t:s.active=!0}else a=!1;return s.neg?!a:a}function lr(s,e,t,n,r,a,o){for(let l of s){if(r.quit)return e;if(wo(l,e,t,n,r))switch(l.name){case"d":return;case"p":r.out.push(e);break;case"=":r.out.push(String(t));break;case"i":r.out.push(l.text);break;case"a":a.push(l.text);break;case"c":(!l.a2||!l.active)&&r.out.push(l.text);return;case"q":return r.quit=!0,r.printQuit=!o,e;case"Q":return r.quit=!0,r.printQuit=!1,e;case"y":{let c=[...l.from],u=[...l.to];e=[...e].map(h=>c.includes(h)?u[c.indexOf(h)]:h).join("");break}case"s":{let c=l.re??r.lastRe;if(!c)break;r.lastRe=c;let u=new RegExp(c.source,c.flags+"g"),h=0,d=!1;e=e.replace(u,(...p)=>{if(h++,!(l.nth?l.global?h>=l.nth:h===l.nth:l.global||h===1))return p[0];d=!0;let m=p.slice(0,-2).filter(g=>typeof g=="string"||g===void 0);return xo(l.rep,m)}),d&&l.print&&r.out.push(e);break}case"{":{let c=lr(l.block,e,t,n,r,a,o);if(c===void 0)return;e=c;break}}}return e}function xt(s,e,t){let n;try{n=new Zt(s,t.extended?"ere":"bre").script()}catch(a){if(a instanceof ae)return;throw a}let r={out:[],quit:!1,printQuit:!1};return e.forEach((a,o)=>{if(r.quit)return;let l=[],c=lr(n,a,o+1,o===e.length-1,r,l,t.quiet);c!==void 0&&(!t.quiet&&!r.quit||r.printQuit)&&r.out.push(c),r.out.push(...l)}),r.out.flatMap(a=>a.split(`
33
- `))}function Xt(s,e){let t,n;try{t=new Zt(s,e.extended?"ere":"bre"),n=t.script()}catch(g){if(g instanceof ae)return;throw g}let r=t.patterns.map(g=>({...g,rx:new RegExp(g.re.source,g.re.flags)})),a=g=>!r.some(_=>!_.rx.test("")&&_.rx.test(g)),o=g=>[`line ${g}`,`text ${g}`,`data ${g}`,`note ${g}`].find(a)??`${g}`,l=[],c;for(let g of r){let _=be(g.re,3);if(!_)continue;let b=_.matching[0],w=g.re.source,k=w.startsWith("^"),v=w.endsWith("$")&&!w.endsWith("\\$"),R=b;if(g.kind==="s"){let W=_.matching.find(j=>j!==b&&!/^abc |\sxyz$/.test(j))??b;R=!k&&!v?`${b} ${W}`:k&&!v?`${b}text`:k?b:`text${b}`,c??=R}l.includes(R)||l.push(R)}for(let g of Yt(n))g.name==="y"&&g.from&&l.push(`${g.from} ${g.from}`);let u=Math.max(0,...cr(n));if(u>8)return;let h=Yt(n).some(g=>g.a1),d=h&&Yt(n).every(g=>(!g.a1||g.a1.kind!=="re")&&(!g.a2||g.a2.kind!=="re")),p=[],f=1;if(d&&c){let g=Math.max(u+1,3);for(let _=1;_<=g;_++)p.push(`${c} ${_}`)}else{h&&p.push(o(f++));for(let g of l)p.push(g),h&&p.push(o(f++));for(l.length||p.push(o(f++),o(f++));p.length<Math.max(u+1,h?3:1);)p.push(o(f++))}if(p.length>8)return;let m=xt(s,p,e);return m&&{input:p,output:m}}function Yt(s){return s.flatMap(e=>[e,...e.block?Yt(e.block):[]])}function cr(s){return s.flatMap(e=>[...e.a1?.kind==="line"?[e.a1.n]:e.a1?.kind==="step"?[e.a1.first+(e.a1.step||0)]:[],...e.a2?.kind==="line"?[e.a2.n]:e.a2?.kind==="plus"?[(e.a1?.kind==="line"?e.a1.n:1)+e.a2.n]:[],...e.block?cr(e.block):[]])}var $e=class extends Error{};function yo(s,e){let t=0;for(let n=e;n<s.length;n++){if(s[n]==="\\"){n++;continue}if(s[n]==="{")t++;else if(s[n]==="}"&&--t===0)return n}return-1}function ko(s,e,t){let n=[],r=0;for(let a=e+1;a<t;a++){if(s[a]==="\\"){a++;continue}s[a]==="{"?r++:s[a]==="}"?r--:s[a]===","&&r===0&&n.push(a)}return n}function $o(s){let e=/^(-?\d+)\.\.(-?\d+)(?:\.\.(-?\d+))?$/.exec(s);if(e){let[n,r]=[Number(e[1]),Number(e[2])],a=Math.abs(Number(e[3]??1))||1,o=/^-?0\d/.test(e[1])||/^-?0\d/.test(e[2])?Math.max(e[1].length,e[2].length):0,l=[];for(let c=n;n<=r?c<=r:c>=r;c+=n<=r?a:-a)if(l.push(o?c<0?"-"+String(-c).padStart(o-1,"0"):String(c).padStart(o,"0"):String(c)),l.length>500)throw new $e("too long");return l}let t=/^([A-Za-z])\.\.([A-Za-z])(?:\.\.(-?\d+))?$/.exec(s);if(t){let[n,r]=[t[1].charCodeAt(0),t[2].charCodeAt(0)],a=Math.abs(Number(t[3]??1))||1,o=[];for(let l=n;n<=r?l<=r:l>=r;l+=n<=r?a:-a)o.push(String.fromCharCode(l));return o}}function pr(s){return In(s)?.map(t=>t.replace(/\\(.)/g,"$1")).filter(t=>t!=="")}function In(s){for(let e=0;e<s.length;e++){if(s[e]==="\\"){e++;continue}if(s[e]!=="{"||s[e-1]==="$")continue;let t=yo(s,e);if(t<0)return;let n=s.slice(e+1,t),r=s.slice(0,e),a=s.slice(t+1),o=ko(s,e,t),l;if(o.length){l=[];let h=e+1;for(let d of[...o,t])l.push(s.slice(h,d)),h=d+1}else l=$o(n);if(!l)continue;let c=In(a)??[a],u=[];for(let h of l)for(let d of In(h)??[h])for(let p of c)u.push(r+d+p);if(u.length>500)throw new $e("too long");return u}}function fr(s){return/(^|[^\\])([*?]|\[[^\]]+\])/.test(s)}function On(s,e){if(/[?*+@!]\(/.test(s))return;let t="",n=e==="file"?"[^/]":"[\\s\\S]";for(let r=0;r<s.length;r++){let a=s[r];if(a==="\\"&&r+1<s.length){t+=s[++r].replace(/[.*+?^${}()|[\]\\/]/g,"\\$&");continue}if(a==="*"){t+=`${n}*`;continue}if(a==="?"){t+=n;continue}if(a==="["){let o=s.indexOf("]",r+2);if(o>0){let l=s.slice(r+1,o),c=l[0]==="!"||l[0]==="^";c&&(l=l.slice(1)),l=l.replace(/\[:(\w+):\]/g,(u,h)=>({digit:"0-9",alpha:"A-Za-z",alnum:"A-Za-z0-9",upper:"A-Z",lower:"a-z",space:"\\s"})[h]??"").replace(/\\/g,"\\\\").replace(/\]/g,"\\]"),t+=`[${c?"^":""}${l}]`,r=o;continue}}t+=a.replace(/[.*+?^${}()|[\]\\/]/g,"\\$&")}try{return new RegExp(`^${t}$`)}catch{return}}function Ae(s,e,t){let n=On(s,t);return!n||t==="file"&&e.split("/").some((r,a)=>r.startsWith(".")&&!s.split("/")[a]?.startsWith("."))?!1:n.test(e)}var ur=["app","data","error","x"];function wt(s,e){if(!On(s,e))return;let t=c=>{let u="";for(let h=0;h<s.length;h++){let d=s[h];if(d==="\\"&&h+1<s.length){u+=s[++h];continue}if(d==="*"){u+=c===3?"":ur[c%ur.length];continue}if(d==="?"){u+="abc1"[c%4];continue}if(d==="["){let p=s.indexOf("]",h+2);if(p>0){let f=new RegExp(`^${On(s.slice(h,p+1),"value").source.slice(1,-1)}$`),g="abcxyz0123456789ABC-_defghijklmnopqrstuvwDEFGHIJKLMNOPQRSTUVWXYZ.+@%,=~".split("").filter(_=>f.test(_));u+=g[c%Math.max(g.length,1)]??"a",h=p;continue}}u+=d}return u},n=[];for(let c=0;c<6&&n.length<3;c++){let u=t(c);u&&!n.includes(u)&&Ae(s,u,e)&&n.push(u)}if(!n.length)return;let r=n[0],a=/\.[^./]+$/.exec(s)?.[0],o=[a?r.slice(0,-a.length)+(a===".txt"?".md":".txt"):r+".bak",e==="file"?"."+r:r.toUpperCase(),r.slice(0,-1),r.slice(1),"x"+r,r+"x",r.toUpperCase()],l=[...new Set(o)].filter(c=>c&&c!==r&&!Ae(s,c,e)).slice(0,2);return{matching:n,nonMatching:l}}var hr={n:`
34
- `,t:" ",r:"\r",a:"\x07",b:"\b",e:"\x1B",E:"\x1B",f:"\f",v:"\v","\\":"\\",'"':'"',"'":"'"};function dr(s,e){let t="";for(let n=0;n<s.length;n++){if(s[n]!=="\\"||n+1>=s.length){t+=s[n];continue}let r=s.slice(n+1),a;if(e&&r[0]==="c")return[t,!0];if(a=(e?/^0[0-7]{0,3}/:/^[0-7]{1,3}/).exec(r)){t+=String.fromCharCode(parseInt(a[0],8)),n+=a[0].length;continue}if(a=/^x([0-9a-fA-F]{1,2})/.exec(r)){t+=String.fromCharCode(parseInt(a[1],16)),n+=a[0].length;continue}if((a=/^u([0-9a-fA-F]{1,4})/.exec(r))||(a=/^U([0-9a-fA-F]{1,8})/.exec(r))){t+=String.fromCodePoint(parseInt(a[1],16)),n+=a[0].length;continue}if(hr[r[0]]!==void 0&&(e||r[0]!=="'")){t+=hr[r[0]],n++;continue}t+="\\"}return[t,!1]}function vo(s){if(s==="")return"''";if(/[\x00-\x1f\x7f]/.test(s))throw new $e("%q with control characters");return s.replace(/[^A-Za-z0-9_\-.,:/@%+=^]/g,"\\$&")}function Cn(s){if(s===void 0||s==="")return 0;if(/^['"]/.test(s))return s.length>1?s.codePointAt(1):0;let e=s.trim();if(/^[-+]?0[xX][0-9a-fA-F]+$/.test(e))return parseInt(e,16);if(/^[-+]?0[0-7]+$/.test(e))return parseInt(e,8);if(/^[-+]?(\d+\.?\d*|\.\d+)([eE][-+]?\d+)?$/.test(e))return Number(e);throw new $e("invalid number")}function Kt(s,e){let t="",n=0;for(let r=0;r<50;r++){let a=n,o=0,l=!1;for(;o<s.length;){let c=s[o];if(c==="\\"){let w=/^\\(0[0-7]{0,3}|[0-7]{1,3}|x[0-9a-fA-F]{1,2}|u[0-9a-fA-F]{1,4}|U[0-9a-fA-F]{1,8}|.)/.exec(s.slice(o));t+=dr(w[0],!1)[0],o+=w[0].length;continue}if(c!=="%"){t+=c,o++;continue}let u=/^%([-+ #0']*)(\*|\d+)?(?:\.(\*|\d*))?([diouxXeEfFgGcsbq%])/.exec(s.slice(o));if(!u)throw new $e("format");o+=u[0].length;let[,h,d,p,f]=u;if(f==="%"){t+="%";continue}let m=d==="*"?Cn(e[n++]):d,g=p==="*"?Cn(e[n++]):p,_=`%${h.replace("'","")}${m??""}${g!==void 0?"."+g:""}`,b=e[n++];if(f==="b"){let[w,k]=dr(b??"",!0);if(t+=ge(`${_}s`,[w]),k){l=!0;break}continue}if(f==="q"){t+=ge(`${_}s`,[vo(b??"")]);continue}if(f==="s"){t+=ge(`${_}s`,[b??""]);continue}if(f==="c"){t+=ge(`${_}s`,[(b??"").slice(0,1)]);continue}t+=ge(`${_}${f}`,[Cn(b)])}if(l||n>=e.length||n===a)return t}throw new $e("too many rounds")}var S=class extends Error{};function te(s,e){let t=[],n=[],r=!1;for(let a=0;a<s.length;a++){let o=s[a];if(o===void 0||r||o==="-"||!o.startsWith("-")){n.push(o);continue}if(o==="--"){r=!0;continue}if(o.startsWith("--")){let l=o.indexOf("="),c=l<0?o.slice(2):o.slice(2,l),u=e.long?.[c];if(!u)throw new S(`--${c}`);if(e.values.includes(u)){let h=l<0?s[++a]:o.slice(l+1);if(h===void 0)throw new S("missing value");t.push([u,h])}else t.push([u,""]);continue}for(let l=1;l<o.length;l++){let c=o[l];if(e.values.includes(c)){let u=l+1<o.length?o.slice(l+1):s[++a];if(u===void 0)throw new S("missing value");t.push([c,u]);break}if(!e.flags.includes(c))throw new S(`-${c}`);t.push([c,""])}}return{opts:t,operands:n}}var K=(s,e)=>s.opts.some(([t])=>t===e),Y=(s,e)=>[...s.opts].reverse().find(([t])=>t===e)?.[1],wr=(s,e)=>s.opts.filter(([t])=>t===e).map(([,t])=>t),yr={flags:"bdfghinrsuVM",values:"ktS",long:{"ignore-leading-blanks":"b","dictionary-order":"d","ignore-case":"f","general-numeric-sort":"g","human-numeric-sort":"h","numeric-sort":"n",reverse:"r",stable:"s",unique:"u","version-sort":"V",key:"k","field-separator":"t","buffer-size":"S"}};function kr(s,e){let t=/^(\d+)(?:\.(\d+))?([bdfghinrV]*)(?:,(\d+)(?:\.(\d+))?([bdfghinrV]*))?$/.exec(s);if(!t)throw new S(`key ${s}`);let n=(t[3]??"")+(t[6]??"");return{sf:Number(t[1]),sc:t[2]?Number(t[2]):1,ef:t[4]?Number(t[4]):0,ec:t[5]?Number(t[5]):0,opts:/[dfghinrV]/.test(n)?n:n+e}}function Eo(s,e){let t=[0];if(e!==void 0){for(let n=0;n<s.length;n++)s[n]===e&&t.push(n+1);return t}for(let n=1;n<s.length;n++)/[ \t]/.test(s[n])&&!/[ \t]/.test(s[n-1])&&t.push(n);return t}function mr(s,e,t){let n=Eo(s,t),r=l=>l<n.length?n[l]-(t!==void 0?1:0):s.length;if(e.sf>n.length)return"";let a=n[e.sf-1];if(e.opts.includes("b"))for(;a<s.length&&/[ \t]/.test(s[a]);)a++;a=Math.min(a+e.sc-1,r(e.sf));let o;if(!e.ef)o=s.length;else if(e.ef>n.length)o=s.length;else if(!e.ec)o=r(e.ef);else{let l=n[e.ef-1];if(e.opts.includes("b"))for(;l<s.length&&/[ \t]/.test(s[l]);)l++;o=Math.min(l+e.ec,r(e.ef))}return o>a?s.slice(a,o):""}function gr(s){let e=/^\s*(-?\d*\.?\d+|-?\d+\.?)/.exec(s);return e?Number(e[1]):0}function _r(s){let e=/^\s*(-?\d*\.?\d+)\s*([KMGTPEZY]?)/i.exec(s);if(!e)return 0;let t="KMGTPEZY".indexOf(e[2].toUpperCase())+1;return(e[2]?t*1e30*Math.sign(Number(e[1])||1):0)+Number(e[1])}function So(s,e){let t=a=>a.match(/\d+|\D+/g)??[],n=t(s),r=t(e);for(let a=0;a<Math.max(n.length,r.length);a++){let o=n[a]??"",l=r[a]??"";if(/^\d/.test(o)&&/^\d/.test(l)){let c=Number(o)-Number(l);if(c)return c}else if(o!==l)return o<l?-1:1}return 0}var Pn=(s,e)=>s<e?-1:s>e?1:0;function No(s,e,t){let n=s,r=e;t.includes("d")&&(n=n.replace(/[^A-Za-z0-9 \t]/g,""),r=r.replace(/[^A-Za-z0-9 \t]/g,"")),t.includes("i")&&(n=n.replace(/[^\x20-\x7e]/g,""),r=r.replace(/[^\x20-\x7e]/g,"")),t.includes("f")&&(n=n.toUpperCase(),r=r.toUpperCase());let a;return t.includes("n")?a=gr(n)-gr(r):t.includes("g")?a=(parseFloat(n)||0)-(parseFloat(r)||0):t.includes("h")?a=_r(n)-_r(r):t.includes("V")?a=So(n,r):a=Pn(n,r),t.includes("r")?-a:a}function To(s,e){let t=te(s,yr);if(K(t,"M"))throw new S("month sort");let n=t.opts.filter(([d])=>"bdfghinrV".includes(d)).map(([d])=>d).join(""),r=Y(t,"t");if(r!==void 0&&[...r].length!==1)throw new S("-t");let a=wr(t,"k").map(d=>kr(d,n)),o=a.length?a:[{sf:1,sc:1,ef:0,ec:0,opts:n}],l=(d,p)=>{for(let f of o){let m=No(mr(d,f,r),mr(p,f,r),f.opts);if(m)return m}return 0},c=K(t,"s")||K(t,"u"),u=(d,p)=>c?0:n.includes("r")?-Pn(d,p):Pn(d,p),h=[...e].sort((d,p)=>l(d,p)||u(d,p));return K(t,"u")?h.filter((d,p)=>p===0||l(h[p-1],d)!==0):h}var $r={flags:"cdDiuz",values:"fsw",long:{count:"c",repeated:"d","all-repeated":"D","ignore-case":"i",unique:"u","skip-fields":"f","skip-chars":"s","check-chars":"w"}};function Mo(s,e){let t=te(s,$r);if(K(t,"z"))throw new S("-z");let n=Number(Y(t,"f")??0),r=Number(Y(t,"s")??0),a=Y(t,"w")!==void 0?Number(Y(t,"w")):1/0,o=u=>{let h=u;for(let d=0;d<n;d++)h=h.replace(/^[ \t]*[^ \t]*/,"");return h=h.slice(r).slice(0,a),K(t,"i")?h.toLowerCase():h},l=[];for(let u of e){let h=l[l.length-1];h&&o(h[0])===o(u)?h.push(u):l.push([u])}let c=[];for(let u of l)if(!(K(t,"d")&&u.length<2)&&!(K(t,"u")&&u.length>1)){if(K(t,"D")){u.length>1&&c.push(...u);continue}c.push(K(t,"c")?`${String(u.length).padStart(7)} ${u[0]}`:u[0])}return c}var Qt={flags:"sn",values:"bcfdO",long:{bytes:"b",characters:"c",fields:"f",delimiter:"d","only-delimited":"s","output-delimiter":"O",complement:"C"}};function br(s){let e=s.split(",").map(t=>{let n=/^(\d*)(-?)(\d*)$/.exec(t);if(!n||!n[1]&&!n[3])throw new S(`list ${s}`);let r=n[1]?Number(n[1]):1,a=n[2]?n[3]?Number(n[3]):1/0:r;return[r,a]});return t=>e.some(([n,r])=>t>=n&&t<=r)}function Ro(s,e){let t=s.includes("--complement"),n=te(s.filter(l=>l!=="--complement"),{...Qt,flags:Qt.flags+"C"}),r=l=>c=>t?!l(c):l(c),a=Y(n,"f"),o=Y(n,"c")??Y(n,"b");if(a!==void 0){let l=Y(n,"d")??" ";if([...l].length!==1)throw new S("-d");let c=Y(n,"O")??l,u=r(br(a));return e.flatMap(h=>h.includes(l)?[h.split(l).filter((d,p)=>u(p+1)).join(c)]:K(n,"s")?[]:[h])}if(o!==void 0){let l=r(br(o)),c=Y(n,"O");return e.map(u=>{let h=[...u];if(c===void 0)return h.filter((p,f)=>l(f+1)).join("");let d="";return h.forEach((p,f)=>{l(f+1)&&(d&&!l(f)&&(d+=c),d+=p)}),d})}throw new S("cut needs -f, -c or -b")}var xr={alpha:"ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz",upper:"ABCDEFGHIJKLMNOPQRSTUVWXYZ",lower:"abcdefghijklmnopqrstuvwxyz",digit:"0123456789",alnum:"0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz",space:`
35
- \v\f\r `,blank:" ",punct:"!\"#$%&'()*+,-./:;<=>?@[\\]^_`{|}~",xdigit:"0123456789ABCDEFabcdef"};function yt(s,e){let t=[],n=-1,r="",a=(o,l)=>{let c=/^\\([0-7]{1,3})/.exec(o.slice(l));if(c)return[String.fromCharCode(parseInt(c[1],8)),c[0].length];let u={n:`
36
- `,t:" ",r:"\r",a:"\x07",b:"\b",f:"\f",v:"\v","\\":"\\"};return o[l]==="\\"&&l+1<o.length?[u[o[l+1]]??o[l+1],2]:[o[l],1]};for(let o=0;o<s.length;){let l=/^\[:(\w+):\]/.exec(s.slice(o));if(l){if(!xr[l[1]])throw new S(`class ${l[1]}`);t.push(...xr[l[1]]),o+=l[0].length;continue}let c=/^\[(\\?.)\*(\d*)\]/.exec(s.slice(o));if(c){let[p]=a(c[1],0);c[2]&&Number(c[2])>0?t.push(...Array(Number(c[2])).fill(p)):(n=t.length,r=p),o+=c[0].length;continue}let u=/^\[=(.)=\]/.exec(s.slice(o));if(u){t.push(u[1]),o+=u[0].length;continue}let[h,d]=a(s,o);if(s[o+d]==="-"&&o+d+1<s.length){let[p,f]=a(s,o+d+1);if(p.charCodeAt(0)<h.charCodeAt(0))throw new S("reverse range");for(let m=h.charCodeAt(0);m<=p.charCodeAt(0);m++)t.push(String.fromCharCode(m));o+=d+1+f;continue}t.push(h),o+=d}return n>=0&&t.splice(n,0,...Array(Math.max(0,(e??t.length)-t.length)).fill(r)),t}var vr={flags:"cCdst",values:"",long:{complement:"c",delete:"d","squeeze-repeats":"s","truncate-set1":"t"}};function Ao(s,e){let t=te(s,vr),n=t.operands;if(n.some(m=>m===void 0)||!n.length||n.length>2)throw new S("sets");let r=K(t,"c")||K(t,"C"),a=K(t,"d"),o=K(t,"s"),l=e.map(m=>m+`
37
- `).join(""),c=yt(n[0]),u=m=>r?!c.includes(m):c.includes(m),h=[...l],d=()=>!1;if(a){if(h=h.filter(m=>!u(m)),o){if(n.length<2)throw new S("-ds needs two sets");let m=yt(n[1]);d=g=>m.includes(g)}}else if(n.length===2)if(r){let m=yt(n[1]),g=m[m.length-1];if(new Set(m).size!==1||g===void 0)throw new S("-c with a multi-character set2");h=h.map(_=>u(_)?g:_),d=_=>_===g}else{let m=c,g=yt(n[1],m.length);if(K(t,"t")?m=m.slice(0,g.length):g.length<m.length&&(g=[...g,...Array(m.length-g.length).fill(g[g.length-1])]),!g.length)throw new S("empty set2");let _=new Map;m.forEach((b,w)=>_.set(b,g[w])),h=h.map(b=>_.get(b)??b),d=b=>g.includes(b)}else if(o)d=u;else throw new S("tr needs two sets");o&&(h=h.filter((m,g)=>!(g>0&&m===h[g-1]&&d(m))));let p=h.join("");if(p==="")return[];let f=p.split(`
38
- `);return f[f.length-1]===""&&f.pop(),f}function Ln(s){return s.flatMap((e,t)=>t>0&&/^(-n|-c|--lines|--bytes)$/.test(s[t-1]??"")?[e]:e&&/^-\d+$/.test(e)?["-n",e.slice(1)]:e&&/^\+\d+$/.test(e)?["-n",e]:[e])}function Fo(s,e){let t=te(Ln(s),{flags:"qvz",values:"nc",long:{lines:"n",bytes:"c",quiet:"q",silent:"q",verbose:"v"}}),n=Y(t,"c");if(n!==void 0){let o=e.map(u=>u+`
30
+ `;)this.i++;return e.text=this.src.slice(n,this.i),e}case"q":case"Q":{let n=/^\s*\d+/.exec(this.src.slice(this.i));return n&&(this.i+=n[0].length),e}case"{":return e.block=this.script(!0),e;case"d":case"p":case"=":return e;default:throw new ae}}};function yo(s,e){return s.replace(/\\(.)/g,(t,n)=>n==="n"?`
31
+ `:n==="t"?" ":n===e?e:n)}function ko(s,e){let t="",n="",r="",a=o=>{for(let l of o){let c=n==="U"?l.toUpperCase():n==="L"?l.toLowerCase():l;r&&(c=r==="u"?c.toUpperCase():c.toLowerCase(),r=""),t+=c}};for(let o=0;o<s.length;o++){let l=s[o];if(l==="&"){a(e[0]);continue}if(l!=="\\"||o+1>=s.length){a(l);continue}let c=s[++o];/[0-9]/.test(c)?a(e[Number(c)]??""):c==="n"?a(`
32
+ `):c==="t"?a(" "):c==="U"||c==="L"?n=c:c==="E"?n="":c==="u"||c==="l"?r=c:a(c)}return t}function Dn(s,e,t,n,r){switch(s.kind){case"line":return t===s.n;case"last":return n;case"step":return s.step===0?t===s.first:t>=s.first&&(t-s.first)%s.step===0;case"re":{let a=s.re??r.lastRe;return a?(r.lastRe=a,new RegExp(a.source,a.flags).test(e)):!1}}}function $o(s,e,t,n,r){let a;if(!s.a1)a=!0;else if(!s.a2)a=Dn(s.a1,e,t,n,r);else if(s.active){a=!0;let o=s.a2;o.kind==="plus"?t>=s.endLine&&(s.active=!1):o.kind==="line"?t>=o.n&&(s.active=!1):Dn(o,e,t,n,r)&&(s.active=!1)}else if(Dn(s.a1,e,t,n,r)){a=!0;let o=s.a2;o.kind==="plus"?(s.endLine=t+o.n,s.active=o.n>0):o.kind==="line"?s.active=o.n>t:s.active=!0}else a=!1;return s.neg?!a:a}function gr(s,e,t,n,r,a,o){for(let l of s){if(r.quit)return e;if($o(l,e,t,n,r))switch(l.name){case"d":return;case"p":r.out.push(e);break;case"=":r.out.push(String(t));break;case"i":r.out.push(l.text);break;case"a":a.push(l.text);break;case"c":(!l.a2||!l.active)&&r.out.push(l.text);return;case"q":return r.quit=!0,r.printQuit=!o,e;case"Q":return r.quit=!0,r.printQuit=!1,e;case"y":{let c=[...l.from],u=[...l.to];e=[...e].map(h=>c.includes(h)?u[c.indexOf(h)]:h).join("");break}case"s":{let c=l.re??r.lastRe;if(!c)break;r.lastRe=c;let u=new RegExp(c.source,c.flags+"g"),h=0,d=!1;e=e.replace(u,(...p)=>{if(h++,!(l.nth?l.global?h>=l.nth:h===l.nth:l.global||h===1))return p[0];d=!0;let m=p.slice(0,-2).filter(g=>typeof g=="string"||g===void 0);return ko(l.rep,m)}),d&&l.print&&r.out.push(e);break}case"{":{let c=gr(l.block,e,t,n,r,a,o);if(c===void 0)return;e=c;break}}}return e}function wt(s,e,t){let n;try{n=new Kt(s,t.extended?"ere":"bre").script()}catch(a){if(a instanceof ae)return;throw a}let r={out:[],quit:!1,printQuit:!1};return e.forEach((a,o)=>{if(r.quit)return;let l=[],c=gr(n,a,o+1,o===e.length-1,r,l,t.quiet);c!==void 0&&(!t.quiet&&!r.quit||r.printQuit)&&r.out.push(c),r.out.push(...l)}),r.out.flatMap(a=>a.split(`
33
+ `))}function Xt(s,e){let t,n;try{t=new Kt(s,e.extended?"ere":"bre"),n=t.script()}catch(g){if(g instanceof ae)return;throw g}let r=t.patterns.map(g=>({...g,rx:new RegExp(g.re.source,g.re.flags)})),a=g=>!r.some(_=>!_.rx.test("")&&_.rx.test(g)),o=g=>[`line ${g}`,`text ${g}`,`data ${g}`,`note ${g}`].find(a)??`${g}`,l=[],c;for(let g of r){let _=be(g.re,3);if(!_)continue;let b=_.matching[0],w=g.re.source,y=w.startsWith("^"),N=w.endsWith("$")&&!w.endsWith("\\$"),R=b;if(g.kind==="s"){let v=_.matching.find(E=>E!==b&&!/^abc |\sxyz$/.test(E))??b;R=!y&&!N?`${b} ${v}`:y&&!N?`${b}text`:y?b:`text${b}`,c??=R}l.includes(R)||l.push(R)}for(let g of Zt(n))g.name==="y"&&g.from&&l.push(`${g.from} ${g.from}`);let u=Math.max(0,..._r(n));if(u>8)return;let h=Zt(n).some(g=>g.a1),d=h&&Zt(n).every(g=>(!g.a1||g.a1.kind!=="re")&&(!g.a2||g.a2.kind!=="re")),p=[],f=1;if(d&&c){let g=Math.max(u+1,3);for(let _=1;_<=g;_++)p.push(`${c} ${_}`)}else{h&&p.push(o(f++));for(let g of l)p.push(g),h&&p.push(o(f++));for(l.length||p.push(o(f++),o(f++));p.length<Math.max(u+1,h?3:1);)p.push(o(f++))}if(p.length>8)return;let m=wt(s,p,e);return m&&{input:p,output:m}}function Zt(s){return s.flatMap(e=>[e,...e.block?Zt(e.block):[]])}function _r(s){return s.flatMap(e=>[...e.a1?.kind==="line"?[e.a1.n]:e.a1?.kind==="step"?[e.a1.first+(e.a1.step||0)]:[],...e.a2?.kind==="line"?[e.a2.n]:e.a2?.kind==="plus"?[(e.a1?.kind==="line"?e.a1.n:1)+e.a2.n]:[],...e.block?_r(e.block):[]])}var ve=class extends Error{};function vo(s,e){let t=0;for(let n=e;n<s.length;n++){if(s[n]==="\\"){n++;continue}if(s[n]==="{")t++;else if(s[n]==="}"&&--t===0)return n}return-1}function Eo(s,e,t){let n=[],r=0;for(let a=e+1;a<t;a++){if(s[a]==="\\"){a++;continue}s[a]==="{"?r++:s[a]==="}"?r--:s[a]===","&&r===0&&n.push(a)}return n}function So(s){let e=/^(-?\d+)\.\.(-?\d+)(?:\.\.(-?\d+))?$/.exec(s);if(e){let[n,r]=[Number(e[1]),Number(e[2])],a=Math.abs(Number(e[3]??1))||1,o=/^-?0\d/.test(e[1])||/^-?0\d/.test(e[2])?Math.max(e[1].length,e[2].length):0,l=[];for(let c=n;n<=r?c<=r:c>=r;c+=n<=r?a:-a)if(l.push(o?c<0?"-"+String(-c).padStart(o-1,"0"):String(c).padStart(o,"0"):String(c)),l.length>500)throw new ve("too long");return l}let t=/^([A-Za-z])\.\.([A-Za-z])(?:\.\.(-?\d+))?$/.exec(s);if(t){let[n,r]=[t[1].charCodeAt(0),t[2].charCodeAt(0)],a=Math.abs(Number(t[3]??1))||1,o=[];for(let l=n;n<=r?l<=r:l>=r;l+=n<=r?a:-a)o.push(String.fromCharCode(l));return o}}function yr(s){return zn(s)?.map(t=>t.replace(/\\(.)/g,"$1")).filter(t=>t!=="")}function zn(s){for(let e=0;e<s.length;e++){if(s[e]==="\\"){e++;continue}if(s[e]!=="{"||s[e-1]==="$")continue;let t=vo(s,e);if(t<0)return;let n=s.slice(e+1,t),r=s.slice(0,e),a=s.slice(t+1),o=Eo(s,e,t),l;if(o.length){l=[];let h=e+1;for(let d of[...o,t])l.push(s.slice(h,d)),h=d+1}else l=So(n);if(!l)continue;let c=zn(a)??[a],u=[];for(let h of l)for(let d of zn(h)??[h])for(let p of c)u.push(r+d+p);if(u.length>500)throw new ve("too long");return u}}function kr(s){return/(^|[^\\])([*?]|\[[^\]]+\])/.test(s)}function Wn(s,e){if(/[?*+@!]\(/.test(s))return;let t="",n=e==="file"?"[^/]":"[\\s\\S]";for(let r=0;r<s.length;r++){let a=s[r];if(a==="\\"&&r+1<s.length){t+=s[++r].replace(/[.*+?^${}()|[\]\\/]/g,"\\$&");continue}if(a==="*"){t+=`${n}*`;continue}if(a==="?"){t+=n;continue}if(a==="["){let o=s.indexOf("]",r+2);if(o>0){let l=s.slice(r+1,o),c=l[0]==="!"||l[0]==="^";c&&(l=l.slice(1)),l=l.replace(/\[:(\w+):\]/g,(u,h)=>({digit:"0-9",alpha:"A-Za-z",alnum:"A-Za-z0-9",upper:"A-Z",lower:"a-z",space:"\\s"})[h]??"").replace(/\\/g,"\\\\").replace(/\]/g,"\\]"),t+=`[${c?"^":""}${l}]`,r=o;continue}}t+=a.replace(/[.*+?^${}()|[\]\\/]/g,"\\$&")}try{return new RegExp(`^${t}$`)}catch{return}}function Ae(s,e,t){let n=Wn(s,t);return!n||t==="file"&&e.split("/").some((r,a)=>r.startsWith(".")&&!s.split("/")[a]?.startsWith("."))?!1:n.test(e)}var br=["app","data","error","x"];function yt(s,e){if(!Wn(s,e))return;let t=c=>{let u="";for(let h=0;h<s.length;h++){let d=s[h];if(d==="\\"&&h+1<s.length){u+=s[++h];continue}if(d==="*"){u+=c===3?"":br[c%br.length];continue}if(d==="?"){u+="abc1"[c%4];continue}if(d==="["){let p=s.indexOf("]",h+2);if(p>0){let f=new RegExp(`^${Wn(s.slice(h,p+1),"value").source.slice(1,-1)}$`),g="abcxyz0123456789ABC-_defghijklmnopqrstuvwDEFGHIJKLMNOPQRSTUVWXYZ.+@%,=~".split("").filter(_=>f.test(_));u+=g[c%Math.max(g.length,1)]??"a",h=p;continue}}u+=d}return u},n=[];for(let c=0;c<6&&n.length<3;c++){let u=t(c);u&&!n.includes(u)&&Ae(s,u,e)&&n.push(u)}if(!n.length)return;let r=n[0],a=/\.[^./]+$/.exec(s)?.[0],o=[a?r.slice(0,-a.length)+(a===".txt"?".md":".txt"):r+".bak",e==="file"?"."+r:r.toUpperCase(),r.slice(0,-1),r.slice(1),"x"+r,r+"x",r.toUpperCase()],l=[...new Set(o)].filter(c=>c&&c!==r&&!Ae(s,c,e)).slice(0,2);return{matching:n,nonMatching:l}}var xr={n:`
34
+ `,t:" ",r:"\r",a:"\x07",b:"\b",e:"\x1B",E:"\x1B",f:"\f",v:"\v","\\":"\\",'"':'"',"'":"'"};function wr(s,e){let t="";for(let n=0;n<s.length;n++){if(s[n]!=="\\"||n+1>=s.length){t+=s[n];continue}let r=s.slice(n+1),a;if(e&&r[0]==="c")return[t,!0];if(a=(e?/^0[0-7]{0,3}/:/^[0-7]{1,3}/).exec(r)){t+=String.fromCharCode(parseInt(a[0],8)),n+=a[0].length;continue}if(a=/^x([0-9a-fA-F]{1,2})/.exec(r)){t+=String.fromCharCode(parseInt(a[1],16)),n+=a[0].length;continue}if((a=/^u([0-9a-fA-F]{1,4})/.exec(r))||(a=/^U([0-9a-fA-F]{1,8})/.exec(r))){t+=String.fromCodePoint(parseInt(a[1],16)),n+=a[0].length;continue}if(xr[r[0]]!==void 0&&(e||r[0]!=="'")){t+=xr[r[0]],n++;continue}t+="\\"}return[t,!1]}function No(s){if(s==="")return"''";if(/[\x00-\x1f\x7f]/.test(s))throw new ve("%q with control characters");return s.replace(/[^A-Za-z0-9_\-.,:/@%+=^]/g,"\\$&")}function Un(s){if(s===void 0||s==="")return 0;if(/^['"]/.test(s))return s.length>1?s.codePointAt(1):0;let e=s.trim();if(/^[-+]?0[xX][0-9a-fA-F]+$/.test(e))return parseInt(e,16);if(/^[-+]?0[0-7]+$/.test(e))return parseInt(e,8);if(/^[-+]?(\d+\.?\d*|\.\d+)([eE][-+]?\d+)?$/.test(e))return Number(e);throw new ve("invalid number")}function Qt(s,e){let t="",n=0;for(let r=0;r<50;r++){let a=n,o=0,l=!1;for(;o<s.length;){let c=s[o];if(c==="\\"){let w=/^\\(0[0-7]{0,3}|[0-7]{1,3}|x[0-9a-fA-F]{1,2}|u[0-9a-fA-F]{1,4}|U[0-9a-fA-F]{1,8}|.)/.exec(s.slice(o));t+=wr(w[0],!1)[0],o+=w[0].length;continue}if(c!=="%"){t+=c,o++;continue}let u=/^%([-+ #0']*)(\*|\d+)?(?:\.(\*|\d*))?([diouxXeEfFgGcsbq%])/.exec(s.slice(o));if(!u)throw new ve("format");o+=u[0].length;let[,h,d,p,f]=u;if(f==="%"){t+="%";continue}let m=d==="*"?Un(e[n++]):d,g=p==="*"?Un(e[n++]):p,_=`%${h.replace("'","")}${m??""}${g!==void 0?"."+g:""}`,b=e[n++];if(f==="b"){let[w,y]=wr(b??"",!0);if(t+=_e(`${_}s`,[w]),y){l=!0;break}continue}if(f==="q"){t+=_e(`${_}s`,[No(b??"")]);continue}if(f==="s"){t+=_e(`${_}s`,[b??""]);continue}if(f==="c"){t+=_e(`${_}s`,[(b??"").slice(0,1)]);continue}t+=_e(`${_}${f}`,[Un(b)])}if(l||n>=e.length||n===a)return t}throw new ve("too many rounds")}var A=class extends Error{};function te(s,e){let t=[],n=[],r=!1;for(let a=0;a<s.length;a++){let o=s[a];if(o===void 0||r||o==="-"||!o.startsWith("-")){n.push(o);continue}if(o==="--"){r=!0;continue}if(o.startsWith("--")){let l=o.indexOf("="),c=l<0?o.slice(2):o.slice(2,l),u=e.long?.[c];if(!u)throw new A(`--${c}`);if(e.values.includes(u)){let h=l<0?s[++a]:o.slice(l+1);if(h===void 0)throw new A("missing value");t.push([u,h])}else t.push([u,""]);continue}for(let l=1;l<o.length;l++){let c=o[l];if(e.values.includes(c)){let u=l+1<o.length?o.slice(l+1):s[++a];if(u===void 0)throw new A("missing value");t.push([c,u]);break}if(!e.flags.includes(c))throw new A(`-${c}`);t.push([c,""])}}return{opts:t,operands:n}}var X=(s,e)=>s.opts.some(([t])=>t===e),Y=(s,e)=>[...s.opts].reverse().find(([t])=>t===e)?.[1],Tr=(s,e)=>s.opts.filter(([t])=>t===e).map(([,t])=>t),Mr={flags:"bdfghinrsuVM",values:"ktS",long:{"ignore-leading-blanks":"b","dictionary-order":"d","ignore-case":"f","general-numeric-sort":"g","human-numeric-sort":"h","numeric-sort":"n",reverse:"r",stable:"s",unique:"u","version-sort":"V",key:"k","field-separator":"t","buffer-size":"S"}};function Rr(s,e){let t=/^(\d+)(?:\.(\d+))?([bdfghinrV]*)(?:,(\d+)(?:\.(\d+))?([bdfghinrV]*))?$/.exec(s);if(!t)throw new A(`key ${s}`);let n=(t[3]??"")+(t[6]??"");return{sf:Number(t[1]),sc:t[2]?Number(t[2]):1,ef:t[4]?Number(t[4]):0,ec:t[5]?Number(t[5]):0,opts:/[dfghinrV]/.test(n)?n:n+e}}function To(s,e){let t=[0];if(e!==void 0){for(let n=0;n<s.length;n++)s[n]===e&&t.push(n+1);return t}for(let n=1;n<s.length;n++)/[ \t]/.test(s[n])&&!/[ \t]/.test(s[n-1])&&t.push(n);return t}function $r(s,e,t){let n=To(s,t),r=l=>l<n.length?n[l]-(t!==void 0?1:0):s.length;if(e.sf>n.length)return"";let a=n[e.sf-1];if(e.opts.includes("b"))for(;a<s.length&&/[ \t]/.test(s[a]);)a++;a=Math.min(a+e.sc-1,r(e.sf));let o;if(!e.ef)o=s.length;else if(e.ef>n.length)o=s.length;else if(!e.ec)o=r(e.ef);else{let l=n[e.ef-1];if(e.opts.includes("b"))for(;l<s.length&&/[ \t]/.test(s[l]);)l++;o=Math.min(l+e.ec,r(e.ef))}return o>a?s.slice(a,o):""}function vr(s){let e=/^\s*(-?\d*\.?\d+|-?\d+\.?)/.exec(s);return e?Number(e[1]):0}function Er(s){let e=/^\s*(-?\d*\.?\d+)\s*([KMGTPEZY]?)/i.exec(s);if(!e)return 0;let t="KMGTPEZY".indexOf(e[2].toUpperCase())+1;return(e[2]?t*1e30*Math.sign(Number(e[1])||1):0)+Number(e[1])}function Mo(s,e){let t=a=>a.match(/\d+|\D+/g)??[],n=t(s),r=t(e);for(let a=0;a<Math.max(n.length,r.length);a++){let o=n[a]??"",l=r[a]??"";if(/^\d/.test(o)&&/^\d/.test(l)){let c=Number(o)-Number(l);if(c)return c}else if(o!==l)return o<l?-1:1}return 0}var Vn=(s,e)=>s<e?-1:s>e?1:0;function Ro(s,e,t){let n=s,r=e;t.includes("d")&&(n=n.replace(/[^A-Za-z0-9 \t]/g,""),r=r.replace(/[^A-Za-z0-9 \t]/g,"")),t.includes("i")&&(n=n.replace(/[^\x20-\x7e]/g,""),r=r.replace(/[^\x20-\x7e]/g,"")),t.includes("f")&&(n=n.toUpperCase(),r=r.toUpperCase());let a;return t.includes("n")?a=vr(n)-vr(r):t.includes("g")?a=(parseFloat(n)||0)-(parseFloat(r)||0):t.includes("h")?a=Er(n)-Er(r):t.includes("V")?a=Mo(n,r):a=Vn(n,r),t.includes("r")?-a:a}function Ao(s,e){let t=te(s,Mr);if(X(t,"M"))throw new A("month sort");let n=t.opts.filter(([d])=>"bdfghinrV".includes(d)).map(([d])=>d).join(""),r=Y(t,"t");if(r!==void 0&&[...r].length!==1)throw new A("-t");let a=Tr(t,"k").map(d=>Rr(d,n)),o=a.length?a:[{sf:1,sc:1,ef:0,ec:0,opts:n}],l=(d,p)=>{for(let f of o){let m=Ro($r(d,f,r),$r(p,f,r),f.opts);if(m)return m}return 0},c=X(t,"s")||X(t,"u"),u=(d,p)=>c?0:n.includes("r")?-Vn(d,p):Vn(d,p),h=[...e].sort((d,p)=>l(d,p)||u(d,p));return X(t,"u")?h.filter((d,p)=>p===0||l(h[p-1],d)!==0):h}var Ar={flags:"cdDiuz",values:"fsw",long:{count:"c",repeated:"d","all-repeated":"D","ignore-case":"i",unique:"u","skip-fields":"f","skip-chars":"s","check-chars":"w"}};function Co(s,e){let t=te(s,Ar);if(X(t,"z"))throw new A("-z");let n=Number(Y(t,"f")??0),r=Number(Y(t,"s")??0),a=Y(t,"w")!==void 0?Number(Y(t,"w")):1/0,o=u=>{let h=u;for(let d=0;d<n;d++)h=h.replace(/^[ \t]*[^ \t]*/,"");return h=h.slice(r).slice(0,a),X(t,"i")?h.toLowerCase():h},l=[];for(let u of e){let h=l[l.length-1];h&&o(h[0])===o(u)?h.push(u):l.push([u])}let c=[];for(let u of l)if(!(X(t,"d")&&u.length<2)&&!(X(t,"u")&&u.length>1)){if(X(t,"D")){u.length>1&&c.push(...u);continue}c.push(X(t,"c")?`${String(u.length).padStart(7)} ${u[0]}`:u[0])}return c}var en={flags:"sn",values:"bcfdO",long:{bytes:"b",characters:"c",fields:"f",delimiter:"d","only-delimited":"s","output-delimiter":"O",complement:"C"}};function Sr(s){let e=s.split(",").map(t=>{let n=/^(\d*)(-?)(\d*)$/.exec(t);if(!n||!n[1]&&!n[3])throw new A(`list ${s}`);let r=n[1]?Number(n[1]):1,a=n[2]?n[3]?Number(n[3]):1/0:r;return[r,a]});return t=>e.some(([n,r])=>t>=n&&t<=r)}function Io(s,e){let t=s.includes("--complement"),n=te(s.filter(l=>l!=="--complement"),{...en,flags:en.flags+"C"}),r=l=>c=>t?!l(c):l(c),a=Y(n,"f"),o=Y(n,"c")??Y(n,"b");if(a!==void 0){let l=Y(n,"d")??" ";if([...l].length!==1)throw new A("-d");let c=Y(n,"O")??l,u=r(Sr(a));return e.flatMap(h=>h.includes(l)?[h.split(l).filter((d,p)=>u(p+1)).join(c)]:X(n,"s")?[]:[h])}if(o!==void 0){let l=r(Sr(o)),c=Y(n,"O");return e.map(u=>{let h=[...u];if(c===void 0)return h.filter((p,f)=>l(f+1)).join("");let d="";return h.forEach((p,f)=>{l(f+1)&&(d&&!l(f)&&(d+=c),d+=p)}),d})}throw new A("cut needs -f, -c or -b")}var Nr={alpha:"ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz",upper:"ABCDEFGHIJKLMNOPQRSTUVWXYZ",lower:"abcdefghijklmnopqrstuvwxyz",digit:"0123456789",alnum:"0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz",space:`
35
+ \v\f\r `,blank:" ",punct:"!\"#$%&'()*+,-./:;<=>?@[\\]^_`{|}~",xdigit:"0123456789ABCDEFabcdef"};function kt(s,e){let t=[],n=-1,r="",a=(o,l)=>{let c=/^\\([0-7]{1,3})/.exec(o.slice(l));if(c)return[String.fromCharCode(parseInt(c[1],8)),c[0].length];let u={n:`
36
+ `,t:" ",r:"\r",a:"\x07",b:"\b",f:"\f",v:"\v","\\":"\\"};return o[l]==="\\"&&l+1<o.length?[u[o[l+1]]??o[l+1],2]:[o[l],1]};for(let o=0;o<s.length;){let l=/^\[:(\w+):\]/.exec(s.slice(o));if(l){if(!Nr[l[1]])throw new A(`class ${l[1]}`);t.push(...Nr[l[1]]),o+=l[0].length;continue}let c=/^\[(\\?.)\*(\d*)\]/.exec(s.slice(o));if(c){let[p]=a(c[1],0);c[2]&&Number(c[2])>0?t.push(...Array(Number(c[2])).fill(p)):(n=t.length,r=p),o+=c[0].length;continue}let u=/^\[=(.)=\]/.exec(s.slice(o));if(u){t.push(u[1]),o+=u[0].length;continue}let[h,d]=a(s,o);if(s[o+d]==="-"&&o+d+1<s.length){let[p,f]=a(s,o+d+1);if(p.charCodeAt(0)<h.charCodeAt(0))throw new A("reverse range");for(let m=h.charCodeAt(0);m<=p.charCodeAt(0);m++)t.push(String.fromCharCode(m));o+=d+1+f;continue}t.push(h),o+=d}return n>=0&&t.splice(n,0,...Array(Math.max(0,(e??t.length)-t.length)).fill(r)),t}var Cr={flags:"cCdst",values:"",long:{complement:"c",delete:"d","squeeze-repeats":"s","truncate-set1":"t"}};function Fo(s,e){let t=te(s,Cr),n=t.operands;if(n.some(m=>m===void 0)||!n.length||n.length>2)throw new A("sets");let r=X(t,"c")||X(t,"C"),a=X(t,"d"),o=X(t,"s"),l=e.map(m=>m+`
37
+ `).join(""),c=kt(n[0]),u=m=>r?!c.includes(m):c.includes(m),h=[...l],d=()=>!1;if(a){if(h=h.filter(m=>!u(m)),o){if(n.length<2)throw new A("-ds needs two sets");let m=kt(n[1]);d=g=>m.includes(g)}}else if(n.length===2)if(r){let m=kt(n[1]),g=m[m.length-1];if(new Set(m).size!==1||g===void 0)throw new A("-c with a multi-character set2");h=h.map(_=>u(_)?g:_),d=_=>_===g}else{let m=c,g=kt(n[1],m.length);if(X(t,"t")?m=m.slice(0,g.length):g.length<m.length&&(g=[...g,...Array(m.length-g.length).fill(g[g.length-1])]),!g.length)throw new A("empty set2");let _=new Map;m.forEach((b,w)=>_.set(b,g[w])),h=h.map(b=>_.get(b)??b),d=b=>g.includes(b)}else if(o)d=u;else throw new A("tr needs two sets");o&&(h=h.filter((m,g)=>!(g>0&&m===h[g-1]&&d(m))));let p=h.join("");if(p==="")return[];let f=p.split(`
38
+ `);return f[f.length-1]===""&&f.pop(),f}function Jn(s){return s.flatMap((e,t)=>t>0&&/^(-n|-c|--lines|--bytes)$/.test(s[t-1]??"")?[e]:e&&/^-\d+$/.test(e)?["-n",e.slice(1)]:e&&/^\+\d+$/.test(e)?["-n",e]:[e])}function Oo(s,e){let t=te(Jn(s),{flags:"qvz",values:"nc",long:{lines:"n",bytes:"c",quiet:"q",silent:"q",verbose:"v"}}),n=Y(t,"c");if(n!==void 0){let o=e.map(u=>u+`
39
39
  `).join(""),l=Number(n);return(l<0||n.startsWith("-")?o.slice(0,Math.max(0,o.length-Math.abs(l))):o.slice(0,l)).split(`
40
- `).filter((u,h,d)=>h<d.length-1||u!=="")}let r=Y(t,"n")??"10",a=Number(r);if(Number.isNaN(a))throw new S("-n");return r.startsWith("-")?e.slice(0,Math.max(0,e.length+a)):e.slice(0,a)}function Co(s,e){let t=te(Ln(s),{flags:"fFqvz",values:"ncs",long:{lines:"n",bytes:"c",follow:"f",quiet:"q",silent:"q",verbose:"v"}}),n=Y(t,"c");if(n!==void 0){let o=e.map(u=>u+`
40
+ `).filter((u,h,d)=>h<d.length-1||u!=="")}let r=Y(t,"n")??"10",a=Number(r);if(Number.isNaN(a))throw new A("-n");return r.startsWith("-")?e.slice(0,Math.max(0,e.length+a)):e.slice(0,a)}function Lo(s,e){let t=te(Jn(s),{flags:"fFqvz",values:"ncs",long:{lines:"n",bytes:"c",follow:"f",quiet:"q",silent:"q",verbose:"v"}}),n=Y(t,"c");if(n!==void 0){let o=e.map(u=>u+`
41
41
  `).join(""),l=Math.abs(Number(n));return(n.startsWith("+")?o.slice(l-1):o.slice(Math.max(0,o.length-l))).split(`
42
- `).filter((u,h,d)=>h<d.length-1||u!=="")}let r=Y(t,"n")??"10",a=Math.abs(Number(r));if(Number.isNaN(a))throw new S("-n");return r.startsWith("+")?e.slice(Math.max(0,a-1)):e.slice(Math.max(0,e.length-a))}function jn(s){let e=s.map(_=>_&&/^-\d/.test(_)?`\0${_}`:_),t=te(e,{flags:"w",values:"sf",long:{"equal-width":"w",separator:"s",format:"f"}}),n=t.operands.map(_=>_?.replace("\0",""));if(n.some(_=>_===void 0||!/^-?(\d+\.?\d*|\.\d+)$/.test(_)))throw new S("seq operands");let[r,a,o]=n.length===1?["1","1",n[0]]:n.length===2?[n[0],"1",n[1]]:[n[0],n[1],n[2]],l=_=>_.includes(".")?_.split(".")[1].length:0,c=Math.max(l(r),l(a)),u=Number(r),h=Number(a),d=Number(o);if(h===0)throw new S("zero increment");let p=[];for(let _=0;p.length<200;_++){let b=u+_*h;if(h>0?b>d+1e-9:b<d-1e-9)break;p.push(b.toFixed(c))}if(p.length>=200)throw new S("too long");if(Y(t,"f")!==void 0)throw new S("-f");let m=p;if(K(t,"w")){let _=Math.max(...p.map(b=>b.length),d.toFixed(c).length);m=p.map(b=>b.startsWith("-")?"-"+b.slice(1).padStart(_-1,"0"):b.padStart(_,"0"))}let g=Y(t,"s");return g===void 0?m:[m.join(g)]}function Io(s){let e=te(s,{flags:"az",values:"s",long:{multiple:"a",suffix:"s",zero:"z"}});if(e.operands.some(o=>o===void 0)||!e.operands.length)throw new S("operands");let t=e.operands,n=K(e,"a")||K(e,"s"),r=Y(e,"s")??(n?void 0:t[1]);return(n?t:[t[0]]).map(o=>{if(/^\/+$/.test(o))return"/";let l=o.replace(/\/+$/,"").split("/").pop()??"";return r&&l!==r&&l.endsWith(r)?l.slice(0,-r.length):l})}function Oo(s){let e=te(s,{flags:"z",values:"",long:{zero:"z"}});if(e.operands.some(t=>t===void 0)||!e.operands.length)throw new S("operands");return e.operands.map(t=>{if(/^\/+$/.test(t))return"/";let n=t.replace(/\/+$/,""),r=n.lastIndexOf("/");if(r<0)return".";let a=n.slice(0,r).replace(/\/+$/,"");return a===""?"/":a})}var je={sort:To,uniq:Mo,cut:Ro,tr:Ao,head:Fo,tail:Co},Po=["banana","apple","cherry","grape","melon","peach"],it=[Po,["red","green","blue","yellow","pink","white"],["tokyo","osaka","kyoto","nara","kobe","sendai"]];function qn(s,e){try{switch(s){case"sort":{let t=te(e,yr),n=t.opts.filter(([p])=>"bdfghinrV".includes(p)).map(([p])=>p).join(""),r=Y(t,"t")??" ",a=wr(t,"k").map(p=>kr(p,n)),o=K(t,"u"),l=p=>p.includes("h")?"h":p.includes("V")?"V":/[ng]/.test(p)?"n":p.includes("f")?"f":"s",c=(p,f)=>{switch(p){case"n":return["10","9","100","25","9"];case"h":return["2K","512","1G","10M","512"];case"V":return["1.10","1.2","1.9","2.0","1.2"];case"f":return["banana","Apple","cherry","apple","Apple"];default:return[...it[f%it.length].slice(0,4),it[f%it.length][1]]}};if(!a.length){let p=c(l(n),0);return o?p:p.slice(0,4)}let u=Math.max(...a.map(p=>Math.max(p.sf,p.ef)),2),h=Array.from({length:u},(p,f)=>{let m=a.find(g=>g.sf===f+1);return m?l(m.opts):"s"}),d=Array.from({length:o?5:4},(p,f)=>h.map((m,g)=>{let _=c(m,g)[f];return m==="s"&&g>0?it[g%it.length][(f*2+g)%6]:_}));return o&&(d[4]=[...d[1]]),d.map(p=>p.join(r))}case"uniq":{let t=te(e,$r);return K(t,"i")?["apple","Apple","banana","apple","cherry","cherry"]:Y(t,"f")?["1 apple","2 apple","3 banana","4 apple","5 cherry","6 cherry"]:["apple","apple","banana","apple","cherry","cherry"]}case"cut":{let t=te(e.filter(o=>o!=="--complement"),{...Qt,flags:Qt.flags+"C"}),n=Y(t,"f")??Y(t,"c")??Y(t,"b")??"1",r=Math.max(...n.split(/[,-]/).filter(Boolean).map(Number));if(Y(t,"f")!==void 0){let o=Y(t,"d")??" ",l=Math.max(r+1,4),c=[["1","alice","tokyo","30","admin","x","y","z"],["2","bob","osaka","25","user","x","y","z"],["3","carol","kyoto","41","user","x","y","z"]].map(u=>Array.from({length:l},(h,d)=>u[d]??`f${d+1}`).join(o));return K(t,"s")?[...c,"no delimiter here"]:c}let a=Math.max(r+3,12);return["abcdefghijklmnopqrstuvwxyz".slice(0,a),"0123456789abcdefghijklmn".slice(0,a)]}case"tr":{let t=te(e,vr),n=t.operands[0]!==void 0?yt(t.operands[0]):[];if(K(t,"c")||K(t,"C"))return["Hello, World! #123"];if(n.includes(`
43
- `))return["one","two","three"];if(n.includes("\r"))return["line 1\r","line 2\r"];if(K(t,"s")&&n.includes(" "))return["too many spaces"];if(n.every(o=>/[A-Za-z]/.test(o))&&n.length>=10)return["Hello World 123"];let a=[...new Set(n)].filter(o=>o>=" ").slice(0,3).join("");return[`abc ${a} xyz ${a.slice(0,1)}`]}case"head":case"tail":{let t=te(Ln(e),{flags:"fFqvz",values:"ncs",long:{lines:"n",bytes:"c",follow:"f"}});if(Y(t,"c")!==void 0)return["abcdefghij","klmnopqrst"];let n=Math.abs(Number(Y(t,"n")??"10")),r=Math.min(Math.max(n+3,6),14);return Array.from({length:r},(a,o)=>`line ${o+1}`)}}}catch(t){if(t instanceof S)return;throw t}}function Er(s,e){try{if(s==="seq")return{output:jn(e)};if(s==="basename")return{output:Io(e)};if(s==="dirname")return{output:Oo(e)};let t=je[s];if(!t)return;let n=qn(s,e);return n?{input:n,output:t(e,n)}:void 0}catch(t){if(t instanceof S)return;throw t}}var Nr={flags:"0rtpx",values:"nLIdPsE",long:{null:"0","no-run-if-empty":"r",verbose:"t",interactive:"p",exit:"x","max-args":"n","max-lines":"L",replace:"I",delimiter:"d","max-procs":"P","max-chars":"s",eof:"E"}};function Sr(s){let e=[],t="",n=!1;for(let r=0;r<s.length;r++){let a=s[r];if(a==='"'||a==="'"){let o=s.indexOf(a,r+1);if(o<0)throw new S("unmatched quote");t+=s.slice(r+1,o),r=o,n=!0}else a==="\\"&&r+1<s.length?(t+=s[++r],n=!0):/\s/.test(a)?(n&&e.push(t),t="",n=!1):(t+=a,n=!0)}return n&&e.push(t),e}function kt(s,e){let t=s.findIndex((f,m)=>f===void 0||!f.startsWith("-")&&!/^-[nLIdPsE]$/.test(s[m-1]??"")),n=t<0?s:s.slice(0,t),r=te(n,Nr);if(r.operands.length)throw new S("unexpected operand");let a=t<0?["echo"]:s.slice(t);if(a.some(f=>f===void 0))throw new S("non-literal command");let o=a,l=f=>[...r.opts].reverse().find(([m])=>m===f)?.[1];if(l("s")!==void 0||l("E")!==void 0||r.opts.some(([f])=>f==="p"))throw new S("xargs option");let c=l("I"),u=r.opts.some(([f])=>f==="0")?"\0":l("d")?.replace(/^\\n$/,`
42
+ `).filter((u,h,d)=>h<d.length-1||u!=="")}let r=Y(t,"n")??"10",a=Math.abs(Number(r));if(Number.isNaN(a))throw new A("-n");return r.startsWith("+")?e.slice(Math.max(0,a-1)):e.slice(Math.max(0,e.length-a))}function Bn(s){let e=s.map(_=>_&&/^-\d/.test(_)?`\0${_}`:_),t=te(e,{flags:"w",values:"sf",long:{"equal-width":"w",separator:"s",format:"f"}}),n=t.operands.map(_=>_?.replace("\0",""));if(n.some(_=>_===void 0||!/^-?(\d+\.?\d*|\.\d+)$/.test(_)))throw new A("seq operands");let[r,a,o]=n.length===1?["1","1",n[0]]:n.length===2?[n[0],"1",n[1]]:[n[0],n[1],n[2]],l=_=>_.includes(".")?_.split(".")[1].length:0,c=Math.max(l(r),l(a)),u=Number(r),h=Number(a),d=Number(o);if(h===0)throw new A("zero increment");let p=[];for(let _=0;p.length<200;_++){let b=u+_*h;if(h>0?b>d+1e-9:b<d-1e-9)break;p.push(b.toFixed(c))}if(p.length>=200)throw new A("too long");if(Y(t,"f")!==void 0)throw new A("-f");let m=p;if(X(t,"w")){let _=Math.max(...p.map(b=>b.length),d.toFixed(c).length);m=p.map(b=>b.startsWith("-")?"-"+b.slice(1).padStart(_-1,"0"):b.padStart(_,"0"))}let g=Y(t,"s");return g===void 0?m:[m.join(g)]}function Po(s){let e=te(s,{flags:"az",values:"s",long:{multiple:"a",suffix:"s",zero:"z"}});if(e.operands.some(o=>o===void 0)||!e.operands.length)throw new A("operands");let t=e.operands,n=X(e,"a")||X(e,"s"),r=Y(e,"s")??(n?void 0:t[1]);return(n?t:[t[0]]).map(o=>{if(/^\/+$/.test(o))return"/";let l=o.replace(/\/+$/,"").split("/").pop()??"";return r&&l!==r&&l.endsWith(r)?l.slice(0,-r.length):l})}function jo(s){let e=te(s,{flags:"z",values:"",long:{zero:"z"}});if(e.operands.some(t=>t===void 0)||!e.operands.length)throw new A("operands");return e.operands.map(t=>{if(/^\/+$/.test(t))return"/";let n=t.replace(/\/+$/,""),r=n.lastIndexOf("/");if(r<0)return".";let a=n.slice(0,r).replace(/\/+$/,"");return a===""?"/":a})}var je={sort:Ao,uniq:Co,cut:Io,tr:Fo,head:Oo,tail:Lo},qo=["banana","apple","cherry","grape","melon","peach"],it=[qo,["red","green","blue","yellow","pink","white"],["tokyo","osaka","kyoto","nara","kobe","sendai"]];function Hn(s,e){try{switch(s){case"sort":{let t=te(e,Mr),n=t.opts.filter(([p])=>"bdfghinrV".includes(p)).map(([p])=>p).join(""),r=Y(t,"t")??" ",a=Tr(t,"k").map(p=>Rr(p,n)),o=X(t,"u"),l=p=>p.includes("h")?"h":p.includes("V")?"V":/[ng]/.test(p)?"n":p.includes("f")?"f":"s",c=(p,f)=>{switch(p){case"n":return["10","9","100","25","9"];case"h":return["2K","512","1G","10M","512"];case"V":return["1.10","1.2","1.9","2.0","1.2"];case"f":return["banana","Apple","cherry","apple","Apple"];default:return[...it[f%it.length].slice(0,4),it[f%it.length][1]]}};if(!a.length){let p=c(l(n),0);return o?p:p.slice(0,4)}let u=Math.max(...a.map(p=>Math.max(p.sf,p.ef)),2),h=Array.from({length:u},(p,f)=>{let m=a.find(g=>g.sf===f+1);return m?l(m.opts):"s"}),d=Array.from({length:o?5:4},(p,f)=>h.map((m,g)=>{let _=c(m,g)[f];return m==="s"&&g>0?it[g%it.length][(f*2+g)%6]:_}));return o&&(d[4]=[...d[1]]),d.map(p=>p.join(r))}case"uniq":{let t=te(e,Ar);return X(t,"i")?["apple","Apple","banana","apple","cherry","cherry"]:Y(t,"f")?["1 apple","2 apple","3 banana","4 apple","5 cherry","6 cherry"]:["apple","apple","banana","apple","cherry","cherry"]}case"cut":{let t=te(e.filter(o=>o!=="--complement"),{...en,flags:en.flags+"C"}),n=Y(t,"f")??Y(t,"c")??Y(t,"b")??"1",r=Math.max(...n.split(/[,-]/).filter(Boolean).map(Number));if(Y(t,"f")!==void 0){let o=Y(t,"d")??" ",l=Math.max(r+1,4),c=[["1","alice","tokyo","30","admin","x","y","z"],["2","bob","osaka","25","user","x","y","z"],["3","carol","kyoto","41","user","x","y","z"]].map(u=>Array.from({length:l},(h,d)=>u[d]??`f${d+1}`).join(o));return X(t,"s")?[...c,"no delimiter here"]:c}let a=Math.max(r+3,12);return["abcdefghijklmnopqrstuvwxyz".slice(0,a),"0123456789abcdefghijklmn".slice(0,a)]}case"tr":{let t=te(e,Cr),n=t.operands[0]!==void 0?kt(t.operands[0]):[];if(X(t,"c")||X(t,"C"))return["Hello, World! #123"];if(n.includes(`
43
+ `))return["one","two","three"];if(n.includes("\r"))return["line 1\r","line 2\r"];if(X(t,"s")&&n.includes(" "))return["too many spaces"];if(n.every(o=>/[A-Za-z]/.test(o))&&n.length>=10)return["Hello World 123"];let a=[...new Set(n)].filter(o=>o>=" ").slice(0,3).join("");return[`abc ${a} xyz ${a.slice(0,1)}`]}case"head":case"tail":{let t=te(Jn(e),{flags:"fFqvz",values:"ncs",long:{lines:"n",bytes:"c",follow:"f"}});if(Y(t,"c")!==void 0)return["abcdefghij","klmnopqrst"];let n=Math.abs(Number(Y(t,"n")??"10")),r=Math.min(Math.max(n+3,6),14);return Array.from({length:r},(a,o)=>`line ${o+1}`)}}}catch(t){if(t instanceof A)return;throw t}}function Ir(s,e){try{if(s==="seq")return{output:Bn(e)};if(s==="basename")return{output:Po(e)};if(s==="dirname")return{output:jo(e)};let t=je[s];if(!t)return;let n=Hn(s,e);return n?{input:n,output:t(e,n)}:void 0}catch(t){if(t instanceof A)return;throw t}}var Or={flags:"0rtpx",values:"nLIdPsE",long:{null:"0","no-run-if-empty":"r",verbose:"t",interactive:"p",exit:"x","max-args":"n","max-lines":"L",replace:"I",delimiter:"d","max-procs":"P","max-chars":"s",eof:"E"}};function Fr(s){let e=[],t="",n=!1;for(let r=0;r<s.length;r++){let a=s[r];if(a==='"'||a==="'"){let o=s.indexOf(a,r+1);if(o<0)throw new A("unmatched quote");t+=s.slice(r+1,o),r=o,n=!0}else a==="\\"&&r+1<s.length?(t+=s[++r],n=!0):/\s/.test(a)?(n&&e.push(t),t="",n=!1):(t+=a,n=!0)}return n&&e.push(t),e}function $t(s,e){let t=s.findIndex((f,m)=>f===void 0||!f.startsWith("-")&&!/^-[nLIdPsE]$/.test(s[m-1]??"")),n=t<0?s:s.slice(0,t),r=te(n,Or);if(r.operands.length)throw new A("unexpected operand");let a=t<0?["echo"]:s.slice(t);if(a.some(f=>f===void 0))throw new A("non-literal command");let o=a,l=f=>[...r.opts].reverse().find(([m])=>m===f)?.[1];if(l("s")!==void 0||l("E")!==void 0||r.opts.some(([f])=>f==="p"))throw new A("xargs option");let c=l("I"),u=r.opts.some(([f])=>f==="0")?"\0":l("d")?.replace(/^\\n$/,`
44
44
  `).replace(/^\\t$/," "),h;if(c!==void 0)return h=e.split(`
45
45
  `).map(f=>f.replace(/^[ \t]+/,"")).filter(f=>f!==""),h.map(f=>o.map(m=>m.split(c).join(f)));if(u!==void 0)h=e.split(u),(h[h.length-1]===""||u!==`
46
46
  `&&h[h.length-1]===`
47
47
  `)&&h.pop(),u!=="\0"&&h.length&&h[h.length-1].endsWith(`
48
48
  `)&&u!==`
49
49
  `&&(h[h.length-1]=h[h.length-1].slice(0,-1));else if(l("L")!==void 0){let f=Number(l("L")),m=e.split(`
50
- `).filter(_=>_.trim()!==""),g=[];for(let _=0;_<m.length;_+=f)g.push([...o,...Sr(m.slice(_,_+f).join(`
51
- `))]);return g}else h=Sr(e);let d=l("n")!==void 0?Number(l("n")):1/0;if(!h.length)return r.opts.some(([f])=>f==="r")?[]:[o];let p=[];for(let f=0;f<h.length;f+=d===1/0?h.length:d)p.push([...o,...h.slice(f,f+(d===1/0?h.length:d))]);return p}function $t(s){return s.map(e=>e===""?"''":/[^A-Za-z0-9_\-.,:/@%+=]/.test(e)?`'${e.replace(/'/g,"'\\''")}'`:e).join(" ")}function Tr(s){try{let e=te(s.slice(0,Math.max(0,s.findIndex((o,l)=>o===void 0||!o.startsWith("-")&&!/^-[nLIdPsE]$/.test(s[l-1]??"")))),Nr),t=o=>e.opts.find(([l])=>l===o)?.[1],n=["a.txt","b.txt","c.txt","d.txt","e.txt"],r;e.opts.some(([o])=>o==="0")?r=n.slice(0,3).join("\0")+"\0":t("d")!==void 0?r=n.slice(0,3).join(t("d").replace(/^\\n$/,`
50
+ `).filter(_=>_.trim()!==""),g=[];for(let _=0;_<m.length;_+=f)g.push([...o,...Fr(m.slice(_,_+f).join(`
51
+ `))]);return g}else h=Fr(e);let d=l("n")!==void 0?Number(l("n")):1/0;if(!h.length)return r.opts.some(([f])=>f==="r")?[]:[o];let p=[];for(let f=0;f<h.length;f+=d===1/0?h.length:d)p.push([...o,...h.slice(f,f+(d===1/0?h.length:d))]);return p}function vt(s){return s.map(e=>e===""?"''":/[^A-Za-z0-9_\-.,:/@%+=]/.test(e)?`'${e.replace(/'/g,"'\\''")}'`:e).join(" ")}function Lr(s){try{let e=te(s.slice(0,Math.max(0,s.findIndex((o,l)=>o===void 0||!o.startsWith("-")&&!/^-[nLIdPsE]$/.test(s[l-1]??"")))),Or),t=o=>e.opts.find(([l])=>l===o)?.[1],n=["a.txt","b.txt","c.txt","d.txt","e.txt"],r;e.opts.some(([o])=>o==="0")?r=n.slice(0,3).join("\0")+"\0":t("d")!==void 0?r=n.slice(0,3).join(t("d").replace(/^\\n$/,`
52
52
  `))+`
53
53
  `:t("L")!==void 0?r=`a.txt b.txt
54
54
  c.txt
@@ -58,67 +58,73 @@ my file.txt
58
58
  c.txt
59
59
  `:r=n.join(`
60
60
  `)+`
61
- `;let a=kt(s,r).map($t);return{input:r,commands:a}}catch(e){if(e instanceof S)return;throw e}}function Dn(s,e,t,n,r=!1){if(t===void 0&&n&&"var"in n){let f=n.var;return e==="-z"?[{vars:{[f]:""},result:!0},{vars:{[f]:"abc"},result:!1}]:e==="-n"?[{vars:{[f]:"abc"},result:!0},{vars:{[f]:""},result:!1}]:void 0}if(!t||!n)return;let a=[t,n].filter(f=>"var"in f);if(a.length!==1)return;let o=a[0].var,l="lit"in t?t:n,c="lit"in l?l.lit:"",u="var"in t,h={"-eq":(f,m)=>f===m,"-ne":(f,m)=>f!==m,"-lt":(f,m)=>f<m,"-le":(f,m)=>f<=m,"-gt":(f,m)=>f>m,"-ge":(f,m)=>f>=m},p=s==="(("?{"==":"-eq","!=":"-ne","<":"-lt","<=":"-le",">":"-gt",">=":"-ge"}[e]:h[e]?e:void 0;if(p){if(!/^-?\d+$/.test(c))return;let f=Number(c),m=h[p],g=[f,f+1,f-1,f+10,f-10],_=k=>u?m(k,f):m(f,k),b=g.find(_),w=g.find(k=>!_(k));return b===void 0||w===void 0?void 0:[{vars:{[o]:String(b)},result:!0},{vars:{[o]:String(w)},result:!1}]}if(s!=="(("&&(e==="="||e==="=="||e==="!=")){let f=e==="!=";if(s==="[["&&u&&!r&&/[*?[]/.test(c)){let g=wt(c,"value");if(!g?.nonMatching.length)return;let _=g.matching[0],b=g.nonMatching.find(w=>!Ae(c,w,"value"));return[{vars:{[o]:f?b:_},result:!0},{vars:{[o]:f?_:b},result:!1}]}let m=c===""?"abc":c+"x";return[{vars:{[o]:f?m:c},result:!0},{vars:{[o]:f?c:m},result:!1}]}}var Un=/[ \t\n]/;function Mr(s,e,t){let n=[];for(let g=0;g<s.length;g++)if(!t.raw&&s[g]==="\\"&&g+1<s.length)n.push({c:s[++g],escaped:!0});else{if(!t.raw&&s[g]==="\\")continue;n.push({c:s[g],escaped:!1})}let r=t.ifs,a=g=>!g.escaped&&r.includes(g.c),o=g=>a(g)&&Un.test(g.c),l=0,c=n.length;for(;l<c&&o(n[l]);)l++;for(;c>l&&o(n[c-1]);)c--;let u=n.slice(l,c),h=g=>g.map(_=>_.c).join(""),d=[],p=[],f=0;if(r==="")d.push(h(u)),p.push(0);else for(;f<u.length;){p.push(f);let g=f;for(;g<u.length&&!a(u[g]);)g++;d.push(h(u.slice(f,g)));let _=g;for(;_<u.length&&o(u[_]);)_++;if(_<u.length&&a(u[_])&&!o(u[_]))for(_++;_<u.length&&o(u[_]);)_++;_>=u.length&&g<u.length&&a(u[g])&&o(u[g]),f=_}if(t.array)return{vars:[],array:[t.array,d]};let m=[];return e.forEach((g,_)=>{if(_<e.length-1)m.push([g,d[_]??""]);else if(_>=d.length)m.push([g,""]);else{let b=h(u.slice(p[_]));_===d.length-1&&b.length&&r.includes(b[b.length-1])&&!Un.test(b[b.length-1])&&(b=b.slice(0,-1)),m.push([g,b])}}),{vars:m}}function Rr(s,e,t){let n=["alice","30","tokyo","admin","extra"];if(e==="")return" hello world ";let r=/^[ \t\n]*$/.test(e)?" ":[...e].find(o=>!Un.test(o)),a=t?3:Math.min(s+1,5);return n.slice(0,a).join(r)}var Lo={flags:"ivcnowxEFPGsqHhz",values:"em",long:{"ignore-case":"i","invert-match":"v",count:"c","line-number":"n","only-matching":"o","word-regexp":"w","line-regexp":"x","extended-regexp":"E","fixed-strings":"F","perl-regexp":"P","basic-regexp":"G","no-messages":"s",quiet:"q",silent:"q",regexp:"e","max-count":"m","no-filename":"h","with-filename":"H"}};function zn(s){let e=te(s,Lo),t=o=>e.opts.some(([l])=>l===o);if(t("z")||t("H"))throw new S("grep option");let n=e.opts.filter(([o])=>o==="e").map(([,o])=>o);if(!n.length){let o=e.operands.shift();if(o===void 0)throw new S("pattern");n.push(o)}let r=t("P")?"pcre":t("E")?"ere":"bre";return{res:n.flatMap(o=>o.split(`
62
- `)).map(o=>{let l=t("F")?Ut(o,t("i")):ie(o,r,{ignoreCase:t("i")});if(!l)throw new S("regex");return Dt(l,t("x"),t("w"))}),p:e}}function Ar(s,e){let{res:t,p:n}=zn(s),r=u=>n.opts.some(([h])=>h===u),a=n.opts.find(([u])=>u==="m")?.[1],o=a!==void 0?Number(a):1/0,l=[],c=0;for(let[u,h]of e.entries()){if(c>=o)break;if(t.some(f=>new RegExp(f.source,f.flags).test(h))===r("v")||(c++,r("q")||r("c")))continue;let p=r("n")?`${u+1}:`:"";if(r("o")&&!r("v"))for(let f of t)for(let m of h.matchAll(new RegExp(f.source,f.flags+"g")))m[0]&&l.push(p+m[0]);else l.push(p+h)}return r("q")?[]:r("c")?[String(c)]:l}function jo(s){let{res:e,p:t}=zn(s),n=be(e[0],3);if(!n)return;let r=n.matching.filter(l=>!/^abc |\sxyz$/.test(l)).concat(n.matching.filter(l=>/^abc |\sxyz$/.test(l))),a=n.nonMatching.length?n.nonMatching:["other line"],o=[a[0],r[0],r[1]??r[0],a[1]??a[0],r[2]??r[0]];return[...new Set(o)]}function Fr(s){let e=[],t=!1,n=!1,r=[];for(let a=0;a<s.length;a++){let o=s[a];if(o===void 0)throw new S("non-literal");if(o==="-e"||o==="--expression"){let l=s[++a];if(l===void 0)throw new S("-e");e.push(l);continue}if(o.startsWith("--expression=")){e.push(o.slice(13));continue}if(o==="-n"||o==="--quiet"||o==="--silent"){t=!0;continue}if(o==="-E"||o==="-r"||o==="--regexp-extended"){n=!0;continue}if(/^-[nErse]+$/.test(o)){if(o.includes("n")&&(t=!0),/[Er]/.test(o)&&(n=!0),o.endsWith("e")){let l=s[++a];if(l===void 0)throw new S("-e");e.push(l)}continue}if(!(/^-i/.test(o)||o==="-s"||o==="-u")){if(o.startsWith("-"))throw new S(`sed ${o}`);r.push(o)}}if(!e.length){let a=r.shift();if(a===void 0)throw new S("script");e.push(a)}return{script:e.join(`
63
- `),quiet:t,extended:n}}function Cr(s){let e,t={},n=0;for(;n<s.length;n++){let a=s[n];if(a===void 0)throw new S("non-literal");if(a==="-F"){e=s[++n];continue}if(/^-F./.test(a)){e=a.slice(2);continue}if(a==="-v"||/^-v./.test(a)){let o=a==="-v"?s[++n]:a.slice(2),l=o?.indexOf("=")??-1;if(!o||l<1)throw new S("-v");t[o.slice(0,l)]=o.slice(l+1);continue}if(a==="--"){n++;break}if(a.startsWith("-"))throw new S(`awk ${a}`);break}let r=s[n];if(r===void 0)throw new S("program");return e!==void 0&&(e=e==="t"?" ":e.replace(/\\t/g," ")),{program:r,fs:e,vars:t}}function qo(s,e){let t=te(s,{flags:"lwcmL",values:"",long:{lines:"l",words:"w",bytes:"c",chars:"m"}});if(t.operands.length)throw new S("wc files");let n=e.map(l=>l+`
64
- `).join(""),r={l:e.length,w:n.split(/\s+/).filter(Boolean).length,c:Gt(n),m:[...n].length},a=t.opts.map(([l])=>l);if(a.length||(a=["l","w","c"]),a.includes("L"))throw new S("-L");let o=["l","w","m","c"].filter(l=>a.includes(l));return o.length===1?[String(r[o[0]])]:[o.map(l=>String(r[l]).padStart(7)).join(" ")]}function Uo(s){let e=s.words;switch(s.cmd){case"grep":case"egrep":case"fgrep":{let n=s.cmd==="egrep"?["-E",...e]:s.cmd==="fgrep"?["-F",...e]:e;return zn(n),r=>Ar(n,r)}case"sed":{let n=Fr(e);return r=>{let a=xt(n.script,r,{quiet:n.quiet,extended:n.extended});if(!a)throw new S("sed");return a}}case"awk":case"gawk":case"mawk":{let n=Cr(e);return r=>{let a=_t(n.program,r,{fs:n.fs,vars:n.vars});if(!a)throw new S("awk");return a}}case"perl":{let n=bt(e);return!n||!n.opts.loop?void 0:r=>{let a=rt(n.code,n.opts,r);if(!a)throw new S("perl");return a}}case"cat":case"tee":return s.cmd==="cat"&&e.some(n=>n!=="-"&&n!==void 0&&!n.startsWith("-"))?void 0:n=>n;case"tac":return n=>[...n].reverse();case"rev":return n=>n.map(r=>[...r].reverse().join(""));case"wc":return n=>qo(e,n);case"xargs":return n=>kt(e,n.map(r=>r+`
65
- `).join("")).map($t)}let t=je[s.cmd];return t&&(n=>t(e,n))}function Do(s){let e=s.words;if(e.some(n=>n===void 0))return;let t=e;switch(s.cmd){case"echo":return t[0]?.startsWith("-")?void 0:[t.join(" ")];case"printf":{if(!t.length||t[0].startsWith("-"))return;let r=Kt(t[0],t.slice(1)).split(`
66
- `);return r[r.length-1]===""&&r.pop(),r}case"seq":return jn(t)}}function zo(s){let e=s.words;switch(s.cmd){case"grep":case"egrep":case"fgrep":return jo(s.cmd==="egrep"?["-E",...e]:s.cmd==="fgrep"?["-F",...e]:e);case"sed":{let t=Fr(e);return Xt(t.script,{quiet:t.quiet,extended:t.extended})?.input}case"awk":case"gawk":case"mawk":{let t=Cr(e);return Jt(t.program,{fs:t.fs,vars:t.vars})?.input}case"perl":{let t=bt(e);return t?Ht(t.code,t.opts)?.input:void 0}}return qn(s.cmd,e)??["banana","apple","cherry","apple"]}function Ir(s){let e=s.words,n={grep:/^-[efmABCd]$/,egrep:/^-[efmABCd]$/,fgrep:/^-[efmABCd]$/,sed:/^-[ef]$/,awk:/^-[Ffv]$/,gawk:/^-[Ffv]$/,mawk:/^-[Ffv]$/,perl:/^-\w*[eE]$/,sort:/^-[tkoS]$/,cut:/^-[dfcb]$/,head:/^-[nc]$/,tail:/^-[nc]$/,uniq:/^-[fsw]$/}[s.cmd],r=e.filter((o,l)=>(o===void 0||!o.startsWith("-"))&&!(n&&n.test(e[l-1]??""))),a=e.some(o=>/^-[ef]$/.test(o??"")||s.cmd==="perl"&&/^-\w*[eE]$/.test(o??""));switch(s.cmd){case"grep":case"egrep":case"fgrep":case"sed":case"awk":case"gawk":case"mawk":case"perl":return r.length>(a?0:1);case"tr":case"echo":case"printf":case"seq":case"xargs":return!1;default:return r.length>0}}function en(s,e,t){try{if(s.length<2)return;let n,r=s,a=e?void 0:Do(s[0]),o=s[0],l=o.cmd==="cat"&&o.words.some(h=>h===void 0||h!=="-"&&!h.startsWith("-")),c=[];if(a)c.push({stage:o,output:a}),r=s.slice(1);else{let h=l?s[1]:o;if(n=t??zo(h),!n)return;if(!t&&s.some(d=>d.cmd==="uniq"||d.cmd==="sort"&&d.words.some(p=>/^-[a-zA-Z]*u/.test(p??"")))){let d=h.cmd.endsWith("grep")?Ar(h.words,n):n;d.length&&(n=[...n,d[0],d[d.length-1],d[0]])}l&&(c.push({stage:o,output:n}),r=s.slice(1))}let u=a??n;for(let[h,d]of r.entries()){if(d.cmd==="xargs"&&h!==r.length-1)return;let p=Uo(d);if(!p)return;u=p(u),c.push({stage:d,output:u})}return{input:a?void 0:n,steps:c}}catch(n){if(n instanceof S)return;throw n}}var Wn={keys:["\u30AD\u30FC\uFF08\u914D\u5217\u306A\u3089\u30A4\u30F3\u30C7\u30C3\u30AF\u30B9\uFF09\u306E\u4E00\u89A7\u3092\u5143\u306E\u9806\u5E8F\u3067\u8FD4\u3059\uFF08jq \u3068\u9055\u3044\u30BD\u30FC\u30C8\u3057\u306A\u3044\uFF09","the keys (or indices) in their original order (unlike jq, not sorted)"],env:["\u74B0\u5883\u5909\u6570\u306E\u5024\u3092 YAML \u3068\u3057\u3066\u8AAD\u3093\u3060\u3082\u306E\uFF08`env(HOME)`\uFF09","the value of an environment variable, parsed as YAML (`env(HOME)`)"],strenv:["\u74B0\u5883\u5909\u6570\u306E\u5024\u3092\u6587\u5B57\u5217\u3068\u3057\u3066\u8FD4\u3059\uFF08`strenv(HOME)`\uFF09","the value of an environment variable as a string (`strenv(HOME)`)"],envsubst:["\u6587\u5B57\u5217\u306E\u4E2D\u306E `${VAR}` \u3092\u74B0\u5883\u5909\u6570\u306E\u5024\u306B\u7F6E\u304D\u63DB\u3048\u308B","replace `${VAR}` in a string with environment variables"],load:["YAML \u30D5\u30A1\u30A4\u30EB\u3092\u8AAD\u307F\u8FBC\u3080","load a YAML file"],load_str:["\u30D5\u30A1\u30A4\u30EB\u306E\u4E2D\u8EAB\u3092\u6587\u5B57\u5217\u3068\u3057\u3066\u8AAD\u307F\u8FBC\u3080","load a file as a string"],load_props:["properties \u30D5\u30A1\u30A4\u30EB\u3092\u8AAD\u307F\u8FBC\u3080","load a properties file"],load_xml:["XML \u30D5\u30A1\u30A4\u30EB\u3092\u8AAD\u307F\u8FBC\u3080","load an XML file"],load_base64:["Base64 \u306E\u30D5\u30A1\u30A4\u30EB\u3092\u8AAD\u307F\u8FBC\u3080","load a Base64 file"],pick:['\u6307\u5B9A\u3057\u305F\u30AD\u30FC\u3060\u3051\u3092\u6B8B\u3059\uFF08`pick(["a", "b"])`\uFF09','keep only the given keys (`pick(["a", "b"])`)'],omit:['\u6307\u5B9A\u3057\u305F\u30AD\u30FC\u3092\u53D6\u308A\u9664\u304F\uFF08`omit(["a"])`\uFF09','remove the given keys (`omit(["a"])`)'],downcase:["\u5C0F\u6587\u5B57\u306B\u3059\u308B","lowercase"],upcase:["\u5927\u6587\u5B57\u306B\u3059\u308B","uppercase"],to_number:["\u6570\u5024\u306B\u5909\u63DB\u3059\u308B","convert to a number"],to_string:["\u6587\u5B57\u5217\u306B\u5909\u63DB\u3059\u308B","convert to a string"],to_json:["JSON \u306E\u6587\u5B57\u5217\u306B\u3059\u308B","turn into a JSON string"],to_yaml:["YAML \u306E\u6587\u5B57\u5217\u306B\u3059\u308B","turn into a YAML string"],to_xml:["XML \u306E\u6587\u5B57\u5217\u306B\u3059\u308B","turn into an XML string"],to_props:["properties \u5F62\u5F0F\u306E\u6587\u5B57\u5217\u306B\u3059\u308B","turn into a properties string"],to_csv:["CSV \u306E\u6587\u5B57\u5217\u306B\u3059\u308B","turn into a CSV string"],to_tsv:["TSV \u306E\u6587\u5B57\u5217\u306B\u3059\u308B","turn into a TSV string"],from_json:["JSON \u306E\u6587\u5B57\u5217\u3092\u8AAD\u3080","parse a JSON string"],from_yaml:["YAML \u306E\u6587\u5B57\u5217\u3092\u8AAD\u3080","parse a YAML string"],from_xml:["XML \u306E\u6587\u5B57\u5217\u3092\u8AAD\u3080","parse an XML string"],from_props:["properties \u5F62\u5F0F\u306E\u6587\u5B57\u5217\u3092\u8AAD\u3080","parse a properties string"],line_comment:['\u884C\u672B\u306E\u30B3\u30E1\u30F3\u30C8\uFF08`.a line_comment = "\u2026"` \u3067\u8A2D\u5B9A\uFF09','the line comment (set with `.a line_comment = "\u2026"`)'],head_comment:['\u524D\u306E\u884C\u306E\u30B3\u30E1\u30F3\u30C8\uFF08`.a head_comment = "\u2026"` \u3067\u8A2D\u5B9A\uFF09','the comment above (set with `.a head_comment = "\u2026"`)'],foot_comment:['\u5F8C\u308D\u306E\u884C\u306E\u30B3\u30E1\u30F3\u30C8\uFF08`.a foot_comment = "\u2026"` \u3067\u8A2D\u5B9A\uFF09','the comment below (set with `.a foot_comment = "\u2026"`)'],style:['\u66F8\u304D\u65B9\u306E\u30B9\u30BF\u30A4\u30EB\uFF08`double`\u30FB`single`\u30FB`literal`\u30FB`folded`\u30FB`flow` \u306A\u3069\u3002`.a style = "double"` \u3067\u8A2D\u5B9A\uFF09','the style (`double`, `single`, `literal`, `folded`, `flow`\u2026; set with `.a style = "double"`)'],tag:["YAML \u306E\u30BF\u30B0\uFF08`!!str`\u30FB`!!int`\u30FB`!!map` \u306A\u3069\uFF09","the YAML tag (`!!str`, `!!int`, `!!map`\u2026)"],kind:["\u30CE\u30FC\u30C9\u306E\u7A2E\u985E\uFF08`map`\u30FB`seq`\u30FB`scalar`\uFF09","the node kind (`map`, `seq` or `scalar`)"],anchor:['\u30A2\u30F3\u30AB\u30FC\u540D\uFF08`&name`\u3002`.a anchor = "x"` \u3067\u8A2D\u5B9A\uFF09','the anchor name (`&name`; set with `.a anchor = "x"`)'],alias:["\u30A8\u30A4\u30EA\u30A2\u30B9\uFF08`*name`\uFF09","the alias (`*name`)"],explode:["\u30A2\u30F3\u30AB\u30FC\u3068\u30A8\u30A4\u30EA\u30A2\u30B9\u3092\u5C55\u958B\u3057\u305F\u5024\u306B\u3059\u308B\uFF08jq \u306E `explode` \u306F\u6587\u5B57\u5217\u3092\u6587\u5B57\u30B3\u30FC\u30C9\u306E\u914D\u5217\u306B\u3059\u308B\u5225\u306E\u95A2\u6570\uFF09","expand anchors and aliases (jq's `explode`, which turns a string into code points, is a different function)"],parent:["\u89AA\u306E\u30CE\u30FC\u30C9","the parent node"],key:["\u3053\u306E\u5024\u306E\u30AD\u30FC\uFF08\u307E\u305F\u306F\u30A4\u30F3\u30C7\u30C3\u30AF\u30B9\uFF09","the key (or index) of this value"],split_doc:["\u7D50\u679C\u3092\u5225\u3005\u306E YAML \u30C9\u30AD\u30E5\u30E1\u30F3\u30C8\uFF08`---` \u533A\u5207\u308A\uFF09\u306B\u3059\u308B","split the results into separate YAML documents (`---`)"],document_index:["\u4F55\u756A\u76EE\u306E YAML \u30C9\u30AD\u30E5\u30E1\u30F3\u30C8\u304B\uFF080 \u304B\u3089\uFF09","the index of the YAML document (from 0)"],di:["\u4F55\u756A\u76EE\u306E YAML \u30C9\u30AD\u30E5\u30E1\u30F3\u30C8\u304B\uFF08`document_index` \u306E\u77ED\u7E2E\u5F62\uFF09","the document index (short for `document_index`)"],filename:["\u5165\u529B\u30D5\u30A1\u30A4\u30EB\u540D","the input file name"],fi:["\u4F55\u756A\u76EE\u306E\u5165\u529B\u30D5\u30A1\u30A4\u30EB\u304B","the index of the input file"],file_index:["\u4F55\u756A\u76EE\u306E\u5165\u529B\u30D5\u30A1\u30A4\u30EB\u304B","the index of the input file"],eval:["\u6587\u5B57\u5217\u3092 yq \u306E\u5F0F\u3068\u3057\u3066\u8A55\u4FA1\u3059\u308B","evaluate a string as a yq expression"],shuffle:["\u914D\u5217\u3092\u30E9\u30F3\u30C0\u30E0\u306B\u4E26\u3079\u66FF\u3048\u308B","shuffle an array"],pivot:["\u914D\u5217\u306E\u914D\u5217\u3092\u884C\u3068\u5217\u3067\u5165\u308C\u66FF\u3048\u308B","transpose an array of arrays"],with:["`with(\u30D1\u30B9; \u66F4\u65B0)`: \u30D1\u30B9\u306E\u5024\u306B\u5BFE\u3057\u3066\u66F4\u65B0\u51E6\u7406\u3092\u307E\u3068\u3081\u3066\u884C\u3046","`with(path; updates)`: run updates relative to a path"],sort_keys:["\u30AD\u30FC\u3092\u4E26\u3079\u66FF\u3048\u308B\uFF08`sort_keys(..)` \u3067\u5168\u4F53\uFF09","sort the keys (`sort_keys(..)` for everything)"],ireduce:["`\u5F0F as $x ireduce (\u521D\u671F\u5024; \u66F4\u65B0)`: \u7573\u307F\u8FBC\u307F\uFF08jq \u306E `reduce` \u306B\u5F53\u305F\u308B\uFF09","`expr as $x ireduce (init; update)`: a fold (jq's `reduce`)"],select:["\u6761\u4EF6\u304C\u771F\u306E\u5165\u529B\u3060\u3051\u3092\u901A\u3059\uFF08\u507D\u306A\u3089\u4F55\u3082\u51FA\u529B\u3057\u306A\u3044\uFF09","pass the input through only if the condition is true"],collect:["\u7D50\u679C\u3092\u914D\u5217\u306B\u307E\u3068\u3081\u308B","collect the results into an array"],now:["\u73FE\u5728\u306E\u65E5\u6642","the current date and time"],tz:["\u30BF\u30A4\u30E0\u30BE\u30FC\u30F3\u3092\u5909\u3048\u308B","change the time zone"],with_dtf:["\u65E5\u6642\u306E\u66F8\u5F0F\u3092\u6307\u5B9A\u3057\u3066\u51E6\u7406\u3059\u308B","run with a date format"],setpath:["\u30D1\u30B9\u306B\u5024\u3092\u8A2D\u5B9A\u3059\u308B","set the value at a path"],delpaths:["\u8907\u6570\u306E\u30D1\u30B9\u3092\u524A\u9664\u3059\u308B","delete several paths"],min:["\u6700\u5C0F\u5024","the minimum"],max:["\u6700\u5927\u5024","the maximum"],trim:["\u524D\u5F8C\u306E\u7A7A\u767D\u3092\u53D6\u308A\u9664\u304F","trim surrounding whitespace"]},tn=new Set(["abs","add","arrays","ascii_downcase","ascii_upcase","booleans","builtins","combinations","debug","empty","endswith","floor","foreach","fromdate","fromstream","getpath","gsub","halt","halt_error","implode","in","index","indices","infinite","input","input_filename","input_line_number","inputs","inside","isnan","iterables","keys_unsorted","last","limit","log","ltrimstr","max_by","min_by","nan","nulls","numbers","objects","paths","pow","range","reduce","repeat","rindex","rtrimstr","scalars","scan","splits","sqrt","startswith","stderr","strings","todate","tostream","transpose","until","utf8bytelength","values","walk","while"]),Or=new Set(["alias","anchor","collect","di","document_index","downcase","envsubst","eval","fi","file_index","filename","foot_comment","from_json","from_yaml","head_comment","key","kind","line_comment","load","load_str","omit","parent","pivot","shuffle","sort_keys","split_doc","strenv","style","tag","to_json","to_number","to_string","to_yaml","trim","tz","upcase","with"]);var Wo=new Set(["if","then","elif","else","end","as","def","reduce","foreach","try","catch","label","import","include","and","or","__loc__"]),Vo=["...","?//","|=","+=","-=","*=","/=","%=","//=","==","!=","<=",">=","//","..","|",",","+","-","*","/","%","<",">","=","(",")","[","]","{","}",":",";","?","."],Jo={select:["\u6761\u4EF6\u304C\u771F\u306E\u5165\u529B\u3060\u3051\u3092\u901A\u3059\uFF08\u507D\u306A\u3089\u4F55\u3082\u51FA\u529B\u3057\u306A\u3044\uFF09","pass the input through only if the condition is true"],map:["\u914D\u5217\u306E\u5404\u8981\u7D20\u306B\u30D5\u30A3\u30EB\u30BF\u3092\u9069\u7528\u3057\u305F\u914D\u5217\u3092\u4F5C\u308B\uFF08`[.[] | f]` \u3068\u540C\u3058\uFF09","apply the filter to every element of an array (same as `[.[] | f]`)"],map_values:["\u30AA\u30D6\u30B8\u30A7\u30AF\u30C8\u30FB\u914D\u5217\u306E\u5404\u5024\u306B\u30D5\u30A3\u30EB\u30BF\u3092\u9069\u7528\u3059\u308B","apply the filter to every value"],keys:["\u30AD\u30FC\uFF08\u914D\u5217\u306A\u3089\u30A4\u30F3\u30C7\u30C3\u30AF\u30B9\uFF09\u306E\u4E00\u89A7\u3092\u30BD\u30FC\u30C8\u3057\u3066\u8FD4\u3059","the keys (or indices), sorted"],keys_unsorted:["\u30AD\u30FC\u306E\u4E00\u89A7\u3092\u5143\u306E\u9806\u5E8F\u3067\u8FD4\u3059","the keys in their original order"],values:["null \u4EE5\u5916\u306E\u5024\u3060\u3051\u3092\u901A\u3059","pass through values that are not null"],length:["\u9577\u3055\uFF08\u6587\u5B57\u6570\u30FB\u8981\u7D20\u6570\u30FB\u30AD\u30FC\u6570\u3002\u6570\u5024\u306A\u3089\u7D76\u5BFE\u5024\uFF09","the length (characters, elements or keys; absolute value for numbers)"],utf8bytelength:["\u6587\u5B57\u5217\u306E UTF-8 \u3067\u306E\u30D0\u30A4\u30C8\u6570","the UTF-8 byte length of a string"],has:["\u6307\u5B9A\u3057\u305F\u30AD\u30FC\uFF08\u30A4\u30F3\u30C7\u30C3\u30AF\u30B9\uFF09\u304C\u3042\u308B\u304B","whether the key (or index) exists"],in:["\u5165\u529B\u304C\u3001\u5F15\u6570\u306E\u30AA\u30D6\u30B8\u30A7\u30AF\u30C8\u306E\u30AD\u30FC\u3068\u3057\u3066\u5B58\u5728\u3059\u308B\u304B","whether the input is a key of the argument"],contains:["\u5F15\u6570\u306E\u5185\u5BB9\u3092\u542B\u3093\u3067\u3044\u308B\u304B","whether the input contains the argument"],inside:["\u5165\u529B\u304C\u5F15\u6570\u306B\u542B\u307E\u308C\u3066\u3044\u308B\u304B","whether the input is contained in the argument"],to_entries:["\u30AA\u30D6\u30B8\u30A7\u30AF\u30C8\u3092 `{key, value}` \u306E\u914D\u5217\u306B\u5909\u63DB\u3059\u308B","turn an object into an array of `{key, value}`"],from_entries:["`{key, value}` \u306E\u914D\u5217\u3092\u30AA\u30D6\u30B8\u30A7\u30AF\u30C8\u306B\u623B\u3059","turn an array of `{key, value}` back into an object"],with_entries:["\u30AA\u30D6\u30B8\u30A7\u30AF\u30C8\u306E\u5404 `{key, value}` \u306B\u30D5\u30A3\u30EB\u30BF\u3092\u9069\u7528\u3059\u308B\uFF08\u30AD\u30FC\u306E\u5909\u66F4\u306A\u3069\u306B\u4F7F\u3046\uFF09","apply the filter to each `{key, value}` (e.g. to rename keys)"],add:["\u914D\u5217\u306E\u8981\u7D20\u3092\u3059\u3079\u3066\u8DB3\u3057\u5408\u308F\u305B\u308B\uFF08\u6570\u5024\u306F\u5408\u8A08\u3001\u6587\u5B57\u5217\u30FB\u914D\u5217\u306F\u9023\u7D50\uFF09","add up the elements (sum numbers, join strings/arrays)"],any:["\u3069\u308C\u304B1\u3064\u3067\u3082\u771F\u306A\u3089 true","true if any element is true"],all:["\u3059\u3079\u3066\u771F\u306A\u3089 true","true if every element is true"],flatten:["\u5165\u308C\u5B50\u306E\u914D\u5217\u3092\u5E73\u3089\u306B\u3059\u308B","flatten nested arrays"],range:["\u9023\u7D9A\u3057\u305F\u6570\u5024\u3092\u51FA\u529B\u3059\u308B","produce a range of numbers"],floor:["\u5C0F\u6570\u70B9\u4EE5\u4E0B\u3092\u5207\u308A\u6368\u3066\u308B","round down"],sqrt:["\u5E73\u65B9\u6839","square root"],tostring:["\u6587\u5B57\u5217\u306B\u5909\u63DB\u3059\u308B","convert to a string"],tonumber:["\u6570\u5024\u306B\u5909\u63DB\u3059\u308B","convert to a number"],type:['\u5024\u306E\u578B\u540D\uFF08"object"\u3001"array"\u3001"string" \u306A\u3069\uFF09','the type name ("object", "array", "string", \u2026)'],sort:["\u914D\u5217\u3092\u4E26\u3079\u66FF\u3048\u308B","sort an array"],sort_by:["\u6307\u5B9A\u3057\u305F\u5024\u3092\u30AD\u30FC\u306B\u3057\u3066\u914D\u5217\u3092\u4E26\u3079\u66FF\u3048\u308B","sort an array by the given expression"],group_by:["\u6307\u5B9A\u3057\u305F\u5024\u3054\u3068\u306B\u8981\u7D20\u3092\u30B0\u30EB\u30FC\u30D7\uFF08\u914D\u5217\u306E\u914D\u5217\uFF09\u306B\u307E\u3068\u3081\u308B","group elements by the given expression"],unique:["\u91CD\u8907\u3092\u9664\u3044\u3066\u4E26\u3079\u66FF\u3048\u308B","remove duplicates (sorted)"],unique_by:["\u6307\u5B9A\u3057\u305F\u5024\u304C\u91CD\u8907\u3059\u308B\u8981\u7D20\u3092\u9664\u304F","remove elements with a duplicate key"],min:["\u6700\u5C0F\u306E\u8981\u7D20","the smallest element"],max:["\u6700\u5927\u306E\u8981\u7D20","the largest element"],min_by:["\u6307\u5B9A\u3057\u305F\u5024\u304C\u6700\u5C0F\u306E\u8981\u7D20","the element with the smallest key"],max_by:["\u6307\u5B9A\u3057\u305F\u5024\u304C\u6700\u5927\u306E\u8981\u7D20","the element with the largest key"],reverse:["\u914D\u5217\uFF08\u6587\u5B57\u5217\uFF09\u3092\u9006\u9806\u306B\u3059\u308B","reverse an array (or string)"],first:["\u6700\u521D\u306E\u8981\u7D20\uFF08\u5F15\u6570\u304C\u3042\u308C\u3070\u305D\u306E\u6700\u521D\u306E\u51FA\u529B\uFF09","the first element (or first output of the argument)"],last:["\u6700\u5F8C\u306E\u8981\u7D20\uFF08\u5F15\u6570\u304C\u3042\u308C\u3070\u305D\u306E\u6700\u5F8C\u306E\u51FA\u529B\uFF09","the last element (or last output of the argument)"],nth:["n \u756A\u76EE\u306E\u8981\u7D20","the nth element"],limit:["\u6700\u521D\u306E n \u500B\u306E\u51FA\u529B\u3060\u3051\u3092\u53D6\u308B","take only the first n outputs"],until:["\u6761\u4EF6\u304C\u771F\u306B\u306A\u308B\u307E\u3067\u66F4\u65B0\u3092\u7E70\u308A\u8FD4\u3059","repeat the update until the condition holds"],while:["\u6761\u4EF6\u304C\u771F\u306E\u9593\u3001\u66F4\u65B0\u3092\u7E70\u308A\u8FD4\u3057\u3066\u5404\u5024\u3092\u51FA\u529B\u3059\u308B","repeat the update while the condition holds, outputting each value"],repeat:["\u30D5\u30A3\u30EB\u30BF\u3092\u7E70\u308A\u8FD4\u3057\u9069\u7528\u3057\u7D9A\u3051\u308B","apply the filter repeatedly"],recurse:["\u5165\u529B\u3068\u305D\u306E\u5B50\u5B6B\u3092\u518D\u5E30\u7684\u306B\u51FA\u529B\u3059\u308B","output the input and all of its descendants"],walk:["\u3059\u3079\u3066\u306E\u5024\u306B\u4E0B\u304B\u3089\u9806\u306B\u30D5\u30A3\u30EB\u30BF\u3092\u9069\u7528\u3059\u308B","apply the filter to every value, bottom-up"],empty:["\u4F55\u3082\u51FA\u529B\u3057\u306A\u3044","output nothing"],error:["\u30A8\u30E9\u30FC\u3092\u767A\u751F\u3055\u305B\u308B","raise an error"],not:["\u771F\u507D\u3092\u53CD\u8EE2\u3059\u308B","negate a boolean"],paths:["\u3059\u3079\u3066\u306E\u30D1\u30B9\u3092\u914D\u5217\u3067\u51FA\u529B\u3059\u308B","output every path as an array"],leaf_paths:["\u672B\u7AEF\u306E\u5024\u3078\u306E\u30D1\u30B9\u3092\u51FA\u529B\u3059\u308B","output paths to leaf values"],path:["\u5F0F\u304C\u6307\u3059\u30D1\u30B9\u3092\u914D\u5217\u3067\u51FA\u529B\u3059\u308B","output the path the expression refers to"],getpath:["\u30D1\u30B9\u914D\u5217\u3067\u6307\u5B9A\u3057\u305F\u5024\u3092\u53D6\u308A\u51FA\u3059","get the value at a path array"],setpath:["\u30D1\u30B9\u914D\u5217\u3067\u6307\u5B9A\u3057\u305F\u5834\u6240\u306B\u5024\u3092\u8A2D\u5B9A\u3059\u308B","set the value at a path array"],del:["\u6307\u5B9A\u3057\u305F\u5834\u6240\u3092\u524A\u9664\u3059\u308B","delete the given paths"],delpaths:["\u30D1\u30B9\u306E\u4E00\u89A7\u3067\u6307\u5B9A\u3057\u305F\u5834\u6240\u3092\u524A\u9664\u3059\u308B","delete a list of paths"],ascii_downcase:["\u82F1\u5B57\u3092\u5C0F\u6587\u5B57\u306B\u3059\u308B","lowercase ASCII letters"],ascii_upcase:["\u82F1\u5B57\u3092\u5927\u6587\u5B57\u306B\u3059\u308B","uppercase ASCII letters"],ltrimstr:["\u5148\u982D\u306E\u6307\u5B9A\u6587\u5B57\u5217\u3092\u53D6\u308A\u9664\u304F","remove the given prefix"],rtrimstr:["\u672B\u5C3E\u306E\u6307\u5B9A\u6587\u5B57\u5217\u3092\u53D6\u308A\u9664\u304F","remove the given suffix"],trim:["\u524D\u5F8C\u306E\u7A7A\u767D\u3092\u53D6\u308A\u9664\u304F","trim surrounding whitespace"],startswith:["\u6307\u5B9A\u6587\u5B57\u5217\u3067\u59CB\u307E\u308B\u304B","whether the string starts with the argument"],endswith:["\u6307\u5B9A\u6587\u5B57\u5217\u3067\u7D42\u308F\u308B\u304B","whether the string ends with the argument"],split:["\u6587\u5B57\u5217\u3092\u533A\u5207\u308A\u6587\u5B57\u3067\u5206\u5272\u3057\u3066\u914D\u5217\u306B\u3059\u308B","split a string into an array"],join:["\u914D\u5217\u306E\u8981\u7D20\u3092\u533A\u5207\u308A\u6587\u5B57\u3067\u3064\u306A\u3044\u3067\u6587\u5B57\u5217\u306B\u3059\u308B","join array elements into a string"],test:["\u6B63\u898F\u8868\u73FE\u306B\u4E00\u81F4\u3059\u308B\u304B\uFF08true/false\uFF09","whether the string matches the regex"],match:["\u6B63\u898F\u8868\u73FE\u306E\u4E00\u81F4\u60C5\u5831\u3092\u8FD4\u3059","return match information for the regex"],capture:["\u6B63\u898F\u8868\u73FE\u306E\u540D\u524D\u4ED8\u304D\u30B0\u30EB\u30FC\u30D7\u3092\u30AA\u30D6\u30B8\u30A7\u30AF\u30C8\u306B\u3057\u3066\u8FD4\u3059","return named captures as an object"],scan:["\u6B63\u898F\u8868\u73FE\u306B\u4E00\u81F4\u3059\u308B\u90E8\u5206\u3092\u3059\u3079\u3066\u51FA\u529B\u3059\u308B","output every match of the regex"],sub:["\u6B63\u898F\u8868\u73FE\u306B\u6700\u521D\u306B\u4E00\u81F4\u3057\u305F\u90E8\u5206\u3092\u7F6E\u63DB\u3059\u308B","replace the first regex match"],gsub:["\u6B63\u898F\u8868\u73FE\u306B\u4E00\u81F4\u3059\u308B\u90E8\u5206\u3092\u3059\u3079\u3066\u7F6E\u63DB\u3059\u308B","replace every regex match"],splits:["\u6B63\u898F\u8868\u73FE\u3067\u5206\u5272\u3057\u305F\u5404\u90E8\u5206\u3092\u51FA\u529B\u3059\u308B","split by a regex, outputting each part"],ascii:["\u30B3\u30FC\u30C9\u30DD\u30A4\u30F3\u30C8\u3092\u6587\u5B57\u306B\u3059\u308B","code point to character"],explode:["\u6587\u5B57\u5217\u3092\u30B3\u30FC\u30C9\u30DD\u30A4\u30F3\u30C8\u306E\u914D\u5217\u306B\u3059\u308B","string to an array of code points"],implode:["\u30B3\u30FC\u30C9\u30DD\u30A4\u30F3\u30C8\u306E\u914D\u5217\u3092\u6587\u5B57\u5217\u306B\u3059\u308B","array of code points to a string"],tojson:["\u5024\u3092 JSON \u6587\u5B57\u5217\u306B\u3059\u308B","encode the value as a JSON string"],fromjson:["JSON \u6587\u5B57\u5217\u3092\u5024\u306B\u623B\u3059","parse a JSON string"],todate:["UNIX \u6642\u523B\u3092 ISO 8601 \u306E\u65E5\u6642\u6587\u5B57\u5217\u306B\u3059\u308B","UNIX time to an ISO 8601 string"],fromdate:["ISO 8601 \u306E\u65E5\u6642\u6587\u5B57\u5217\u3092 UNIX \u6642\u523B\u306B\u3059\u308B","ISO 8601 string to UNIX time"],now:["\u73FE\u5728\u306E UNIX \u6642\u523B","the current UNIX time"],strftime:["\u65E5\u6642\u3092\u66F8\u5F0F\u306B\u5F93\u3063\u3066\u6587\u5B57\u5217\u306B\u3059\u308B","format a time"],strptime:["\u65E5\u6642\u6587\u5B57\u5217\u3092\u66F8\u5F0F\u306B\u5F93\u3063\u3066\u89E3\u6790\u3059\u308B","parse a time string"],env:["\u74B0\u5883\u5909\u6570\u306E\u30AA\u30D6\u30B8\u30A7\u30AF\u30C8","the environment variables as an object"],input:["\u6B21\u306E\u5165\u529B\u30921\u3064\u8AAD\u3080","read the next input"],inputs:["\u6B8B\u308A\u306E\u5165\u529B\u3092\u3059\u3079\u3066\u51FA\u529B\u3059\u308B","output all remaining inputs"],debug:["\u5024\u3092\u6A19\u6E96\u30A8\u30E9\u30FC\u306B\u8868\u793A\u3057\u3066\u305D\u306E\u307E\u307E\u901A\u3059","print the value to stderr and pass it on"],halt:["\u51E6\u7406\u3092\u7D42\u4E86\u3059\u308B","stop the program"],halt_error:["\u30A8\u30E9\u30FC\u3068\u3057\u3066\u7D42\u4E86\u3059\u308B","stop with an error"],input_filename:["\u5165\u529B\u30D5\u30A1\u30A4\u30EB\u540D","the current input file name"],isempty:["\u30D5\u30A3\u30EB\u30BF\u304C\u4F55\u3082\u51FA\u529B\u3057\u306A\u3044\u304B","whether the filter outputs nothing"],indices:["\u6307\u5B9A\u3057\u305F\u5024\u304C\u73FE\u308C\u308B\u4F4D\u7F6E\u306E\u4E00\u89A7","positions where the value occurs"],index:["\u6307\u5B9A\u3057\u305F\u5024\u304C\u6700\u521D\u306B\u73FE\u308C\u308B\u4F4D\u7F6E","the first position of the value"],rindex:["\u6307\u5B9A\u3057\u305F\u5024\u304C\u6700\u5F8C\u306B\u73FE\u308C\u308B\u4F4D\u7F6E","the last position of the value"],tostream:["\u5024\u3092\u30D1\u30B9\u3068\u5024\u306E\u30B9\u30C8\u30EA\u30FC\u30E0\u306B\u3059\u308B","turn the value into a stream of path/value events"],fromstream:["\u30B9\u30C8\u30EA\u30FC\u30E0\u304B\u3089\u5024\u3092\u7D44\u307F\u7ACB\u3066\u76F4\u3059","rebuild a value from a stream"],objects:["\u30AA\u30D6\u30B8\u30A7\u30AF\u30C8\u3060\u3051\u3092\u901A\u3059","pass through objects only"],arrays:["\u914D\u5217\u3060\u3051\u3092\u901A\u3059","pass through arrays only"],strings:["\u6587\u5B57\u5217\u3060\u3051\u3092\u901A\u3059","pass through strings only"],numbers:["\u6570\u5024\u3060\u3051\u3092\u901A\u3059","pass through numbers only"],booleans:["\u771F\u507D\u5024\u3060\u3051\u3092\u901A\u3059","pass through booleans only"],nulls:["null \u3060\u3051\u3092\u901A\u3059","pass through nulls only"],iterables:["\u914D\u5217\u3068\u30AA\u30D6\u30B8\u30A7\u30AF\u30C8\u3060\u3051\u3092\u901A\u3059","pass through arrays and objects only"],scalars:["\u914D\u5217\u30FB\u30AA\u30D6\u30B8\u30A7\u30AF\u30C8\u4EE5\u5916\u3060\u3051\u3092\u901A\u3059","pass through non-container values only"],IN:["\u5165\u529B\u304C\u3001\u5F15\u6570\u306E\u51FA\u529B\u306E\u3069\u308C\u304B\u3068\u7B49\u3057\u3044\u304B","whether the input equals any output of the argument"],INDEX:["\u6307\u5B9A\u3057\u305F\u30AD\u30FC\u3067\u30AA\u30D6\u30B8\u30A7\u30AF\u30C8\u306B\u7D22\u5F15\u4ED8\u3051\u3059\u308B","build an object indexed by the given key"]},Bo={"@csv":["\u914D\u5217\u3092 CSV \u306E1\u884C\u306B\u3059\u308B","format an array as a CSV row"],"@tsv":["\u914D\u5217\u3092 TSV \u306E1\u884C\u306B\u3059\u308B","format an array as a TSV row"],"@json":["JSON \u6587\u5B57\u5217\u306B\u3059\u308B","format as JSON"],"@text":["\u6587\u5B57\u5217\u306B\u3059\u308B","format as text"],"@html":["HTML \u30A8\u30B9\u30B1\u30FC\u30D7\u3059\u308B","escape for HTML"],"@uri":["URL \u30A8\u30F3\u30B3\u30FC\u30C9\u3059\u308B","percent-encode for URLs"],"@sh":["\u30B7\u30A7\u30EB\u3067\u5B89\u5168\u306B\u4F7F\u3048\u308B\u3088\u3046\u306B\u30AF\u30A9\u30FC\u30C8\u3059\u308B","quote for the shell"],"@base64":["Base64 \u30A8\u30F3\u30B3\u30FC\u30C9\u3059\u308B","encode as Base64"],"@base64d":["Base64 \u30C7\u30B3\u30FC\u30C9\u3059\u308B","decode Base64"]},oe=class extends Error{constructor(t,n){super(n);this.at=t}at};function We(s){let e=[],t=0;for(;t<s.length;){let n=s[t];if(/\s/.test(n)){t++;continue}if(n==="#"){for(;t<s.length&&s[t]!==`
67
- `;)t++;continue}let r=t;if(n==='"'){t=Vn(s,t),e.push({type:"str",text:s.slice(r,t),start:r,end:t});continue}let a;if(a=/^\d+(\.\d+)?([eE][-+]?\d+)?/.exec(s.slice(t))){t+=a[0].length,e.push({type:"num",text:a[0],start:r,end:t});continue}if(a=/^\$(__loc__|[A-Za-z_][A-Za-z0-9_]*(::[A-Za-z_][A-Za-z0-9_]*)*)/.exec(s.slice(t))){t+=a[0].length,e.push({type:"var",text:a[0],start:r,end:t});continue}if(a=/^@[A-Za-z0-9_]+/.exec(s.slice(t))){t+=a[0].length,e.push({type:"fmt",text:a[0],start:r,end:t});continue}if(a=/^\.([A-Za-z_][A-Za-z0-9_]*)/.exec(s.slice(t))){t+=a[0].length,e.push({type:"field",text:a[0],start:r,end:t});continue}if(n==="."&&s[t+1]==='"'){t=Vn(s,t+1),e.push({type:"field",text:s.slice(r,t),start:r,end:t});continue}if(a=/^[A-Za-z_][A-Za-z0-9_]*(::[A-Za-z_][A-Za-z0-9_]*)*/.exec(s.slice(t))){t+=a[0].length,e.push({type:Wo.has(a[0])?"kw":"ident",text:a[0],start:r,end:t});continue}let o=Vo.find(l=>s.startsWith(l,t));if(!o)throw new oe(t,`unexpected "${n}"`);t+=o.length,e.push({type:"op",text:o,start:r,end:t})}return e}function Vn(s,e){for(e++;e<s.length&&s[e]!=='"';){if(s[e]==="\\"&&s[e+1]==="("){let t=1;for(e+=2;e<s.length&&t>0;)s[e]==='"'?e=Vn(s,e)-1:s[e]==="("?t++:s[e]===")"&&t--,e++;continue}e+=s[e]==="\\"?2:1}if(e>=s.length)throw new oe(s.length,"unterminated string");return e+1}var Ho=new Set(["line_comment","head_comment","foot_comment","style","tag","anchor","alias","key"]),Jn=class{constructor(e,t,n,r="jq"){this.src=e;this.toks=t;this.dialect=r;this.s=A(n)}src;toks;dialect;p=0;s;get done(){return this.p>=this.toks.length}peek(e){let t=this.toks[this.p];return e===void 0||t?.text===e?t:void 0}next(){let e=this.toks[this.p++];if(!e)throw new oe(this.src.length,"unexpected end");return e}expect(e){let t=this.toks[this.p];if(t?.text!==e)throw new oe(t?.start??this.src.length,`expected "${e}"`);return this.p++,t}node(e,t,n,r,a=[],o){return{start:e,end:t,kind:n,explanation:r,children:a,short:o}}opNode(e,t){return this.node(e.start,e.end,"operator",`\`${e.text}\`: ${t}`)}pipe(){let{s:e}=this;if(this.peek("def")){let c=this.definition(),u=this.pipe(),h=this.node(c.start,u.end,"block",u.explanation,[c,...u.isPipe?u.children:[u]],u.short);return h.isPipe=!0,h}let t=this.comma(),n=this.peek("as");if(n){this.p++;let c=this.next(),u=this.dialect==="yq"?this.peek("ireduce"):void 0;if(u){this.p++,this.expect("(");let p=this.pipe();this.expect(";");let f=this.pipe(),m=this.expect(")");return this.node(t.start,m.end,"block",e(`\u7573\u307F\u8FBC\u307F: \u521D\u671F\u5024 \`${this.text(p)}\` \u304B\u3089\u59CB\u3081\u3066\u3001\`${this.text(t)}\` \u306E\u5404\u7D50\u679C\u3092 \`${c.text}\` \u306B\u5165\u308C\u3066 \`${this.text(f)}\` \u3067\u66F4\u65B0\u3057\u3066\u3044\u304F\uFF08jq \u306E \`reduce\` \u306B\u5F53\u305F\u308B\uFF09`,`Fold: start from \`${this.text(p)}\` and update it with \`${this.text(f)}\` for each result of \`${this.text(t)}\` as \`${c.text}\` (jq's \`reduce\`)`),[t,this.opNode(n,e("\u5DE6\u306E\u7D50\u679C\u3092\u5909\u6570\u306B\u5165\u308C\u308B","binds the result to a variable")),this.node(c.start,c.end,"variable",e(`\u5909\u6570 \`${c.text}\``,`Variable \`${c.text}\``)),this.node(u.start,u.end,"keyword",e("`ireduce`: \u7573\u307F\u8FBC\u307F","`ireduce`: fold")),p,f])}let h=this.expect("|"),d=this.pipe();return this.node(t.start,d.end,"block",e(`\u5909\u6570\u675F\u7E1B: \`${this.text(t)}\` \u306E\u5404\u7D50\u679C\u3092 \`${c.text}\` \u306B\u5165\u308C\u3066\u3001\`|\` \u4EE5\u964D\u3092\u5B9F\u884C\u3059\u308B`,`Binding: run what follows \`|\` with each result of \`${this.text(t)}\` as \`${c.text}\``),[t,this.opNode(n,e("\u5DE6\u306E\u7D50\u679C\u3092\u5909\u6570\u306B\u5165\u308C\u308B","binds the result to a variable")),this.node(c.start,c.end,"variable",e(`\u5909\u6570 \`${c.text}\``,`Variable \`${c.text}\``)),this.opNode(h,e("\u4EE5\u964D\u306E\u5F0F\u3067\u5909\u6570\u3092\u4F7F\u3048\u308B","the variable is available from here")),...d.isPipe?d.children:[d]])}let r=this.peek("|");if(!r)return t;this.p++;let a=this.pipe(),o=[t,this.opNode(r,e("\u5DE6\u306E\u5404\u7D50\u679C\u30921\u3064\u305A\u3064\u53F3\u306E\u30D5\u30A3\u30EB\u30BF\u306B\u6E21\u3059","feeds each result on the left into the filter on the right")),...a.isPipe?a.children:[a]],l=this.node(t.start,a.end,"operator",e("\u30D1\u30A4\u30D7\u30E9\u30A4\u30F3: \u5DE6\u304B\u3089\u9806\u306B\u3001\u5404\u30D5\u30A3\u30EB\u30BF\u306E\u51FA\u529B\u3092\u6B21\u306E\u30D5\u30A3\u30EB\u30BF\u306E\u5165\u529B\u306B\u3059\u308B","Pipeline: each filter's output becomes the next filter's input"),o);return l.isPipe=!0,l}comma(){let e=this.alternative(),t;for(;t=this.peek(",");){this.p++;let n=this.alternative();e=this.binary(e,t,n,this.s("\u5DE6\u53F3\u4E21\u65B9\u306E\u7D50\u679C\u3092\u9806\u306B\u51FA\u529B\u3059\u308B","outputs the results of both sides"))}return e}alternative(){let e=this.assignment(),t=this.peek("//")??this.peek("?//");if(!t)return e;this.p++;let n=this.alternative();return this.binary(e,t,n,this.s("\u5DE6\u304C null\u30FBfalse\u30FB\u30A8\u30E9\u30FC\u306A\u3089\u53F3\u306E\u5024\u3092\u4F7F\u3046\uFF08\u65E2\u5B9A\u5024\uFF09","use the right side if the left is null, false or an error (a default)"))}assignment(){let e=this.or(),t=this.toks[this.p],n={"=":["\u5DE6\u306E\u30D1\u30B9\u306B\u53F3\u306E\u5024\u3092\u8A2D\u5B9A\u3059\u308B","set the path on the left to the value on the right"],"|=":["\u5DE6\u306E\u30D1\u30B9\u306E\u5024\u3092\u3001\u53F3\u306E\u30D5\u30A3\u30EB\u30BF\u3067\u66F4\u65B0\u3059\u308B","update the value at the path with the filter"],"+=":["\u5DE6\u306E\u30D1\u30B9\u306E\u5024\u306B\u53F3\u306E\u5024\u3092\u8DB3\u3059","add to the value at the path"],"-=":["\u5DE6\u306E\u30D1\u30B9\u306E\u5024\u304B\u3089\u53F3\u306E\u5024\u3092\u5F15\u304F","subtract from the value at the path"],"*=":["\u5DE6\u306E\u30D1\u30B9\u306E\u5024\u306B\u53F3\u306E\u5024\u3092\u639B\u3051\u308B","multiply the value at the path"],"/=":["\u5DE6\u306E\u30D1\u30B9\u306E\u5024\u3092\u53F3\u306E\u5024\u3067\u5272\u308B","divide the value at the path"],"%=":["\u5DE6\u306E\u30D1\u30B9\u306E\u5024\u3092\u53F3\u306E\u5024\u3067\u5272\u3063\u305F\u4F59\u308A\u306B\u3059\u308B","set the value at the path to the remainder"],"//=":["\u5DE6\u306E\u30D1\u30B9\u306E\u5024\u304C null\u30FBfalse \u306A\u3089\u53F3\u306E\u5024\u3092\u8A2D\u5B9A\u3059\u308B","set the path if it is null or false"]},r=this.dialect==="yq"&&t?.type==="ident"&&Ho.has(t.text)?t:void 0,a=r&&this.toks[this.p+1];if(r&&a?.type==="op"&&(a.text==="="||a.text==="|=")){this.p+=2;let l=this.alternative(),c=Wn[r.text];return this.node(e.start,l.end,"operator",this.s(`\`${this.text(e)}\` \u306E ${r.text}\uFF08${c?c[0]:""}\uFF09\u3092\u8A2D\u5B9A\u3057\u3001\u6587\u66F8\u5168\u4F53\u3092\u51FA\u529B\u3059\u308B`,`Set the ${r.text} of \`${this.text(e)}\` (${c?c[1]:""}) and output the whole document`),[e,this.node(r.start,r.end,"function",`\`${r.text}\`: ${c?this.s(c[0],c[1]):""}`),this.opNode(a,this.s("\u8A2D\u5B9A\u3059\u308B","sets it")),l])}if(t?.type!=="op"||!n[t.text])return e;this.p++;let o=this.alternative();return this.binary(e,t,o,this.s(n[t.text][0],n[t.text][1]))}or(){let e=this.and(),t;for(;t=this.peek("or");)this.p++,e=this.binary(e,t,this.and(),this.s("\u3069\u3061\u3089\u304B\u304C\u771F\u306A\u3089 true","true if either side is true"));return e}and(){let e=this.compare(),t;for(;t=this.peek("and");)this.p++,e=this.binary(e,t,this.compare(),this.s("\u4E21\u65B9\u304C\u771F\u306A\u3089 true","true if both sides are true"));return e}compare(){let e=this.additive(),t=this.toks[this.p],n={"==":["\u7B49\u3057\u3044","equal"],"!=":["\u7B49\u3057\u304F\u306A\u3044","not equal"],"<":["\u5DE6\u304C\u5C0F\u3055\u3044","less than"],"<=":["\u5DE6\u304C\u4EE5\u4E0B","less than or equal"],">":["\u5DE6\u304C\u5927\u304D\u3044","greater than"],">=":["\u5DE6\u304C\u4EE5\u4E0A","greater than or equal"]};return t?.type!=="op"||!n[t.text]?e:(this.p++,this.binary(e,t,this.additive(),this.s(`\u6BD4\u8F03: ${n[t.text][0]}\u306A\u3089 true`,`comparison: true if ${n[t.text][1]}`)))}additive(){let e=this.multiplicative(),t;for(;t=this.peek("+")??this.peek("-");)this.p++,e=this.binary(e,t,this.multiplicative(),t.text==="+"?this.s("\u8DB3\u3057\u7B97\uFF08\u6587\u5B57\u5217\u30FB\u914D\u5217\u306F\u9023\u7D50\u3001\u30AA\u30D6\u30B8\u30A7\u30AF\u30C8\u306F\u30DE\u30FC\u30B8\uFF09","addition (concatenates strings/arrays, merges objects)"):this.s("\u5F15\u304D\u7B97\uFF08\u914D\u5217\u306A\u3089\u53F3\u306E\u8981\u7D20\u3092\u53D6\u308A\u9664\u304F\uFF09","subtraction (removes elements for arrays)"));return e}multiplicative(){let e=this.postfix(),t;for(;t=this.peek("*")??this.peek("/")??this.peek("%");){this.p++;let n=t.text==="*"?this.s("\u639B\u3051\u7B97\uFF08\u30AA\u30D6\u30B8\u30A7\u30AF\u30C8\u306A\u3089\u6DF1\u3044\u30DE\u30FC\u30B8\uFF09","multiplication (deep merge for objects)"):t.text==="/"?this.s("\u5272\u308A\u7B97\uFF08\u6587\u5B57\u5217\u306A\u3089\u5206\u5272\uFF09","division (splits strings)"):this.s("\u5272\u3063\u305F\u4F59\u308A","remainder");e=this.binary(e,t,this.postfix(),n)}return e}binary(e,t,n,r){return this.node(e.start,n.end,"operator",`\`${t.text}\`: ${r}`,[e,this.opNode(t,r),n])}postfix(){let{s:e}=this,t=this.term(),n=[];for(;;){let l=this.toks[this.p];if(!l)break;let c=l.start===(n[n.length-1]??t).end;if(l.type==="field"&&c)this.p++,n.push(this.field(l));else if(l.text==="."&&this.toks[this.p+1]?.text==="["&&c)this.p++;else if(l.text==="["&&c)n.push(this.bracket());else if(l.text==="?")this.p++,n.push(this.node(l.start,l.end,"operator",e("`?`: \u30A8\u30E9\u30FC\u306B\u306A\u3063\u3066\u3082\u7121\u8996\u3057\u3066\u7D9A\u3051\u308B","`?`: ignore errors"),[],e("\uFF08\u30A8\u30E9\u30FC\u306F\u7121\u8996\uFF09","(errors ignored)")));else break}if(!n.length)return t;let a=[...this.text(t)==="."?[]:[t],...n],o=a.map(l=>l.short??`\`${this.text(l)}\``).join(" \u2192 ");return this.node(t.start,n[n.length-1].end,"variable",e(`\u30D1\u30B9: ${o}`,`Path: ${o}`),a)}field(e){let t=e.text.slice(1).replace(/^"|"$/g,"");return this.node(e.start,e.end,"variable",this.s(`\`${t}\` \u30D5\u30A3\u30FC\u30EB\u30C9\u306E\u5024`,`the value of field \`${t}\``),[],`\`${t}\``)}bracket(){let{s:e}=this,t=this.next();if(this.peek("]")){let u=this.next();return this.node(t.start,u.end,"operator",e("`[]`: \u914D\u5217\uFF08\u30AA\u30D6\u30B8\u30A7\u30AF\u30C8\uFF09\u306E\u5404\u8981\u7D20\u30921\u3064\u305A\u3064\u51FA\u529B\u3059\u308B","`[]`: output each element (or value) one by one"),[],e("\u5404\u8981\u7D20","each element"))}let n=this.toks[this.p],r=this.toks[this.p+1],a=this.toks[this.p+2];if((n?.type==="num"||n?.text==="-"&&r?.type==="num")&&(n.type==="num"?r:a)?.text==="]"){let u=n.text==="-",h=Number(u?r.text:n.text)*(u?-1:1);this.p+=u?2:1;let d=this.next(),p=h<0?e(h===-1?"\u6700\u5F8C\u306E\u8981\u7D20":`\u5F8C\u308D\u304B\u3089 ${-h} \u756A\u76EE\u306E\u8981\u7D20`,h===-1?"the last element":`the ${-h}th element from the end`):e(`${h+1} \u756A\u76EE\u306E\u8981\u7D20\uFF080 \u59CB\u307E\u308A\uFF09`,`element ${h} (0-based)`);return this.node(t.start,d.end,"operator",`\`[${h}]\`: ${p}`,[],p)}let o=this.findSlice();if(o!==void 0){let u=this.src.slice(t.end,o.start).trim(),[h,d]=u.split(":").map(f=>f.trim());this.p=this.toks.indexOf(o)+1;let p=e(`${h||"\u5148\u982D"} \u304B\u3089 ${d||"\u6700\u5F8C"}${d?" \u306E\u624B\u524D":""}\u307E\u3067`,`from ${h||"the start"} up to ${d?`(not including) ${d}`:"the end"}`);return this.node(t.start,o.end,"operator",e(`\`[${u}]\`: \u90E8\u5206\u914D\u5217\uFF08\u90E8\u5206\u6587\u5B57\u5217\uFF09\u3092\u53D6\u308A\u51FA\u3059: ${p}`,`\`[${u}]\`: a slice ${p}`),[],e(`[${u}] \u306E\u7BC4\u56F2`,`slice [${u}]`))}if(n?.type==="str"&&r?.text==="]"){this.p++;let u=this.next(),h=n.text.slice(1,-1);return this.node(t.start,u.end,"variable",e(`\`${h}\` \u30D5\u30A3\u30FC\u30EB\u30C9\u306E\u5024`,`the value of field \`${h}\``),[],`\`${h}\``)}let l=this.pipe(),c=this.expect("]");return this.node(t.start,c.end,"operator",e("`[\u5F0F]`: \u5F0F\u306E\u7D50\u679C\u3092\u30AD\u30FC\uFF08\u30A4\u30F3\u30C7\u30C3\u30AF\u30B9\uFF09\u306B\u3057\u3066\u53D6\u308A\u51FA\u3059","`[expr]`: index by the result of the expression"),[l],e("\u5F0F\u3067\u6307\u5B9A\u3057\u305F\u8981\u7D20","the indexed element"))}findSlice(){let e=0,t=!1;for(let n=this.p;n<this.toks.length;n++){let r=this.toks[n];if(r.text==="["||r.text==="("||r.text==="{")e++;else if(r.text===")"||r.text==="}")e--;else if(r.text==="]"){if(e===0)return t?r:void 0;e--}else r.text===":"&&e===0&&(t=!0)}}term(){let{s:e}=this,t=this.next();switch(t.type){case"field":return this.field(t);case"num":return this.node(t.start,t.end,"number",e(`\u6570\u5024 ${t.text}`,`Number ${t.text}`));case"str":return this.node(t.start,t.end,"string",t.text.includes("\\(")?e("\u6587\u5B57\u5217\uFF08`\\(\u2026)` \u306E\u90E8\u5206\u306B\u5F0F\u306E\u7D50\u679C\u304C\u57CB\u3081\u8FBC\u307E\u308C\u308B\uFF09","String (the result of each `\\(\u2026)` is interpolated)"):e(`\u6587\u5B57\u5217 ${t.text}`,`String ${t.text}`));case"var":{let r={$ENV:["\u74B0\u5883\u5909\u6570\u306E\u30AA\u30D6\u30B8\u30A7\u30AF\u30C8","the environment variables"],$__loc__:["\u3053\u306E\u4F4D\u7F6E\u306E\u30D5\u30A1\u30A4\u30EB\u540D\u3068\u884C\u756A\u53F7","the current file and line"]}[t.text];return this.node(t.start,t.end,"variable",r?`\`${t.text}\`: ${e(r[0],r[1])}`:e(`\u5909\u6570 \`${t.text}\`\uFF08\`--arg\` \u3084 \`as\` \u3067\u8A2D\u5B9A\u3055\u308C\u305F\u5024\uFF09`,`Variable \`${t.text}\` (set by \`--arg\` or \`as\`)`))}case"fmt":{let n=Bo[t.text],r=n?`\`${t.text}\`: ${e(n[0],n[1])}`:e(`\u66F8\u5F0F \`${t.text}\``,`Format \`${t.text}\``);if(this.peek()?.type==="str"){let a=this.next();return this.node(t.start,a.end,"operator",e(`${r}\uFF08\u6587\u5B57\u5217\u4E2D\u306E \`\\(\u2026)\` \u306B\u9069\u7528\uFF09`,`${r} (applied to each \`\\(\u2026)\` in the string)`))}return this.node(t.start,t.end,"operator",r)}case"ident":return this.call(t);case"kw":return this.keyword(t);case"op":break}switch(t.text){case".":return this.node(t.start,t.end,"variable",e("`.`: \u5165\u529B\u305D\u306E\u3082\u306E","`.`: the input itself"),[],e("\u5165\u529B","the input"));case"..":return this.node(t.start,t.end,"operator",e("`..`: \u5165\u529B\u3068\u305D\u306E\u3059\u3079\u3066\u306E\u5B50\u5B6B\u3092\u518D\u5E30\u7684\u306B\u51FA\u529B\u3059\u308B","`..`: the input and all of its descendants"));case"...":if(this.dialect!=="yq")throw new oe(t.start,"unexpected ...");return this.node(t.start,t.end,"operator",e("`...`: \u5165\u529B\u3068\u305D\u306E\u3059\u3079\u3066\u306E\u5B50\u5B6B\u3092\u3001\u30DE\u30C3\u30D7\u306E\u30AD\u30FC\u3082\u542B\u3081\u3066\u518D\u5E30\u7684\u306B\u51FA\u529B\u3059\u308B","`...`: the input and all of its descendants, map keys included"));case"-":{let n=this.postfix();return this.node(t.start,n.end,"operator",e("\u7B26\u53F7\u3092\u53CD\u8EE2\u3059\u308B","negation"),[n])}case"(":{let n=this.pipe(),r=this.expect(")");return this.node(t.start,r.end,"block",e("`( )`: \u4E2D\u306E\u5F0F\u3092\u3072\u3068\u307E\u3068\u3081\u306B\u3059\u308B","`( )`: groups the expression"),[n],n.short)}case"[":{if(this.peek("]")){let a=this.next();return this.node(t.start,a.end,"block",e("\u7A7A\u306E\u914D\u5217","An empty array"))}let n=this.pipe(),r=this.expect("]");return this.node(t.start,r.end,"block",e("`[ ]`: \u4E2D\u306E\u5F0F\u306E\u51FA\u529B\u3092\u3059\u3079\u3066\u96C6\u3081\u3066\u914D\u5217\u306B\u3059\u308B","`[ ]`: collects every output of the expression into an array"),[n])}case"{":return this.object(t)}throw new oe(t.start,`unexpected "${t.text}"`)}call(e){let{s:t}=this,n=e.text,r={true:["\u771F\u507D\u5024 true","boolean true"],false:["\u771F\u507D\u5024 false","boolean false"],null:["null","null"]};if(r[n])return this.node(e.start,e.end,"number",t(r[n][0],r[n][1]));let a=[],o=e.end;if(this.peek("(")&&this.toks[this.p].start===e.end)for(this.p++;;){a.push(this.pipe());let d=this.next();if(d.text===")"){o=d.end;break}if(d.text!==";")throw new oe(d.start,"expected ; or )")}let l=this.dialect==="yq",c=(l?Wn[n]:void 0)??Jo[n],u=c?t(c[0],c[1]):l?t("\u95A2\u6570","a function"):t("\u95A2\u6570\uFF08jq \u306E\u7D44\u307F\u8FBC\u307F\u95A2\u6570\u304B\u3001`def` \u3067\u5B9A\u7FA9\u3057\u305F\u95A2\u6570\uFF09","a function (built-in or defined with `def`)");if(l&&tn.has(n)&&(u+=t("\uFF08\u26A0 jq \u306E\u95A2\u6570\u3067\u3001mikefarah/yq \u306B\u306F\u306A\u3044\uFF09"," (\u26A0 a jq function; mikefarah/yq does not have it)")),l&&(n==="env"||n==="strenv")&&a.length===1&&/^[A-Za-z_]\w*$/.test(this.text(a[0]))&&(a[0]={...a[0],kind:"variable",explanation:t(`\u74B0\u5883\u5909\u6570\u540D \`${this.text(a[0])}\``,`the environment variable name \`${this.text(a[0])}\``),children:[]}),!a.length)return this.node(e.start,e.end,"function",`\`${n}\`: ${u}`,[],`\`${n}\``);let h=this.node(e.start,e.end,"function",t("\u95A2\u6570\u540D","Function name"));return this.node(e.start,o,"function",`\`${n}(\u2026)\`: ${u}`,[h,...a.map((d,p)=>({...d,explanation:(a.length>1?t(`\u5F15\u6570 ${p+1}: `,`Argument ${p+1}: `):t("\u5F15\u6570: ","Argument: "))+d.explanation}))],`\`${n}(\u2026)\``)}object(e){let{s:t}=this,n=[];for(;!this.peek("}");){let a=this.next(),o=a.text,l;if(a.type==="str")o=a.text.slice(1,-1);else if(a.text==="(")l=this.pipe(),this.expect(")"),o=t("\u5F0F\u306E\u7D50\u679C","the computed key");else if(a.type==="var")o=a.text.slice(1);else if(a.type!=="ident"&&a.type!=="kw")throw new oe(a.start,"bad object key");if(this.peek(":")){this.p++;let c=this.objectValue();n.push(this.node(a.start,c.end,"assignment",t(`\u30AD\u30FC \`${o}\` \u306B\u5024 \`${this.text(c)}\` \u3092\u5165\u308C\u308B`,`Key \`${o}\` gets \`${this.text(c)}\``),[...l?[l]:[],c]))}else{let c=a.type==="var"?a.text:`.${o}`;n.push(this.node(a.start,this.toks[this.p-1].end,"assignment",t(`\u30AD\u30FC \`${o}\` \u306B \`${c}\` \u3092\u5165\u308C\u308B\uFF08\`{${a.text}}\` \u306F \`{${o}: ${c}}\` \u306E\u7701\u7565\u5F62\uFF09`,`Key \`${o}\` gets \`${c}\` (short for \`{${o}: ${c}}\`)`)))}if(this.peek(","))this.p++;else if(!this.peek("}"))throw new oe(this.toks[this.p]?.start??this.src.length,"expected , or }")}let r=this.next();return this.node(e.start,r.end,"block",t("`{ }`: \u30AA\u30D6\u30B8\u30A7\u30AF\u30C8\u3092\u4F5C\u308B","`{ }`: builds an object"),n)}objectValue(){return this.alternative()}keyword(e){let{s:t}=this;switch(e.text){case"if":{let n=[],r=this.pipe();n.push({...r,explanation:t("\u6761\u4EF6: ","Condition: ")+r.explanation}),this.expect("then");let a=this.pipe();for(n.push({...a,explanation:t("\u771F\u306E\u3068\u304D: ","If true: ")+a.explanation});this.peek("elif");){this.p++;let l=this.pipe();n.push({...l,explanation:t("\u6B21\u306E\u6761\u4EF6: ","Next condition: ")+l.explanation}),this.expect("then");let c=this.pipe();n.push({...c,explanation:t("\u305D\u306E\u6761\u4EF6\u304C\u771F\u306E\u3068\u304D: ","If that is true: ")+c.explanation})}if(this.peek("else")){this.p++;let l=this.pipe();n.push({...l,explanation:t("\u507D\u306E\u3068\u304D: ","Otherwise: ")+l.explanation})}let o=this.expect("end");return this.node(e.start,o.end,"keyword",t("\u6761\u4EF6\u5206\u5C90: \u6761\u4EF6\u304C\u771F\u306A\u3089 then\u3001\u507D\u306A\u3089 else \u306E\u5F0F\u3092\u51FA\u529B\u3059\u308B","Conditional: outputs the then branch if the condition is true, else the else branch"),n)}case"reduce":case"foreach":{let n=this.postfix();this.expect("as");let r=this.next();this.expect("(");let a=this.pipe();this.expect(";");let o=this.pipe(),l;this.peek(";")&&(this.p++,l=this.pipe());let c=this.expect(")"),u=e.text==="reduce"?t(`\u7573\u307F\u8FBC\u307F: \`${this.text(n)}\` \u306E\u5404\u5024\u3092 \`${r.text}\` \u3068\u3057\u3066\u3001\u521D\u671F\u5024\u304B\u3089\u9806\u306B\u66F4\u65B0\u3057\u3001\u6700\u5F8C\u306E\u7D50\u679C\u3092\u51FA\u529B\u3059\u308B`,`Reduce: fold each value of \`${this.text(n)}\` (as \`${r.text}\`) into an accumulator and output the final result`):t(`\`${this.text(n)}\` \u306E\u5404\u5024\u3092 \`${r.text}\` \u3068\u3057\u3066\u9806\u306B\u66F4\u65B0\u3057\u3001\u9014\u4E2D\u306E\u7D50\u679C\u3092\u6BCE\u56DE\u51FA\u529B\u3059\u308B`,`Foreach: update an accumulator with each value of \`${this.text(n)}\` (as \`${r.text}\`), outputting each step`),h=[{...n,explanation:t("\u7E70\u308A\u8FD4\u3059\u5024: ","Values: ")+n.explanation},this.node(r.start,r.end,"variable",t(`\u5404\u5024\u304C\u5165\u308B\u5909\u6570 \`${r.text}\``,`Each value is bound to \`${r.text}\``)),{...a,explanation:t("\u521D\u671F\u5024\uFF08`.` \u304C\u84C4\u7A4D\u5024\uFF09: ","Initial value (`.` is the accumulator): ")+a.explanation},{...o,explanation:t("\u66F4\u65B0\u5F0F: ","Update: ")+o.explanation}];return l&&h.push({...l,explanation:t("\u51FA\u529B\u3059\u308B\u5024: ","Output: ")+l.explanation}),this.node(e.start,c.end,"keyword",u,h)}case"try":{let n=this.postfix(),r=[n],a=n.end;if(this.peek("catch")){this.p++;let o=this.postfix();r.push({...o,explanation:t("\u30A8\u30E9\u30FC\u6642: ","On error: ")+o.explanation}),a=o.end}return this.node(e.start,a,"keyword",t("`try`: \u30A8\u30E9\u30FC\u304C\u8D77\u304D\u3066\u3082\u6B62\u3081\u305A\u306B\u7D9A\u3051\u308B\uFF08`catch` \u304C\u3042\u308C\u3070\u30A8\u30E9\u30FC\u6642\u306B\u305D\u308C\u3092\u5B9F\u884C\uFF09","`try`: keep going on errors (run `catch` on an error)"),r)}case"label":{let n=this.next();this.expect("|");let r=this.pipe();return this.node(e.start,r.end,"keyword",t(`\u30E9\u30D9\u30EB \`${n.text}\`: \`break ${n.text}\` \u3067\u629C\u3051\u3089\u308C\u308B\u7BC4\u56F2`,`Label \`${n.text}\`: \`break ${n.text}\` exits here`),[r])}case"def":return this.p--,this.definition()}throw new oe(e.start,`unexpected "${e.text}"`)}definition(){let{s:e}=this,t=this.expect("def"),n=this.next(),r="";if(this.peek("(")){let l=this.next();for(;!this.peek(")");)this.p++;let c=this.next();r=this.src.slice(l.start,c.end)}this.expect(":");let a=this.pipe(),o=this.expect(";");return this.node(t.start,o.end,"function",e(`\u95A2\u6570 \`${n.text}${r}\` \u3092\u5B9A\u7FA9\u3059\u308B`,`Defines the function \`${n.text}${r}\``),[a])}text(e){return this.src.slice(e.start,e.end)}};function Bn(s,e,t="jq"){let n=A(e);try{let r=We(s);if(!r.length)return[];let a=new Jn(s,r,e,t),o=a.pipe();if(!a.done)throw new oe(r[r.length-1].start,"trailing input");return Pr(o.isPipe?o.children:[o])}catch(r){if(!(r instanceof oe))throw r;return[{start:0,end:s.length,kind:"error",children:[],explanation:n("jq \u30D5\u30A3\u30EB\u30BF\u3092\u89E3\u6790\u3067\u304D\u307E\u305B\u3093\u3067\u3057\u305F\uFF08\u69CB\u6587\u306E\u8AA4\u308A\u304B\u3001\u672A\u5BFE\u5FDC\u306E\u66F8\u304D\u65B9\uFF09","Could not parse the jq filter (a syntax error, or unsupported syntax)")}]}}function Pr(s){return s.map(({start:e,end:t,kind:n,explanation:r,children:a})=>({start:e,end:t,kind:n,explanation:r,children:Pr(a)}))}var J=class extends Error{},Hn=class s{constructor(e,t){this.src=e;this.toks=t}src;toks;p=0;get done(){return this.p>=this.toks.length}peek(e){let t=this.toks[this.p];return e===void 0||t?.text===e&&t.type!=="str"?t:void 0}next(){let e=this.toks[this.p++];if(!e)throw new J("end");return e}expect(e){let t=this.next();if(t.text!==e)throw new J(`expected ${e}`);return t}pipe(){if(this.peek("def")){this.p++;let t=this.next().text,n=[];if(this.peek("(")){for(this.p++;!this.peek(")");){let a=this.next();a.text!==";"&&n.push(a.text)}this.p++}this.expect(":");let r=this.pipe();return this.expect(";"),{t:"def",name:t,params:n,body:r,rest:this.pipe()}}let e=this.comma();if(this.peek("as")){this.p++;let t=this.next();if(t.type!=="var")throw new J("destructuring");return this.expect("|"),{t:"as",src:e,v:t.text,body:this.pipe()}}return this.peek("|")?(this.p++,{t:"pipe",l:e,r:this.pipe()}):e}comma(){let e=this.alt();for(;this.peek(",");)this.p++,e={t:"comma",l:e,r:this.alt()};return e}alt(){let e=this.assign();if(this.peek("?//"))throw new J("?//");return this.peek("//")?(this.p++,{t:"alt",l:e,r:this.alt()}):e}assign(){let e=this.or(),t=this.peek();return t?.type==="op"&&["=","|=","+=","-=","*=","/=","%=","//="].includes(t.text)?(this.p++,{t:"assign",op:t.text,l:e,r:this.alt()}):e}or(){let e=this.and();for(;this.peek("or");)this.p++,e={t:"bin",op:"or",l:e,r:this.and()};return e}and(){let e=this.compare();for(;this.peek("and");)this.p++,e={t:"bin",op:"and",l:e,r:this.compare()};return e}compare(){let e=this.additive(),t=this.peek();return t?.type==="op"&&["==","!=","<","<=",">",">="].includes(t.text)?(this.p++,{t:"bin",op:t.text,l:e,r:this.additive()}):e}additive(){let e=this.mult();for(;this.peek("+")||this.peek("-");)e={t:"bin",op:this.next().text,l:e,r:this.mult()};return e}mult(){let e=this.unary();for(;this.peek("*")||this.peek("/")||this.peek("%");)e={t:"bin",op:this.next().text,l:e,r:this.unary()};return e}unary(){return this.peek("-")?(this.p++,{t:"neg",e:this.postfix()}):this.postfix()}postfix(){let e=this.term();for(;;){let t=this.toks[this.p];if(!t)return e;let n=this.toks[this.p-1].end,r=t.start===n;if(t.type==="field"&&r)this.p++,e={t:"field",base:e,name:Lr(t.text)};else if(t.text==="."&&t.type==="op"&&this.toks[this.p+1]?.text==="["&&r)this.p++;else if(t.text==="["&&t.type==="op"&&r)e=this.bracket(e);else if(t.text==="?"&&t.type==="op"){let a=this.toks[this.p-1].text===")";this.p++,e=!a&&(e.t==="field"||e.t==="index"||e.t==="slice"||e.t==="iter")?{...e,opt:!0}:{t:"try",body:e}}else return e}}bracket(e){if(this.expect("["),this.peek("]"))return this.p++,{t:"iter",base:e};if(this.peek(":")){this.p++;let n=this.pipe();return this.expect("]"),{t:"slice",base:e,to:n}}let t=this.pipe();if(this.peek(":")){this.p++;let n=this.peek("]")?void 0:this.pipe();return this.expect("]"),{t:"slice",base:e,from:t,to:n}}return this.expect("]"),{t:"index",base:e,idx:t}}term(){let e=this.next();switch(e.type){case"num":return{t:"lit",v:Number(e.text)};case"str":return{t:"str",parts:this.stringParts(e)};case"var":return{t:"var",name:e.text};case"field":return{t:"field",base:{t:"id"},name:Lr(e.text)};case"fmt":return this.peek()?.type==="str"?{t:"str",parts:this.stringParts(this.next()),fmt:e.text}:{t:"fmt",name:e.text};case"ident":{if(e.text==="true"||e.text==="false")return{t:"lit",v:e.text==="true"};if(e.text==="null")return{t:"lit",v:null};let t=[];if(this.peek("(")&&this.toks[this.p].start===e.end)for(this.p++;;){t.push(this.pipe());let n=this.next();if(n.text===")")break;if(n.text!==";")throw new J("args")}return{t:"call",name:e.text,args:t}}case"kw":return this.keyword(e)}switch(e.text){case".":return{t:"id"};case"..":return{t:"recurse"};case"(":{let t=this.pipe();return this.expect(")"),t}case"[":{if(this.peek("]"))return this.p++,{t:"array"};let t=this.pipe();return this.expect("]"),{t:"array",e:t}}case"{":return this.object();case"-":return{t:"neg",e:this.postfix()}}throw new J(`unexpected ${e.text}`)}stringParts(e){let t=e.text.slice(1,-1),n=[],r="";for(let a=0;a<t.length;a++){if(t[a]==="\\"&&t[a+1]==="("){let o=1,l=a+2;for(;l<t.length&&o>0;)t[l]==="("?o++:t[l]===")"&&o--,l++;r&&n.push(JSON.parse(`"${r}"`)),r="";let c=t.slice(a+2,l-1),u=new s(c,We(c));n.push(u.pipe()),a=l-1;continue}if(t[a]==="\\"){r+=t.slice(a,a+2),a++;continue}r+=t[a]}return r&&n.push(JSON.parse(`"${r}"`)),n}object(){let e=[];for(;!this.peek("}");){let t=this.next(),n,r;if(t.type==="var")n={t:"lit",v:t.text.slice(1)},r={t:"var",name:t.text};else if(t.type==="str")n={t:"str",parts:this.stringParts(t)};else if(t.text==="(")n=this.pipe(),this.expect(")");else if(t.type==="ident"||t.type==="kw")n={t:"lit",v:t.text};else throw new J("object key");if(this.peek(":")&&(this.p++,r=this.objectValue()),!r){if(n.t!=="lit"&&n.t!=="str")throw new J("object shorthand");let a=n.t==="lit"?String(n.v):n.parts.length===1&&typeof n.parts[0]=="string"?n.parts[0]:void 0;if(a===void 0)throw new J("object shorthand");r={t:"field",base:{t:"id"},name:a}}if(e.push({key:n,value:r}),this.peek(","))this.p++;else if(!this.peek("}"))throw new J("object")}return this.p++,{t:"object",entries:e}}objectValue(){let e=this.alt();for(;this.peek("|");)this.p++,e={t:"pipe",l:e,r:this.alt()};return e}keyword(e){switch(e.text){case"if":{let t=[],n=this.pipe();this.expect("then"),t.push([n,this.pipe()]);let r;for(;;)if(this.peek("elif"))this.p++,n=this.pipe(),this.expect("then"),t.push([n,this.pipe()]);else if(this.peek("else"))this.p++,r=this.pipe();else break;return this.expect("end"),{t:"if",branches:t,else:r}}case"reduce":case"foreach":{let t=this.postfix();this.expect("as");let n=this.next();if(n.type!=="var")throw new J("destructuring");this.expect("(");let r=this.pipe();this.expect(";");let a=this.pipe(),o;return this.peek(";")&&(this.p++,o=this.pipe()),this.expect(")"),e.text==="reduce"?{t:"reduce",src:t,v:n.text,init:r,update:a}:{t:"foreach",src:t,v:n.text,init:r,update:a,extract:o}}case"try":{let t=this.postfix();return this.peek("catch")?(this.p++,{t:"try",body:t,catch:this.postfix()}):{t:"try",body:t}}}throw new J(e.text)}};function Lr(s){let e=s.slice(1);return e.startsWith('"')?JSON.parse(e):e}function Dr(s){try{let e=We(s),t=new Hn(s,e),n=t.pipe();return t.done?n:void 0}catch(e){if(e instanceof J||e instanceof oe||e instanceof SyntaxError)return;throw e}}var O=class extends Error{constructor(t){super(typeof t=="string"?t:JSON.stringify(t));this.value=t}value},Z=s=>typeof s=="object"&&s!==null&&!Array.isArray(s);function L(s){return s===null?"null":Array.isArray(s)?"array":typeof s=="object"?"object":typeof s}var jr=["null","boolean","number","string","array","object"];function Q(s,e){let t=jr.indexOf(L(s)),n=jr.indexOf(L(e));if(t!==n)return t-n;if(typeof s=="boolean"||typeof s=="number")return Number(s)-Number(e);if(typeof s=="string")return s<e?-1:s>e?1:0;if(Array.isArray(s)){let r=e;for(let a=0;a<Math.min(s.length,r.length);a++){let o=Q(s[a],r[a]);if(o)return o}return s.length-r.length}if(Z(s)){let r=e,a=Object.keys(s).sort(),o=Object.keys(r).sort(),l=Q(a,o);if(l)return l;for(let c of a){let u=Q(s[c],r[c]);if(u)return u}}return 0}var me=s=>s!==null&&s!==!1;function zr(s,e){if(s===null)return e;if(e===null)return s;if(typeof s=="number"&&typeof e=="number"||typeof s=="string"&&typeof e=="string")return s+e;if(Array.isArray(s)&&Array.isArray(e))return[...s,...e];if(Z(s)&&Z(e))return{...s,...e};throw new O(`${L(s)} and ${L(e)} cannot be added`)}function qr(s,e,t){switch(s){case"+":return zr(e,t);case"-":if(typeof e=="number"&&typeof t=="number")return e-t;if(Array.isArray(e)&&Array.isArray(t))return e.filter(n=>!t.some(r=>Q(n,r)===0));break;case"*":if(typeof e=="number"&&typeof t=="number")return e*t;if(Z(e)&&Z(t))return Wr(e,t);if(typeof e=="string"&&typeof t=="number")return t>0?e.repeat(Math.ceil(t)):null;break;case"/":if(typeof e=="number"&&typeof t=="number"){if(t===0)throw new O(`${e} and ${t} cannot be divided because the divisor is zero`);return e/t}if(typeof e=="string"&&typeof t=="string")return e.split(t);break;case"%":if(typeof e=="number"&&typeof t=="number"){if(Math.trunc(t)===0)throw new O(`${e} and ${t} cannot be divided because the divisor is zero`);return Math.trunc(e)%Math.trunc(t)}break}throw new O(`${L(e)} and ${L(t)} cannot be ${s==="-"?"subtracted":s==="*"?"multiplied":"divided"}`)}function Wr(s,e){let t={...s};for(let[n,r]of Object.entries(e))t[n]=Z(t[n])&&Z(r)?Wr(t[n],r):r;return t}function ue(s){return JSON.stringify(s)}function sn(s,e){if(L(s)!==L(e))throw new O(`${L(s)} and ${L(e)} cannot have their containment checked`);return typeof s=="string"?s.includes(e):Array.isArray(s)?e.every(t=>s.some(n=>L(t)===L(n)&&sn(n,t))):Z(s)?Object.entries(e).every(([t,n])=>t in s&&L(s[t])===L(n)&&sn(s[t],n)):Q(s,e)===0}var Gn=class{steps=0;tick(){if(++this.steps>1e5)throw new J("too many steps")}ev(e,t,n){switch(this.tick(),e.t){case"id":return[t];case"recurse":return this.recurse(t);case"lit":return[e.v];case"var":{if(!n.vars.has(e.name))throw new J(`variable ${e.name}`);return[n.vars.get(e.name)]}case"field":return this.ev(e.base,t,n).flatMap(r=>this.opt(e.opt,()=>[this.field(r,e.name)]));case"index":return this.ev(e.base,t,n).flatMap(r=>this.ev(e.idx,t,n).flatMap(a=>this.opt(e.opt,()=>[this.index(r,a)])));case"slice":return this.ev(e.base,t,n).flatMap(r=>this.opt(e.opt,()=>{let a=e.from?this.ev(e.from,t,n)[0]:null,o=e.to?this.ev(e.to,t,n)[0]:null;return[this.slice(r,a,o)]}));case"iter":return this.ev(e.base,t,n).flatMap(r=>this.opt(e.opt,()=>this.iterate(r)));case"try":try{return this.ev(e.body,t,n)}catch(r){if(!(r instanceof O))throw r;return e.catch?this.ev(e.catch,r.value,n):[]}case"str":{let r=[""];for(let a of e.parts){if(typeof a=="string"){r=r.map(l=>l+a);continue}let o=this.ev(a,t,n).map(l=>e.fmt?this.format(e.fmt,l):typeof l=="string"?l:ue(l));r=r.flatMap(l=>o.map(c=>l+c))}return r}case"fmt":return[this.format(e.name,t)];case"pipe":return this.ev(e.l,t,n).flatMap(r=>this.ev(e.r,r,n));case"comma":return[...this.ev(e.l,t,n),...this.ev(e.r,t,n)];case"alt":{let r=[];try{r=this.ev(e.l,t,n).filter(me)}catch(a){if(!(a instanceof O))throw a}return r.length?r:this.ev(e.r,t,n)}case"neg":return this.ev(e.e,t,n).map(r=>{if(typeof r!="number")throw new O(`${L(r)} cannot be negated`);return-r});case"bin":return e.op==="and"||e.op==="or"?this.ev(e.l,t,n).flatMap(r=>e.op==="and"&&!me(r)?[!1]:e.op==="or"&&me(r)?[!0]:this.ev(e.r,t,n).map(me)):this.ev(e.r,t,n).flatMap(r=>this.ev(e.l,t,n).map(a=>{switch(e.op){case"==":return Q(a,r)===0;case"!=":return Q(a,r)!==0;case"<":return Q(a,r)<0;case"<=":return Q(a,r)<=0;case">":return Q(a,r)>0;case">=":return Q(a,r)>=0;default:return qr(e.op,a,r)}}));case"array":return[e.e?this.ev(e.e,t,n):[]];case"object":{let r=[{}];for(let{key:a,value:o}of e.entries){let l=this.ev(a,t,n),c=this.ev(o,t,n);r=r.flatMap(u=>l.flatMap(h=>{if(typeof h!="string")throw new O("Object keys must be strings");return c.map(d=>({...u,[h]:d}))}))}return r}case"if":{let r=(a,o)=>{if(a>=e.branches.length)return e.else?this.ev(e.else,o,n):[o];let[l,c]=e.branches[a];return this.ev(l,o,n).flatMap(u=>me(u)?this.ev(c,o,n):r(a+1,o))};return r(0,t)}case"reduce":{let r=this.ev(e.init,t,n);for(let a of this.ev(e.src,t,n)){let o={...n,vars:new Map(n.vars).set(e.v,a)};r=r.flatMap(l=>this.ev(e.update,l,o)).slice(-1)}return r}case"foreach":{let r=this.ev(e.init,t,n),a=[];for(let o of this.ev(e.src,t,n)){let l={...n,vars:new Map(n.vars).set(e.v,o)};r=r.flatMap(c=>this.ev(e.update,c,l));for(let c of r)a.push(...e.extract?this.ev(e.extract,c,l):[c])}return a}case"as":return this.ev(e.src,t,n).flatMap(r=>this.ev(e.body,t,{...n,vars:new Map(n.vars).set(e.v,r)}));case"def":{let r={...n,funcs:new Map(n.funcs)};return r.funcs.set(`${e.name}/${e.params.length}`,{params:e.params,body:e.body,env:r}),this.ev(e.rest,t,r)}case"assign":return[this.assign(e,t,n)];case"call":return this.call(e,t,n)}}opt(e,t){if(!e)return t();try{return t()}catch(n){if(n instanceof O)return[];throw n}}field(e,t){if(e===null)return null;if(!Z(e))throw new O(`Cannot index ${L(e)} with "${t}"`);return t in e?e[t]:null}index(e,t){if(typeof t=="string")return this.field(e,t);if(e===null)return null;if(typeof t=="number"&&Array.isArray(e)){let n=Math.floor(t<0?e.length+t:t);return e[n]??null}throw new O(`Cannot index ${L(e)} with ${L(t)}`)}slice(e,t,n){if(e===null)return null;if(!Array.isArray(e)&&typeof e!="string")throw new O(`Cannot index ${L(e)} with object`);let r=e.length,a=(o,l)=>{if(o===null)return l;let c=Math.floor(o);return Math.max(0,Math.min(r,c<0?r+c:c))};return e.slice(a(t,0),a(n,r))}iterate(e){if(Array.isArray(e))return e;if(Z(e))return Object.values(e);throw new O(`Cannot iterate over ${L(e)}`)}recurse(e){let t=[e];if(Array.isArray(e))for(let n of e)t.push(...this.recurse(n));else if(Z(e))for(let n of Object.values(e))t.push(...this.recurse(n));return t}format(e,t){let n=typeof t=="string"?t:ue(t);switch(e){case"@text":return n;case"@json":return ue(t);case"@base64":return ar(n);case"@base64d":return or(n);case"@uri":return encodeURIComponent(n).replace(/[!'()*]/g,r=>"%"+r.charCodeAt(0).toString(16).toUpperCase());case"@html":return n.replace(/[<>&'"]/g,r=>({"<":"&lt;",">":"&gt;","&":"&amp;","'":"&#39;",'"':"&quot;"})[r]);case"@sh":{let r=a=>{if(typeof a=="string")return`'${a.replace(/'/g,"'\\''")}'`;if(Array.isArray(a)||Z(a))throw new O(`${L(a)} can not be escaped for shell`);return ue(a)};return Array.isArray(t)?t.map(r).join(" "):r(t)}case"@csv":case"@tsv":{if(!Array.isArray(t))throw new O(`${L(t)} cannot be ${e.slice(1)}-formatted, only an array can be`);return t.map(r=>{if(typeof r=="number"||typeof r=="boolean")return String(r);if(r===null)return"";if(typeof r!="string")throw new O(`${L(r)} is not valid in a csv row`);return e==="@csv"?`"${r.replace(/"/g,'""')}"`:r.replace(/\\/g,"\\\\").replace(/\t/g,"\\t").replace(/\n/g,"\\n").replace(/\r/g,"\\r")}).join(e==="@csv"?",":" ")}}throw new J(e)}paths(e,t,n){switch(this.tick(),e.t){case"id":return[[]];case"field":return this.paths(e.base,t,n).flatMap(r=>this.opt2(e.opt,()=>(this.field(this.getpath(t,r),e.name),[[...r,e.name]])));case"index":return this.paths(e.base,t,n).flatMap(r=>this.ev(e.idx,t,n).map(a=>{if(typeof a!="string"&&typeof a!="number")throw new J("index path");return[...r,a]}));case"iter":return this.paths(e.base,t,n).flatMap(r=>{let a=this.getpath(t,r);if(Array.isArray(a))return a.map((o,l)=>[...r,l]);if(Z(a))return Object.keys(a).map(o=>[...r,o]);if(a===null&&e.opt)return[];throw new O(`Cannot iterate over ${L(a)}`)});case"pipe":return this.paths(e.l,t,n).flatMap(r=>this.paths(e.r,this.getpath(t,r),n).map(a=>[...r,...a]));case"comma":return[...this.paths(e.l,t,n),...this.paths(e.r,t,n)];case"recurse":{let r=[],a=(o,l)=>{r.push(l),Array.isArray(o)?o.forEach((c,u)=>a(c,[...l,u])):Z(o)&&Object.entries(o).forEach(([c,u])=>a(u,[...l,c]))};return a(t,[]),r}case"if":{let r=a=>{if(a>=e.branches.length)return e.else?this.paths(e.else,t,n):[[]];let[o,l]=e.branches[a];return this.ev(o,t,n).flatMap(c=>me(c)?this.paths(l,t,n):r(a+1))};return r(0)}case"call":if(e.name==="select"&&e.args.length===1)return this.ev(e.args[0],t,n).some(me)?[[]]:[];if(e.name==="empty")return[];if(e.name==="recurse"&&!e.args.length)return this.paths({t:"recurse"},t,n);if(e.name==="first"&&e.args.length===1)return this.paths(e.args[0],t,n).slice(0,1);break}throw new J(`path of ${e.t}`)}opt2(e,t){try{return t()}catch(n){if(e&&n instanceof O)return[];throw n}}getpath(e,t){let n=e;for(let r of t){if(n===null)return null;if(typeof r=="object")throw new J("slice path");n=typeof r=="number"?Array.isArray(n)?n[r<0?n.length+r:r]??null:this.index(n,r):this.field(n,r)}return n}setpath(e,t,n){if(!t.length)return n;let[r,...a]=t;if(typeof r=="object")throw new J("slice path");if(typeof r=="number"){let l=e===null?[]:Array.isArray(e)?[...e]:(()=>{throw new O(`Cannot index ${L(e)} with number`)})(),c=r<0?l.length+r:r;for(;l.length<=c;)l.push(null);return l[c]=this.setpath(l[c],a,n),l}let o=e===null?{}:Z(e)?{...e}:(()=>{throw new O(`Cannot index ${L(e)} with "${r}"`)})();return o[r]=this.setpath(o[r]??null,a,n),o}delpaths(e,t){let n=[...t].sort((a,o)=>Q(o,a)),r=e;for(let a of n)r=this.delpath(r,a);return r}delpath(e,t){if(!t.length)return null;let[n,...r]=t;if(e===null)return null;if(typeof n=="object")throw new J("slice path");if(!r.length){if(Array.isArray(e)&&typeof n=="number")return e.filter((o,l)=>l!==(n<0?e.length+n:n));if(Z(e)&&typeof n=="string"){let{[n]:o,...l}=e;return l}throw new O(`Cannot delete field at ${L(e)} index`)}let a=this.getpath(e,[n]);return this.setpath(e,[n],this.delpath(a,r))}assign(e,t,n){let r=this.paths(e.l,t,n);if(e.op==="|="){let o=t;for(let l of r){let c=this.ev(e.r,this.getpath(o,l),n);o=c.length?this.setpath(o,l,c[0]):this.delpath(o,l)}return o}if(e.op==="="){let o=this.ev(e.r,t,n);if(o.length!==1)throw new J("= with several values");return r.reduce((l,c)=>this.setpath(l,c,o[0]),t)}let a=this.ev(e.r,t,n);if(a.length!==1)throw new J("arithmetic update with several values");return r.reduce((o,l)=>{let c=this.getpath(o,l),u=e.op==="//="?me(c)?c:a[0]:qr(e.op.slice(0,-1),c,a[0]);return this.setpath(o,l,u)},t)}call(e,t,n){let r=n.funcs.get(`${e.name}/${e.args.length}`);if(r){let p=new Map,f=new Map(r.env.vars);return r.params.forEach((m,g)=>{if(m.startsWith("$")){let _=this.ev(e.args[g],t,n);if(_.length!==1)throw new J("$param with several values");f.set(m,_[0]),p.set(m.slice(1),{node:{t:"var",name:m},env:{...r.env,vars:f}})}else p.set(m,{node:e.args[g],env:n})}),this.ev(r.body,t,{...r.env,vars:f,closures:p,funcs:r.env.funcs})}let a=n.closures?.get(e.name);if(a&&!e.args.length)return this.ev(a.node,t,a.env);let o=e.args,l=p=>{let f=this.ev(o[p],t,n);if(f.length!==1)throw new J(`${e.name} argument with several values`);return f[0]},c=(p,f=e.name)=>{if(!Array.isArray(p))throw new O(`Cannot ${f} ${L(p)}`);return p},u=p=>{if(typeof p!="string")throw new O(`${L(p)} cannot be used as a string`);return p},h=p=>f=>this.ev(p,f,n),d=`${e.name}/${o.length}`;switch(d){case"empty/0":return[];case"not/0":return[!me(t)];case"error/0":throw new O(t);case"error/1":throw new O(l(0));case"length/0":if(t===null)return[0];if(typeof t=="boolean")throw new O("boolean has no length");return typeof t=="number"?[Math.abs(t)]:typeof t=="string"?[[...t].length]:[Array.isArray(t)?t.length:Object.keys(t).length];case"utf8bytelength/0":return[Gt(u(t))];case"keys/0":case"keys_unsorted/0":if(Array.isArray(t))return[t.map((p,f)=>f)];if(!Z(t))throw new O(`${L(t)} has no keys`);return[e.name==="keys"?Object.keys(t).sort():Object.keys(t)];case"values/0":return t===null?[]:[t];case"has/1":{let p=l(0);if(Z(t)&&typeof p=="string")return[p in t];if(Array.isArray(t)&&typeof p=="number")return[p>=0&&p<t.length];throw new O(`Cannot check whether ${L(t)} has a ${L(p)} key`)}case"in/1":{let p=l(0);if(Z(p)&&typeof t=="string")return[t in p];if(Array.isArray(p)&&typeof t=="number")return[t>=0&&t<p.length];throw new O("in: bad arguments")}case"contains/1":return[sn(t,l(0))];case"inside/1":return[sn(l(0),t)];case"select/1":return this.ev(o[0],t,n).filter(me).map(()=>t);case"map/1":return[this.iterate(t).flatMap(h(o[0]))];case"map_values/1":if(Array.isArray(t))return[t.flatMap(p=>h(o[0])(p).slice(0,1))];if(Z(t))return[Object.fromEntries(Object.entries(t).flatMap(([p,f])=>h(o[0])(f).slice(0,1).map(m=>[p,m])))];throw new O(`Cannot iterate over ${L(t)}`);case"add/0":return[this.iterate(t).reduce((p,f)=>zr(p,f),null)];case"any/0":return[c(t).some(me)];case"all/0":return[c(t).every(me)];case"any/1":return[c(t).some(p=>h(o[0])(p).some(me))];case"all/1":return[c(t).every(p=>h(o[0])(p).every(me))];case"flatten/0":case"flatten/1":{let p=o.length?l(0):1e9,f=(m,g)=>m.flatMap(_=>Array.isArray(_)&&g>0?f(_,g-1):[_]);return[f(c(t),p)]}case"range/1":{let p=l(0);return Array.from({length:Math.max(0,Math.ceil(p))},(f,m)=>m)}case"range/2":{let p=l(0),f=l(1),m=[];for(let g=p;g<f&&m.length<1e3;g++)m.push(g);return m}case"floor/0":return[Math.floor(t)];case"ceil/0":return[Math.ceil(t)];case"round/0":return[Math.round(t)];case"sqrt/0":return[Math.sqrt(t)];case"fabs/0":case"abs/0":return[Math.abs(t)];case"tostring/0":return[typeof t=="string"?t:ue(t)];case"tonumber/0":{if(typeof t=="number")return[t];let p=Number(u(t));if(Number.isNaN(p)||u(t).trim()==="")throw new O(`Cannot parse '${t}' as JSON`);return[p]}case"type/0":return[L(t)];case"sort/0":return[[...c(t,"sort")].sort(Q)];case"sort_by/1":return[[...c(t,"sort")].map(p=>[h(o[0])(p),p]).sort((p,f)=>Q(p[0],f[0])).map(p=>p[1])];case"group_by/1":{let p=[...c(t)].map(m=>[h(o[0])(m),m]).sort((m,g)=>Q(m[0],g[0])),f=[];return p.forEach((m,g)=>{(g===0||Q(m[0],p[g-1][0])!==0)&&f.push([]),f[f.length-1].push(m[1])}),[f]}case"unique/0":return[[...c(t)].sort(Q).filter((p,f,m)=>f===0||Q(p,m[f-1])!==0)];case"unique_by/1":{let p=[...c(t)].map(f=>[h(o[0])(f),f]).sort((f,m)=>Q(f[0],m[0]));return[p.filter((f,m)=>m===0||Q(f[0],p[m-1][0])!==0).map(f=>f[1])]}case"min/0":case"max/0":{let p=[...c(t)].sort(Q);return[p.length?e.name==="min"?p[0]:p[p.length-1]:null]}case"min_by/1":case"max_by/1":{let p=[...c(t)].map(f=>[h(o[0])(f),f]).sort((f,m)=>Q(f[0],m[0]));return p.length?[e.name==="min_by"?p[0][1]:p[p.length-1][1]]:[null]}case"reverse/0":return[typeof t=="string"?[...t].reverse().join(""):t===null?[]:[...c(t)].reverse()];case"first/0":return[this.index(t,0)];case"last/0":return[this.index(t,-1)];case"nth/1":return[this.index(t,l(0))];case"first/1":return this.ev(o[0],t,n).slice(0,1);case"last/1":return this.ev(o[0],t,n).slice(-1);case"limit/2":{let p=l(0);return p>0?this.ev(o[1],t,n).slice(0,p):[]}case"isempty/1":return[this.ev(o[0],t,n).length===0];case"recurse/0":return this.recurse(t);case"recurse/1":{let p=[],f=m=>{p.push(m),this.tick();for(let g of this.opt(!0,()=>h(o[0])(m)))f(g)};return f(t),p}case"to_entries/0":{if(!Z(t))throw new O(`${L(t)} has no keys`);return[Object.entries(t).map(([p,f])=>({key:p,value:f}))]}case"from_entries/0":{let p={};for(let f of c(t)){if(!Z(f))throw new O("from_entries: bad entry");let m=f.key??f.k??f.name??f.Name??f.Key??f.K;p[typeof m=="string"?m:ue(m??null)]="value"in f?f.value:"v"in f?f.v:f.Value??null}return[p]}case"with_entries/1":{if(!Z(t))throw new O(`${L(t)} has no keys`);let p=Object.entries(t).flatMap(([f,m])=>h(o[0])({key:f,value:m}));return this.call({t:"call",name:"from_entries",args:[]},p,n)}case"paths/0":return this.paths({t:"recurse"},t,n).filter(p=>p.length);case"getpath/1":return[this.opt(!1,()=>[this.getpath(t,l(0))])[0]];case"setpath/2":return[this.setpath(t,l(0),l(1))];case"del/1":return[this.delpaths(t,this.paths(o[0],t,n))];case"to_array/0":return[Array.isArray(t)?t:[t]];case"join/1":{let p=u(l(0));return[c(t).map(f=>f===null?"":typeof f=="string"?f:typeof f=="number"||typeof f=="boolean"?String(f):(()=>{throw new O(`Cannot join with ${L(f)}`)})()).join(p)]}case"split/1":return[u(t).split(u(l(0)))];case"ascii_downcase/0":return[u(t).replace(/[A-Z]/g,p=>p.toLowerCase())];case"ascii_upcase/0":return[u(t).replace(/[a-z]/g,p=>p.toUpperCase())];case"ltrimstr/1":{let p=l(0);return[typeof t=="string"&&typeof p=="string"&&t.startsWith(p)?t.slice(p.length):t]}case"rtrimstr/1":{let p=l(0);return[typeof t=="string"&&typeof p=="string"&&t.endsWith(p)&&p?t.slice(0,-p.length):t]}case"trim/0":return[u(t).trim()];case"startswith/1":return[u(t).startsWith(u(l(0)))];case"endswith/1":return[u(t).endsWith(u(l(0)))];case"test/1":case"test/2":{let p=o.length>1?u(l(1)):"";if(/[^gix]/.test(p))throw new J("regex flags");return[new RegExp(u(l(0)),p.replace("g","").replace("x","")).test(u(t))]}case"ascii/0":return[String.fromCharCode(t)];case"explode/0":return[[...u(t)].map(p=>p.codePointAt(0))];case"implode/0":return[String.fromCodePoint(...c(t))];case"tojson/0":return[ue(t)];case"fromjson/0":try{return[JSON.parse(u(t))]}catch{throw new O(`${t} cannot be parsed as JSON`)}case"indices/1":case"index/1":case"rindex/1":{let p=l(0),f=[];if(typeof t=="string"&&typeof p=="string"&&p)for(let m=t.indexOf(p);m>=0;m=t.indexOf(p,m+1))f.push(m);else if(Array.isArray(t)){let m=Array.isArray(p)?p:[p];for(let g=0;g+m.length<=t.length;g++)m.every((_,b)=>Q(t[g+b],_)===0)&&f.push(g)}else{if(t===null)return[null];throw new O("Cannot determine indices")}return e.name==="indices"?[f]:(f=e.name==="index"?f.slice(0,1):f.slice(-1),[f.length?f[0]:null])}case"objects/0":return Z(t)?[t]:[];case"arrays/0":return Array.isArray(t)?[t]:[];case"strings/0":return typeof t=="string"?[t]:[];case"numbers/0":return typeof t=="number"?[t]:[];case"booleans/0":return typeof t=="boolean"?[t]:[];case"nulls/0":return t===null?[t]:[];case"iterables/0":return Array.isArray(t)||Z(t)?[t]:[];case"scalars/0":return!Array.isArray(t)&&!Z(t)?[t]:[];case"walk/1":{let p=f=>{let m=Array.isArray(f)?f.map(p):Z(f)?Object.fromEntries(Object.entries(f).map(([_,b])=>[_,p(b)])):f,g=h(o[0])(m);return g.length?g[0]:null};return[p(t)]}case"tostream/0":case"input/0":case"inputs/0":case"now/0":case"env/0":case"input_filename/0":case"debug/0":case"stderr/0":case"halt/0":case"halt_error/0":case"halt_error/1":throw new J(e.name)}throw new J(`function ${d}`)}};function Zn(s,e,t={}){let n=Dr(s);if(!n)return;let r={vars:new Map(Object.entries(t).map(([a,o])=>[`$${a}`,o])),funcs:new Map};r.vars.set("$__loc__",{file:"<stdin>",line:1});try{return{outputs:new Gn().ev(n,e,r)}}catch(a){if(a instanceof O)return{error:a.message};if(a instanceof J)return;throw a}}var X=class s{constructor(e=""){this.name=e}name;kind="unknown";fields=new Map;elem;thresholds=[];strings=[];minLength=0;optional=!1;avoid=[];deleted=!1;obj(){return this.kind==="unknown"&&(this.kind="object"),this}field(e){this.obj();let t=this.fields.get(e);return t||(t=new s(e),this.fields.set(e,t)),t}arr(){return this.kind==="unknown"&&(this.kind="array"),this.elem??=new s(Vr(this.name)),this.elem}set(e){this.kind==="unknown"&&(this.kind=e)}};function Vr(s){return s.replace(/ies$/,"y").replace(/s$/,"")}var Yn=class{vars=new Map;defs=new Map;run(e,t){switch(e.t){case"id":return t;case"recurse":return new X;case"field":return this.run(e.base,t).field(e.name);case"index":{let n=this.run(e.base,t);if(e.idx.t==="lit"&&typeof e.idx.v=="number"){let r=n.arr();return n.minLength=Math.max(n.minLength,e.idx.v>=0?e.idx.v+1:-e.idx.v),r}return e.idx.t==="str"&&e.idx.parts.length===1&&typeof e.idx.parts[0]=="string"?n.field(e.idx.parts[0]):new X}case"slice":{let n=this.run(e.base,t);n.arr();let r=a=>a?.t==="lit"&&typeof a.v=="number"?Math.abs(a.v):0;return n.minLength=Math.max(n.minLength,r(e.to)+1,r(e.from)+2),n}case"str":for(let n of e.parts)typeof n!="string"&&this.run(n,t);return new X;case"def":return e.params.length||this.defs.set(e.name,e.body),this.run(e.rest,t);case"iter":{let n=this.run(e.base,t);return n.kind==="object"?n.fields.values().next().value??new X:n.arr()}case"try":return this.run(e.body,t);case"pipe":return this.run(e.r,this.run(e.l,t));case"comma":return this.run(e.l,t),this.run(e.r,t);case"alt":{let n=this.run(e.l,t);return n!==t&&n.name&&(n.optional=!0),e.r.t==="lit"&&n.avoid.push(e.r.v),this.run(e.r,t)}case"neg":return this.run(e.e,t).set("number"),new X;case"var":return this.vars.get(e.name)??new X;case"as":return this.vars.set(e.v,this.run(e.src,t)),this.run(e.body,t);case"bin":{let n=this.run(e.l,t),r=this.run(e.r,t),a=o=>o.t==="lit"?o.v:o.t==="str"&&o.parts.length===1&&typeof o.parts[0]=="string"?o.parts[0]:void 0;for(let[o,l]of[[n,a(e.r)],[r,a(e.l)]])typeof l=="number"&&(o.set("number"),o.thresholds.push(l)),typeof l=="string"&&(o.set("string"),o.strings.push(l)),typeof l=="boolean"&&o.set("boolean");return["-","*","/","%"].includes(e.op)&&(n.set("number"),r.set("number")),e.op==="+"&&(n.kind==="number"||r.kind==="number")&&(n.set("number"),r.set("number")),(e.op==="and"||e.op==="or")&&(n.set("boolean"),r.set("boolean")),new X}case"assign":{let n=this.run(e.l,t);return this.run(e.r,e.op==="="?t:n),t}case"array":{let n=new X;return e.e&&(n.kind="array",n.elem=this.run(e.e,t)),n}case"object":{let n=new X;n.kind="object";for(let r of e.entries){let a=this.run(r.value,t);r.key.t==="lit"&&typeof r.key.v=="string"&&n.fields.set(r.key.v,a)}return n}case"if":for(let[n,r]of e.branches)this.cond(n,t),this.run(r,t);return e.else?this.run(e.else,t):t;case"reduce":case"foreach":{this.vars.set(e.v,this.run(e.src,t));let n=new X;return e.init.t==="lit"&&typeof e.init.v=="number"&&(n.kind="number"),this.run(e.update,n),new X}case"call":return this.call(e,t);default:return new X}}cond(e,t){let n=this.run(e,t);n!==t&&n.name&&n.set("boolean")}call(e,t){let n=e.args;switch(e.name){case"select":return this.cond(n[0],t),t;case"map":{let r=t.arr(),a=new X;return a.kind="array",a.elem=this.run(n[0],r),a}case"map_values":return this.run(n[0],t.kind==="array"?t.arr():new X),t;case"sort_by":case"group_by":case"unique_by":case"min_by":case"max_by":{let r=t.arr(),a=this.run(n[0],r);return a.kind==="unknown"&&/^(age|count|price|size|score|total|amount|year|id|rank|qty|quantity|level|priority|value)$/.test(a.name)&&a.set("number"),e.name.endsWith("_by")&&(e.name==="min_by"||e.name==="max_by")?r:t}case"sort":case"unique":case"reverse":case"min":case"max":case"first":case"last":case"flatten":if(!n.length){let r=t.arr();return e.name==="min"||e.name==="max"||e.name==="first"||e.name==="last"?r:t}return this.run(n[0],t);case"add":{let r=t.arr();return r.set("number"),r}case"any":case"all":return n.length?this.cond(n[0],t.arr()):t.arr().set("boolean"),new X;case"join":return t.arr().set("string"),new X;case"length":return t.kind==="unknown"&&t.arr(),new X;case"keys":case"keys_unsorted":case"to_entries":case"with_entries":case"has":return t.obj(),new X;case"test":case"startswith":case"endswith":case"ltrimstr":case"rtrimstr":case"ascii_downcase":case"ascii_upcase":case"split":case"tonumber":return t.set("string"),e.name==="tonumber"&&t.strings.push("42"),new X;case"del":return this.run(n[0],t).deleted=!0,t;case"not":return new X;case"tostring":return n.length||t.set("number"),new X;default:{let r=n.length?void 0:this.defs.get(e.name);if(r)return this.run(r,t);for(let a of n)this.run(a,t);return new X}}}},Ve={name:["alice","bob","carol"],user:["alice","bob","carol"],author:["alice","bob","carol"],email:["alice@example.com","bob@example.com","carol@example.com"],city:["Tokyo","Osaka","Kyoto"],title:["Intro","Guide","Notes"],status:["active","inactive","active"],type:["book","pen","book"],id:["a1","b2","c3"],tag:["sale","new","sale"],url:["https://example.com/a","https://example.com/b","https://example.com/c"],version:["1.0.0","1.2.0","2.0.0"],date:["2026-01-15","2026-03-02","2026-07-21"],key:["host","port","user"]},nn={age:[30,25,41],price:[80,150,120],count:[3,7,1],id:[1,2,3],score:[72,95,88],size:[120,2048,512],total:[10,30,20],year:[2024,2025,2026],timeout:[30,60,10],port:[8080,3e3,5432]},Go=/^(ok|enabled|active|done|valid|deleted|published|visible|admin|is_\w+|has_\w+)$/;function rn(s,e,t=0,n=!1){for(let r=0;r<3&&s.avoid.length;r++){let a=Ur(s,e+r,t,n);if(!s.avoid.some(o=>Q(o,a)===0))return a}return Ur(s,e,t,n)}function Ur(s,e,t,n){switch(s.kind){case"object":{if(!s.fields.size)return{name:Ve.name[e%3],age:nn.age[e%3]};let r=Object.fromEntries([...s.fields].filter(([,a])=>!(n&&a.optional)).map(([a,o])=>[a,rn(o,e,t+1,n)]));return[...s.fields.values()].every(a=>a.deleted)?{name:Ve.name[e%3],...r}:r}case"array":{let r=Math.min(Math.max(t>1?2:3,s.minLength),8);return Array.from({length:r},(a,o)=>rn(s.elem??new X,o,t+1,n))}case"number":{if(s.thresholds.length){let r=s.thresholds[0];return(r===0?[-1,3,5]:[Math.round(r*.5),Math.round(r*1.5),Math.round(r*1.2)])[e%3]}return(nn[s.name]??[10,25,7])[e%3]}case"boolean":return[!0,!1,!0][e%3];case"string":return s.strings.length?e%2===0?s.strings[0]:Ve[s.name]?.[e%3]??`other${e}`:(Ve[s.name]??Ve[Vr(s.name)]??[`${s.name||"value"}1`,`${s.name||"value"}2`,`${s.name||"value"}3`])[e%3];case"unknown":return nn[s.name]?nn[s.name][e%3]:Go.test(s.name)?[!0,!1,!0][e%3]:Ve[s.name]?Ve[s.name][e%3]:t===0?{name:"alice",age:30}:`${s.name||"value"}${e+1}`}}function Xn(s,e={}){let t=Dr(s);if(!t)return;let n=c=>{let u=Zn(s,c,e.vars);if(!u)return;if("error"in u)return{input:c,outputs:[],values:[],error:u.error};let h=u.outputs.map(d=>e.raw&&typeof d=="string"?d:ue(d));return{input:c,outputs:h.length>5?[...h.slice(0,4),"\u2026"]:h,values:u.outputs.slice(0,5)}};if(e.nullInput){let c=n(null);return c&&[c]}let r=new X;try{new Yn().run(t,r)}catch{return}let a=n(rn(r,0));if(!a)return;let o=rn(r,0,0,!0),l=ue(o)!==ue(a.input)?n(o):void 0;return l&&!l.error?[a,l]:[a]}function Jr(s,e){let t;try{t=new RegExp(s.source,`${s.flags.replace(/[gd]/g,"")}gd`)}catch{return[]}let n=[];for(let r=t.exec(e),a=0;r&&a<50;r=t.exec(e),a++)(r.indices??[]).forEach((l,c)=>{l&&(c===0||l[1]>l[0])&&n.push({start:l[0],end:l[1],group:c})}),r[0]===""&&t.lastIndex++;return n}function Yo(s,e,t){let n;try{n=new RegExp(s.source,s.flags.replace(/[gd]/g,""))}catch{return[]}let r=[];return e.forEach((a,o)=>{let l=n.exec(a);if(!l||l.length<2||r.length>=4)return;let c=l.slice(1).map((u,h)=>`\\${h+1}=${u===void 0?t==="ja"?"\uFF08\u306A\u3057\uFF09":"(none)":JSON.stringify(u)}`);r.push(`${t==="ja"?`${o+1}\u884C\u76EE`:`line ${o+1}`}: ${JSON.stringify(l[0])} ${c.join(" ")}`)}),r}function Br(s,e,t){let n=(o,l)=>t==="ja"?o:l,r=n("\uFF08\u51FA\u529B\u306A\u3057\uFF09","(no output)"),a=(o,l=n("\u51FA\u529B","Output"))=>({sections:[{label:l,lines:o??[n("\uFF08\u3053\u306E\u5165\u529B\u3067\u306F\u5B9F\u884C\u3067\u304D\u307E\u305B\u3093\uFF09","(cannot run on this input)")],empty:r}]});switch(s.kind){case"regex":{let o=e.map(d=>Jr(s.regex,d)),l=e.filter((d,p)=>o[p].some(f=>f.group===0)),c=e.filter((d,p)=>!o[p].some(f=>f.group===0)),u=Yo(s.regex,e,t),h=s.mode==="inverted"?[{label:n("\u8868\u793A\u3055\u308C\u308B\u884C\uFF08\u4E00\u81F4\u3057\u306A\u3044\u884C\uFF09","Printed (lines that do not match)"),lines:c,empty:n("\uFF08\u306A\u3057\uFF09","(none)")}]:[{label:s.mode==="values"?n("\u4E00\u81F4\u3059\u308B\u5024","Matches"):n("\u4E00\u81F4\u3059\u308B\u884C","Matching lines"),lines:l,empty:n("\uFF08\u306A\u3057\uFF09","(none)")}];return u.length&&h.push({label:n("\u30B0\u30EB\u30FC\u30D7\u306B\u5165\u308B\u6587\u5B57\u5217","What the groups capture"),lines:u}),{sections:h,marks:o}}case"glob":{let o=e.filter(l=>Ae(s.pattern,l,s.mode));return{sections:[{label:n("\u4E00\u81F4\u3059\u308B\u540D\u524D","Matching names"),lines:o,empty:n("\uFF08\u306A\u3057\uFF09","(none)")}],marks:e.map(l=>Ae(s.pattern,l,s.mode)?[{start:0,end:l.length,group:0}]:[])}}case"sed":{let o=a(xt(s.script,e,{quiet:s.quiet,extended:s.extended}));return s.highlight&&(o.marks=e.map(l=>Jr(s.highlight,l))),o}case"awk":return a(_t(s.program,e,{fs:s.fs,vars:s.vars}));case"perl":return a(rt(s.code,s.opts,e));case"filter":{let o=je[s.cmd];return a(o?o(s.words,e):void 0)}case"jq":{let o;try{o=JSON.parse(e.join(`
68
- `))}catch(c){return{sections:[{label:n("\u30A8\u30E9\u30FC","Error"),lines:[n("\u5165\u529B\u304C JSON \u3068\u3057\u3066\u8AAD\u3081\u307E\u305B\u3093","The input is not valid JSON")+`: ${c.message}`]}]}}let l=Zn(s.filter,o,s.vars);return l?"error"in l?{sections:[{label:n("\u30A8\u30E9\u30FC","Error"),lines:[l.error]}]}:a(l.outputs.map(c=>s.raw&&typeof c=="string"?c:ue(c))):a(void 0)}case"pipeline":{let o=en(s.stages,!0,e);return o?{sections:o.steps.filter((l,c)=>l.stage.cmd!=="cat"||c===o.steps.length-1).map((l,c,u)=>({label:c===u.length-1?n(`\u51FA\u529B\uFF08\`${l.stage.text}\` \u306E\u5F8C\uFF09`,`Output (after \`${l.stage.text}\`)`):n(`\`${l.stage.text}\` \u306E\u5F8C`,`After \`${l.stage.text}\``),lines:l.output,empty:n("\uFF08\u306A\u3057\uFF09","(nothing)")}))}:a(void 0)}case"xargs":return a(kt(s.words,e.join(`
61
+ `;let a=$t(s,r).map(vt);return{input:r,commands:a}}catch(e){if(e instanceof A)return;throw e}}function Yn(s,e,t,n,r=!1){if(t===void 0&&n&&"var"in n){let f=n.var;return e==="-z"?[{vars:{[f]:""},result:!0},{vars:{[f]:"abc"},result:!1}]:e==="-n"?[{vars:{[f]:"abc"},result:!0},{vars:{[f]:""},result:!1}]:void 0}if(!t||!n)return;let a=[t,n].filter(f=>"var"in f);if(a.length!==1)return;let o=a[0].var,l="lit"in t?t:n,c="lit"in l?l.lit:"",u="var"in t,h={"-eq":(f,m)=>f===m,"-ne":(f,m)=>f!==m,"-lt":(f,m)=>f<m,"-le":(f,m)=>f<=m,"-gt":(f,m)=>f>m,"-ge":(f,m)=>f>=m},p=s==="(("?{"==":"-eq","!=":"-ne","<":"-lt","<=":"-le",">":"-gt",">=":"-ge"}[e]:h[e]?e:void 0;if(p){if(!/^-?\d+$/.test(c))return;let f=Number(c),m=h[p],g=[f,f+1,f-1,f+10,f-10],_=y=>u?m(y,f):m(f,y),b=g.find(_),w=g.find(y=>!_(y));return b===void 0||w===void 0?void 0:[{vars:{[o]:String(b)},result:!0},{vars:{[o]:String(w)},result:!1}]}if(s!=="(("&&(e==="="||e==="=="||e==="!=")){let f=e==="!=";if(s==="[["&&u&&!r&&/[*?[]/.test(c)){let g=yt(c,"value");if(!g?.nonMatching.length)return;let _=g.matching[0],b=g.nonMatching.find(w=>!Ae(c,w,"value"));return[{vars:{[o]:f?b:_},result:!0},{vars:{[o]:f?_:b},result:!1}]}let m=c===""?"abc":c+"x";return[{vars:{[o]:f?m:c},result:!0},{vars:{[o]:f?c:m},result:!1}]}}var Gn=/[ \t\n]/;function Pr(s,e,t){let n=[];for(let g=0;g<s.length;g++)if(!t.raw&&s[g]==="\\"&&g+1<s.length)n.push({c:s[++g],escaped:!0});else{if(!t.raw&&s[g]==="\\")continue;n.push({c:s[g],escaped:!1})}let r=t.ifs,a=g=>!g.escaped&&r.includes(g.c),o=g=>a(g)&&Gn.test(g.c),l=0,c=n.length;for(;l<c&&o(n[l]);)l++;for(;c>l&&o(n[c-1]);)c--;let u=n.slice(l,c),h=g=>g.map(_=>_.c).join(""),d=[],p=[],f=0;if(r==="")d.push(h(u)),p.push(0);else for(;f<u.length;){p.push(f);let g=f;for(;g<u.length&&!a(u[g]);)g++;d.push(h(u.slice(f,g)));let _=g;for(;_<u.length&&o(u[_]);)_++;if(_<u.length&&a(u[_])&&!o(u[_]))for(_++;_<u.length&&o(u[_]);)_++;_>=u.length&&g<u.length&&a(u[g])&&o(u[g]),f=_}if(t.array)return{vars:[],array:[t.array,d]};let m=[];return e.forEach((g,_)=>{if(_<e.length-1)m.push([g,d[_]??""]);else if(_>=d.length)m.push([g,""]);else{let b=h(u.slice(p[_]));_===d.length-1&&b.length&&r.includes(b[b.length-1])&&!Gn.test(b[b.length-1])&&(b=b.slice(0,-1)),m.push([g,b])}}),{vars:m}}function jr(s,e,t){let n=["alice","30","tokyo","admin","extra"];if(e==="")return" hello world ";let r=/^[ \t\n]*$/.test(e)?" ":[...e].find(o=>!Gn.test(o)),a=t?3:Math.min(s+1,5);return n.slice(0,a).join(r)}var Do={flags:"ivcnowxEFPGsqHhz",values:"em",long:{"ignore-case":"i","invert-match":"v",count:"c","line-number":"n","only-matching":"o","word-regexp":"w","line-regexp":"x","extended-regexp":"E","fixed-strings":"F","perl-regexp":"P","basic-regexp":"G","no-messages":"s",quiet:"q",silent:"q",regexp:"e","max-count":"m","no-filename":"h","with-filename":"H"}};function Zn(s){let e=te(s,Do),t=o=>e.opts.some(([l])=>l===o);if(t("z")||t("H"))throw new A("grep option");let n=e.opts.filter(([o])=>o==="e").map(([,o])=>o);if(!n.length){let o=e.operands.shift();if(o===void 0)throw new A("pattern");n.push(o)}let r=t("P")?"pcre":t("E")?"ere":"bre";return{res:n.flatMap(o=>o.split(`
62
+ `)).map(o=>{let l=t("F")?Ut(o,t("i")):ie(o,r,{ignoreCase:t("i")});if(!l)throw new A("regex");return zt(l,t("x"),t("w"))}),p:e}}function qr(s,e){let{res:t,p:n}=Zn(s),r=u=>n.opts.some(([h])=>h===u),a=n.opts.find(([u])=>u==="m")?.[1],o=a!==void 0?Number(a):1/0,l=[],c=0;for(let[u,h]of e.entries()){if(c>=o)break;if(t.some(f=>new RegExp(f.source,f.flags).test(h))===r("v")||(c++,r("q")||r("c")))continue;let p=r("n")?`${u+1}:`:"";if(r("o")&&!r("v"))for(let f of t)for(let m of h.matchAll(new RegExp(f.source,f.flags+"g")))m[0]&&l.push(p+m[0]);else l.push(p+h)}return r("q")?[]:r("c")?[String(c)]:l}function Uo(s){let{res:e,p:t}=Zn(s),n=be(e[0],3);if(!n)return;let r=n.matching.filter(l=>!/^abc |\sxyz$/.test(l)).concat(n.matching.filter(l=>/^abc |\sxyz$/.test(l))),a=n.nonMatching.length?n.nonMatching:["other line"],o=[a[0],r[0],r[1]??r[0],a[1]??a[0],r[2]??r[0]];return[...new Set(o)]}function Dr(s){let e=[],t=!1,n=!1,r=[];for(let a=0;a<s.length;a++){let o=s[a];if(o===void 0)throw new A("non-literal");if(o==="-e"||o==="--expression"){let l=s[++a];if(l===void 0)throw new A("-e");e.push(l);continue}if(o.startsWith("--expression=")){e.push(o.slice(13));continue}if(o==="-n"||o==="--quiet"||o==="--silent"){t=!0;continue}if(o==="-E"||o==="-r"||o==="--regexp-extended"){n=!0;continue}if(/^-[nErse]+$/.test(o)){if(o.includes("n")&&(t=!0),/[Er]/.test(o)&&(n=!0),o.endsWith("e")){let l=s[++a];if(l===void 0)throw new A("-e");e.push(l)}continue}if(!(/^-i/.test(o)||o==="-s"||o==="-u")){if(o.startsWith("-"))throw new A(`sed ${o}`);r.push(o)}}if(!e.length){let a=r.shift();if(a===void 0)throw new A("script");e.push(a)}return{script:e.join(`
63
+ `),quiet:t,extended:n}}function Ur(s){let e,t={},n=0;for(;n<s.length;n++){let a=s[n];if(a===void 0)throw new A("non-literal");if(a==="-F"){e=s[++n];continue}if(/^-F./.test(a)){e=a.slice(2);continue}if(a==="-v"||/^-v./.test(a)){let o=a==="-v"?s[++n]:a.slice(2),l=o?.indexOf("=")??-1;if(!o||l<1)throw new A("-v");t[o.slice(0,l)]=o.slice(l+1);continue}if(a==="--"){n++;break}if(a.startsWith("-"))throw new A(`awk ${a}`);break}let r=s[n];if(r===void 0)throw new A("program");return e!==void 0&&(e=e==="t"?" ":e.replace(/\\t/g," ")),{program:r,fs:e,vars:t}}function zo(s,e){let t=te(s,{flags:"lwcmL",values:"",long:{lines:"l",words:"w",bytes:"c",chars:"m"}});if(t.operands.length)throw new A("wc files");let n=e.map(l=>l+`
64
+ `).join(""),r={l:e.length,w:n.split(/\s+/).filter(Boolean).length,c:Yt(n),m:[...n].length},a=t.opts.map(([l])=>l);if(a.length||(a=["l","w","c"]),a.includes("L"))throw new A("-L");let o=["l","w","m","c"].filter(l=>a.includes(l));return o.length===1?[String(r[o[0]])]:[o.map(l=>String(r[l]).padStart(7)).join(" ")]}function Wo(s){let e=s.words;switch(s.cmd){case"grep":case"egrep":case"fgrep":{let n=s.cmd==="egrep"?["-E",...e]:s.cmd==="fgrep"?["-F",...e]:e;return Zn(n),r=>qr(n,r)}case"sed":{let n=Dr(e);return r=>{let a=wt(n.script,r,{quiet:n.quiet,extended:n.extended});if(!a)throw new A("sed");return a}}case"awk":case"gawk":case"mawk":{let n=Ur(e);return r=>{let a=bt(n.program,r,{fs:n.fs,vars:n.vars});if(!a)throw new A("awk");return a}}case"perl":{let n=xt(e);return!n||!n.opts.loop?void 0:r=>{let a=rt(n.code,n.opts,r);if(!a)throw new A("perl");return a}}case"cat":case"tee":return s.cmd==="cat"&&e.some(n=>n!=="-"&&n!==void 0&&!n.startsWith("-"))?void 0:n=>n;case"tac":return n=>[...n].reverse();case"rev":return n=>n.map(r=>[...r].reverse().join(""));case"wc":return n=>zo(e,n);case"xargs":return n=>$t(e,n.map(r=>r+`
65
+ `).join("")).map(vt)}let t=je[s.cmd];return t&&(n=>t(e,n))}function Vo(s){let e=s.words;if(e.some(n=>n===void 0))return;let t=e;switch(s.cmd){case"echo":return t[0]?.startsWith("-")?void 0:[t.join(" ")];case"printf":{if(!t.length||t[0].startsWith("-"))return;let r=Qt(t[0],t.slice(1)).split(`
66
+ `);return r[r.length-1]===""&&r.pop(),r}case"seq":return Bn(t)}}function Jo(s){let e=s.words;switch(s.cmd){case"grep":case"egrep":case"fgrep":return Uo(s.cmd==="egrep"?["-E",...e]:s.cmd==="fgrep"?["-F",...e]:e);case"sed":{let t=Dr(e);return Xt(t.script,{quiet:t.quiet,extended:t.extended})?.input}case"awk":case"gawk":case"mawk":{let t=Ur(e);return Bt(t.program,{fs:t.fs,vars:t.vars})?.input}case"perl":{let t=xt(e);return t?Gt(t.code,t.opts)?.input:void 0}}return Hn(s.cmd,e)??["banana","apple","cherry","apple"]}function zr(s){let e=s.words,n={grep:/^-[efmABCd]$/,egrep:/^-[efmABCd]$/,fgrep:/^-[efmABCd]$/,sed:/^-[ef]$/,awk:/^-[Ffv]$/,gawk:/^-[Ffv]$/,mawk:/^-[Ffv]$/,perl:/^-\w*[eE]$/,sort:/^-[tkoS]$/,cut:/^-[dfcb]$/,head:/^-[nc]$/,tail:/^-[nc]$/,uniq:/^-[fsw]$/}[s.cmd],r=e.filter((o,l)=>(o===void 0||!o.startsWith("-"))&&!(n&&n.test(e[l-1]??""))),a=e.some(o=>/^-[ef]$/.test(o??"")||s.cmd==="perl"&&/^-\w*[eE]$/.test(o??""));switch(s.cmd){case"grep":case"egrep":case"fgrep":case"sed":case"awk":case"gawk":case"mawk":case"perl":return r.length>(a?0:1);case"tr":case"echo":case"printf":case"seq":case"xargs":return!1;default:return r.length>0}}function tn(s,e,t){try{if(s.length<2)return;let n,r=s,a=e?void 0:Vo(s[0]),o=s[0],l=o.cmd==="cat"&&o.words.some(h=>h===void 0||h!=="-"&&!h.startsWith("-")),c=[];if(a)c.push({stage:o,output:a}),r=s.slice(1);else{let h=l?s[1]:o;if(n=t??Jo(h),!n)return;if(!t&&s.some(d=>d.cmd==="uniq"||d.cmd==="sort"&&d.words.some(p=>/^-[a-zA-Z]*u/.test(p??"")))){let d=h.cmd.endsWith("grep")?qr(h.words,n):n;d.length&&(n=[...n,d[0],d[d.length-1],d[0]])}l&&(c.push({stage:o,output:n}),r=s.slice(1))}let u=a??n;for(let[h,d]of r.entries()){if(d.cmd==="xargs"&&h!==r.length-1)return;let p=Wo(d);if(!p)return;u=p(u),c.push({stage:d,output:u})}return{input:a?void 0:n,steps:c}}catch(n){if(n instanceof A)return;throw n}}var Kn={keys:["\u30AD\u30FC\uFF08\u914D\u5217\u306A\u3089\u30A4\u30F3\u30C7\u30C3\u30AF\u30B9\uFF09\u306E\u4E00\u89A7\u3092\u5143\u306E\u9806\u5E8F\u3067\u8FD4\u3059\uFF08jq \u3068\u9055\u3044\u30BD\u30FC\u30C8\u3057\u306A\u3044\uFF09","the keys (or indices) in their original order (unlike jq, not sorted)"],env:["\u74B0\u5883\u5909\u6570\u306E\u5024\u3092 YAML \u3068\u3057\u3066\u8AAD\u3093\u3060\u3082\u306E\uFF08`env(HOME)`\uFF09","the value of an environment variable, parsed as YAML (`env(HOME)`)"],strenv:["\u74B0\u5883\u5909\u6570\u306E\u5024\u3092\u6587\u5B57\u5217\u3068\u3057\u3066\u8FD4\u3059\uFF08`strenv(HOME)`\uFF09","the value of an environment variable as a string (`strenv(HOME)`)"],envsubst:["\u6587\u5B57\u5217\u306E\u4E2D\u306E `${VAR}` \u3092\u74B0\u5883\u5909\u6570\u306E\u5024\u306B\u7F6E\u304D\u63DB\u3048\u308B","replace `${VAR}` in a string with environment variables"],load:["YAML \u30D5\u30A1\u30A4\u30EB\u3092\u8AAD\u307F\u8FBC\u3080","load a YAML file"],load_str:["\u30D5\u30A1\u30A4\u30EB\u306E\u4E2D\u8EAB\u3092\u6587\u5B57\u5217\u3068\u3057\u3066\u8AAD\u307F\u8FBC\u3080","load a file as a string"],load_props:["properties \u30D5\u30A1\u30A4\u30EB\u3092\u8AAD\u307F\u8FBC\u3080","load a properties file"],load_xml:["XML \u30D5\u30A1\u30A4\u30EB\u3092\u8AAD\u307F\u8FBC\u3080","load an XML file"],load_base64:["Base64 \u306E\u30D5\u30A1\u30A4\u30EB\u3092\u8AAD\u307F\u8FBC\u3080","load a Base64 file"],pick:['\u6307\u5B9A\u3057\u305F\u30AD\u30FC\u3060\u3051\u3092\u6B8B\u3059\uFF08`pick(["a", "b"])`\uFF09','keep only the given keys (`pick(["a", "b"])`)'],omit:['\u6307\u5B9A\u3057\u305F\u30AD\u30FC\u3092\u53D6\u308A\u9664\u304F\uFF08`omit(["a"])`\uFF09','remove the given keys (`omit(["a"])`)'],downcase:["\u5C0F\u6587\u5B57\u306B\u3059\u308B","lowercase"],upcase:["\u5927\u6587\u5B57\u306B\u3059\u308B","uppercase"],to_number:["\u6570\u5024\u306B\u5909\u63DB\u3059\u308B","convert to a number"],to_string:["\u6587\u5B57\u5217\u306B\u5909\u63DB\u3059\u308B","convert to a string"],to_json:["JSON \u306E\u6587\u5B57\u5217\u306B\u3059\u308B","turn into a JSON string"],to_yaml:["YAML \u306E\u6587\u5B57\u5217\u306B\u3059\u308B","turn into a YAML string"],to_xml:["XML \u306E\u6587\u5B57\u5217\u306B\u3059\u308B","turn into an XML string"],to_props:["properties \u5F62\u5F0F\u306E\u6587\u5B57\u5217\u306B\u3059\u308B","turn into a properties string"],to_csv:["CSV \u306E\u6587\u5B57\u5217\u306B\u3059\u308B","turn into a CSV string"],to_tsv:["TSV \u306E\u6587\u5B57\u5217\u306B\u3059\u308B","turn into a TSV string"],from_json:["JSON \u306E\u6587\u5B57\u5217\u3092\u8AAD\u3080","parse a JSON string"],from_yaml:["YAML \u306E\u6587\u5B57\u5217\u3092\u8AAD\u3080","parse a YAML string"],from_xml:["XML \u306E\u6587\u5B57\u5217\u3092\u8AAD\u3080","parse an XML string"],from_props:["properties \u5F62\u5F0F\u306E\u6587\u5B57\u5217\u3092\u8AAD\u3080","parse a properties string"],line_comment:['\u884C\u672B\u306E\u30B3\u30E1\u30F3\u30C8\uFF08`.a line_comment = "\u2026"` \u3067\u8A2D\u5B9A\uFF09','the line comment (set with `.a line_comment = "\u2026"`)'],head_comment:['\u524D\u306E\u884C\u306E\u30B3\u30E1\u30F3\u30C8\uFF08`.a head_comment = "\u2026"` \u3067\u8A2D\u5B9A\uFF09','the comment above (set with `.a head_comment = "\u2026"`)'],foot_comment:['\u5F8C\u308D\u306E\u884C\u306E\u30B3\u30E1\u30F3\u30C8\uFF08`.a foot_comment = "\u2026"` \u3067\u8A2D\u5B9A\uFF09','the comment below (set with `.a foot_comment = "\u2026"`)'],style:['\u66F8\u304D\u65B9\u306E\u30B9\u30BF\u30A4\u30EB\uFF08`double`\u30FB`single`\u30FB`literal`\u30FB`folded`\u30FB`flow` \u306A\u3069\u3002`.a style = "double"` \u3067\u8A2D\u5B9A\uFF09','the style (`double`, `single`, `literal`, `folded`, `flow`\u2026; set with `.a style = "double"`)'],tag:["YAML \u306E\u30BF\u30B0\uFF08`!!str`\u30FB`!!int`\u30FB`!!map` \u306A\u3069\uFF09","the YAML tag (`!!str`, `!!int`, `!!map`\u2026)"],kind:["\u30CE\u30FC\u30C9\u306E\u7A2E\u985E\uFF08`map`\u30FB`seq`\u30FB`scalar`\uFF09","the node kind (`map`, `seq` or `scalar`)"],anchor:['\u30A2\u30F3\u30AB\u30FC\u540D\uFF08`&name`\u3002`.a anchor = "x"` \u3067\u8A2D\u5B9A\uFF09','the anchor name (`&name`; set with `.a anchor = "x"`)'],alias:["\u30A8\u30A4\u30EA\u30A2\u30B9\uFF08`*name`\uFF09","the alias (`*name`)"],explode:["\u30A2\u30F3\u30AB\u30FC\u3068\u30A8\u30A4\u30EA\u30A2\u30B9\u3092\u5C55\u958B\u3057\u305F\u5024\u306B\u3059\u308B\uFF08jq \u306E `explode` \u306F\u6587\u5B57\u5217\u3092\u6587\u5B57\u30B3\u30FC\u30C9\u306E\u914D\u5217\u306B\u3059\u308B\u5225\u306E\u95A2\u6570\uFF09","expand anchors and aliases (jq's `explode`, which turns a string into code points, is a different function)"],parent:["\u89AA\u306E\u30CE\u30FC\u30C9","the parent node"],key:["\u3053\u306E\u5024\u306E\u30AD\u30FC\uFF08\u307E\u305F\u306F\u30A4\u30F3\u30C7\u30C3\u30AF\u30B9\uFF09","the key (or index) of this value"],split_doc:["\u7D50\u679C\u3092\u5225\u3005\u306E YAML \u30C9\u30AD\u30E5\u30E1\u30F3\u30C8\uFF08`---` \u533A\u5207\u308A\uFF09\u306B\u3059\u308B","split the results into separate YAML documents (`---`)"],document_index:["\u4F55\u756A\u76EE\u306E YAML \u30C9\u30AD\u30E5\u30E1\u30F3\u30C8\u304B\uFF080 \u304B\u3089\uFF09","the index of the YAML document (from 0)"],di:["\u4F55\u756A\u76EE\u306E YAML \u30C9\u30AD\u30E5\u30E1\u30F3\u30C8\u304B\uFF08`document_index` \u306E\u77ED\u7E2E\u5F62\uFF09","the document index (short for `document_index`)"],filename:["\u5165\u529B\u30D5\u30A1\u30A4\u30EB\u540D","the input file name"],fi:["\u4F55\u756A\u76EE\u306E\u5165\u529B\u30D5\u30A1\u30A4\u30EB\u304B","the index of the input file"],file_index:["\u4F55\u756A\u76EE\u306E\u5165\u529B\u30D5\u30A1\u30A4\u30EB\u304B","the index of the input file"],eval:["\u6587\u5B57\u5217\u3092 yq \u306E\u5F0F\u3068\u3057\u3066\u8A55\u4FA1\u3059\u308B","evaluate a string as a yq expression"],shuffle:["\u914D\u5217\u3092\u30E9\u30F3\u30C0\u30E0\u306B\u4E26\u3079\u66FF\u3048\u308B","shuffle an array"],pivot:["\u914D\u5217\u306E\u914D\u5217\u3092\u884C\u3068\u5217\u3067\u5165\u308C\u66FF\u3048\u308B","transpose an array of arrays"],with:["`with(\u30D1\u30B9; \u66F4\u65B0)`: \u30D1\u30B9\u306E\u5024\u306B\u5BFE\u3057\u3066\u66F4\u65B0\u51E6\u7406\u3092\u307E\u3068\u3081\u3066\u884C\u3046","`with(path; updates)`: run updates relative to a path"],sort_keys:["\u30AD\u30FC\u3092\u4E26\u3079\u66FF\u3048\u308B\uFF08`sort_keys(..)` \u3067\u5168\u4F53\uFF09","sort the keys (`sort_keys(..)` for everything)"],ireduce:["`\u5F0F as $x ireduce (\u521D\u671F\u5024; \u66F4\u65B0)`: \u7573\u307F\u8FBC\u307F\uFF08jq \u306E `reduce` \u306B\u5F53\u305F\u308B\uFF09","`expr as $x ireduce (init; update)`: a fold (jq's `reduce`)"],select:["\u6761\u4EF6\u304C\u771F\u306E\u5165\u529B\u3060\u3051\u3092\u901A\u3059\uFF08\u507D\u306A\u3089\u4F55\u3082\u51FA\u529B\u3057\u306A\u3044\uFF09","pass the input through only if the condition is true"],collect:["\u7D50\u679C\u3092\u914D\u5217\u306B\u307E\u3068\u3081\u308B","collect the results into an array"],now:["\u73FE\u5728\u306E\u65E5\u6642","the current date and time"],tz:["\u30BF\u30A4\u30E0\u30BE\u30FC\u30F3\u3092\u5909\u3048\u308B","change the time zone"],with_dtf:["\u65E5\u6642\u306E\u66F8\u5F0F\u3092\u6307\u5B9A\u3057\u3066\u51E6\u7406\u3059\u308B","run with a date format"],setpath:["\u30D1\u30B9\u306B\u5024\u3092\u8A2D\u5B9A\u3059\u308B","set the value at a path"],delpaths:["\u8907\u6570\u306E\u30D1\u30B9\u3092\u524A\u9664\u3059\u308B","delete several paths"],min:["\u6700\u5C0F\u5024","the minimum"],max:["\u6700\u5927\u5024","the maximum"],trim:["\u524D\u5F8C\u306E\u7A7A\u767D\u3092\u53D6\u308A\u9664\u304F","trim surrounding whitespace"]},nn=new Set(["abs","add","arrays","ascii_downcase","ascii_upcase","booleans","builtins","combinations","debug","empty","endswith","floor","foreach","fromdate","fromstream","getpath","gsub","halt","halt_error","implode","in","index","indices","infinite","input","input_filename","input_line_number","inputs","inside","isnan","iterables","keys_unsorted","last","limit","log","ltrimstr","max_by","min_by","nan","nulls","numbers","objects","paths","pow","range","reduce","repeat","rindex","rtrimstr","scalars","scan","splits","sqrt","startswith","stderr","strings","todate","tostream","transpose","until","utf8bytelength","values","walk","while"]),Wr=new Set(["alias","anchor","collect","di","document_index","downcase","envsubst","eval","fi","file_index","filename","foot_comment","from_json","from_yaml","head_comment","key","kind","line_comment","load","load_str","omit","parent","pivot","shuffle","sort_keys","split_doc","strenv","style","tag","to_json","to_number","to_string","to_yaml","trim","tz","upcase","with"]);var Bo=new Set(["if","then","elif","else","end","as","def","reduce","foreach","try","catch","label","import","include","and","or","__loc__"]),Ho=["...","?//","|=","+=","-=","*=","/=","%=","//=","==","!=","<=",">=","//","..","|",",","+","-","*","/","%","<",">","=","(",")","[","]","{","}",":",";","?","."],Go={select:["\u6761\u4EF6\u304C\u771F\u306E\u5165\u529B\u3060\u3051\u3092\u901A\u3059\uFF08\u507D\u306A\u3089\u4F55\u3082\u51FA\u529B\u3057\u306A\u3044\uFF09","pass the input through only if the condition is true"],map:["\u914D\u5217\u306E\u5404\u8981\u7D20\u306B\u30D5\u30A3\u30EB\u30BF\u3092\u9069\u7528\u3057\u305F\u914D\u5217\u3092\u4F5C\u308B\uFF08`[.[] | f]` \u3068\u540C\u3058\uFF09","apply the filter to every element of an array (same as `[.[] | f]`)"],map_values:["\u30AA\u30D6\u30B8\u30A7\u30AF\u30C8\u30FB\u914D\u5217\u306E\u5404\u5024\u306B\u30D5\u30A3\u30EB\u30BF\u3092\u9069\u7528\u3059\u308B","apply the filter to every value"],keys:["\u30AD\u30FC\uFF08\u914D\u5217\u306A\u3089\u30A4\u30F3\u30C7\u30C3\u30AF\u30B9\uFF09\u306E\u4E00\u89A7\u3092\u30BD\u30FC\u30C8\u3057\u3066\u8FD4\u3059","the keys (or indices), sorted"],keys_unsorted:["\u30AD\u30FC\u306E\u4E00\u89A7\u3092\u5143\u306E\u9806\u5E8F\u3067\u8FD4\u3059","the keys in their original order"],values:["null \u4EE5\u5916\u306E\u5024\u3060\u3051\u3092\u901A\u3059","pass through values that are not null"],length:["\u9577\u3055\uFF08\u6587\u5B57\u6570\u30FB\u8981\u7D20\u6570\u30FB\u30AD\u30FC\u6570\u3002\u6570\u5024\u306A\u3089\u7D76\u5BFE\u5024\uFF09","the length (characters, elements or keys; absolute value for numbers)"],utf8bytelength:["\u6587\u5B57\u5217\u306E UTF-8 \u3067\u306E\u30D0\u30A4\u30C8\u6570","the UTF-8 byte length of a string"],has:["\u6307\u5B9A\u3057\u305F\u30AD\u30FC\uFF08\u30A4\u30F3\u30C7\u30C3\u30AF\u30B9\uFF09\u304C\u3042\u308B\u304B","whether the key (or index) exists"],in:["\u5165\u529B\u304C\u3001\u5F15\u6570\u306E\u30AA\u30D6\u30B8\u30A7\u30AF\u30C8\u306E\u30AD\u30FC\u3068\u3057\u3066\u5B58\u5728\u3059\u308B\u304B","whether the input is a key of the argument"],contains:["\u5F15\u6570\u306E\u5185\u5BB9\u3092\u542B\u3093\u3067\u3044\u308B\u304B","whether the input contains the argument"],inside:["\u5165\u529B\u304C\u5F15\u6570\u306B\u542B\u307E\u308C\u3066\u3044\u308B\u304B","whether the input is contained in the argument"],to_entries:["\u30AA\u30D6\u30B8\u30A7\u30AF\u30C8\u3092 `{key, value}` \u306E\u914D\u5217\u306B\u5909\u63DB\u3059\u308B","turn an object into an array of `{key, value}`"],from_entries:["`{key, value}` \u306E\u914D\u5217\u3092\u30AA\u30D6\u30B8\u30A7\u30AF\u30C8\u306B\u623B\u3059","turn an array of `{key, value}` back into an object"],with_entries:["\u30AA\u30D6\u30B8\u30A7\u30AF\u30C8\u306E\u5404 `{key, value}` \u306B\u30D5\u30A3\u30EB\u30BF\u3092\u9069\u7528\u3059\u308B\uFF08\u30AD\u30FC\u306E\u5909\u66F4\u306A\u3069\u306B\u4F7F\u3046\uFF09","apply the filter to each `{key, value}` (e.g. to rename keys)"],add:["\u914D\u5217\u306E\u8981\u7D20\u3092\u3059\u3079\u3066\u8DB3\u3057\u5408\u308F\u305B\u308B\uFF08\u6570\u5024\u306F\u5408\u8A08\u3001\u6587\u5B57\u5217\u30FB\u914D\u5217\u306F\u9023\u7D50\uFF09","add up the elements (sum numbers, join strings/arrays)"],any:["\u3069\u308C\u304B1\u3064\u3067\u3082\u771F\u306A\u3089 true","true if any element is true"],all:["\u3059\u3079\u3066\u771F\u306A\u3089 true","true if every element is true"],flatten:["\u5165\u308C\u5B50\u306E\u914D\u5217\u3092\u5E73\u3089\u306B\u3059\u308B","flatten nested arrays"],range:["\u9023\u7D9A\u3057\u305F\u6570\u5024\u3092\u51FA\u529B\u3059\u308B","produce a range of numbers"],floor:["\u5C0F\u6570\u70B9\u4EE5\u4E0B\u3092\u5207\u308A\u6368\u3066\u308B","round down"],sqrt:["\u5E73\u65B9\u6839","square root"],tostring:["\u6587\u5B57\u5217\u306B\u5909\u63DB\u3059\u308B","convert to a string"],tonumber:["\u6570\u5024\u306B\u5909\u63DB\u3059\u308B","convert to a number"],type:['\u5024\u306E\u578B\u540D\uFF08"object"\u3001"array"\u3001"string" \u306A\u3069\uFF09','the type name ("object", "array", "string", \u2026)'],sort:["\u914D\u5217\u3092\u4E26\u3079\u66FF\u3048\u308B","sort an array"],sort_by:["\u6307\u5B9A\u3057\u305F\u5024\u3092\u30AD\u30FC\u306B\u3057\u3066\u914D\u5217\u3092\u4E26\u3079\u66FF\u3048\u308B","sort an array by the given expression"],group_by:["\u6307\u5B9A\u3057\u305F\u5024\u3054\u3068\u306B\u8981\u7D20\u3092\u30B0\u30EB\u30FC\u30D7\uFF08\u914D\u5217\u306E\u914D\u5217\uFF09\u306B\u307E\u3068\u3081\u308B","group elements by the given expression"],unique:["\u91CD\u8907\u3092\u9664\u3044\u3066\u4E26\u3079\u66FF\u3048\u308B","remove duplicates (sorted)"],unique_by:["\u6307\u5B9A\u3057\u305F\u5024\u304C\u91CD\u8907\u3059\u308B\u8981\u7D20\u3092\u9664\u304F","remove elements with a duplicate key"],min:["\u6700\u5C0F\u306E\u8981\u7D20","the smallest element"],max:["\u6700\u5927\u306E\u8981\u7D20","the largest element"],min_by:["\u6307\u5B9A\u3057\u305F\u5024\u304C\u6700\u5C0F\u306E\u8981\u7D20","the element with the smallest key"],max_by:["\u6307\u5B9A\u3057\u305F\u5024\u304C\u6700\u5927\u306E\u8981\u7D20","the element with the largest key"],reverse:["\u914D\u5217\uFF08\u6587\u5B57\u5217\uFF09\u3092\u9006\u9806\u306B\u3059\u308B","reverse an array (or string)"],first:["\u6700\u521D\u306E\u8981\u7D20\uFF08\u5F15\u6570\u304C\u3042\u308C\u3070\u305D\u306E\u6700\u521D\u306E\u51FA\u529B\uFF09","the first element (or first output of the argument)"],last:["\u6700\u5F8C\u306E\u8981\u7D20\uFF08\u5F15\u6570\u304C\u3042\u308C\u3070\u305D\u306E\u6700\u5F8C\u306E\u51FA\u529B\uFF09","the last element (or last output of the argument)"],nth:["n \u756A\u76EE\u306E\u8981\u7D20","the nth element"],limit:["\u6700\u521D\u306E n \u500B\u306E\u51FA\u529B\u3060\u3051\u3092\u53D6\u308B","take only the first n outputs"],until:["\u6761\u4EF6\u304C\u771F\u306B\u306A\u308B\u307E\u3067\u66F4\u65B0\u3092\u7E70\u308A\u8FD4\u3059","repeat the update until the condition holds"],while:["\u6761\u4EF6\u304C\u771F\u306E\u9593\u3001\u66F4\u65B0\u3092\u7E70\u308A\u8FD4\u3057\u3066\u5404\u5024\u3092\u51FA\u529B\u3059\u308B","repeat the update while the condition holds, outputting each value"],repeat:["\u30D5\u30A3\u30EB\u30BF\u3092\u7E70\u308A\u8FD4\u3057\u9069\u7528\u3057\u7D9A\u3051\u308B","apply the filter repeatedly"],recurse:["\u5165\u529B\u3068\u305D\u306E\u5B50\u5B6B\u3092\u518D\u5E30\u7684\u306B\u51FA\u529B\u3059\u308B","output the input and all of its descendants"],walk:["\u3059\u3079\u3066\u306E\u5024\u306B\u4E0B\u304B\u3089\u9806\u306B\u30D5\u30A3\u30EB\u30BF\u3092\u9069\u7528\u3059\u308B","apply the filter to every value, bottom-up"],empty:["\u4F55\u3082\u51FA\u529B\u3057\u306A\u3044","output nothing"],error:["\u30A8\u30E9\u30FC\u3092\u767A\u751F\u3055\u305B\u308B","raise an error"],not:["\u771F\u507D\u3092\u53CD\u8EE2\u3059\u308B","negate a boolean"],paths:["\u3059\u3079\u3066\u306E\u30D1\u30B9\u3092\u914D\u5217\u3067\u51FA\u529B\u3059\u308B","output every path as an array"],leaf_paths:["\u672B\u7AEF\u306E\u5024\u3078\u306E\u30D1\u30B9\u3092\u51FA\u529B\u3059\u308B","output paths to leaf values"],path:["\u5F0F\u304C\u6307\u3059\u30D1\u30B9\u3092\u914D\u5217\u3067\u51FA\u529B\u3059\u308B","output the path the expression refers to"],getpath:["\u30D1\u30B9\u914D\u5217\u3067\u6307\u5B9A\u3057\u305F\u5024\u3092\u53D6\u308A\u51FA\u3059","get the value at a path array"],setpath:["\u30D1\u30B9\u914D\u5217\u3067\u6307\u5B9A\u3057\u305F\u5834\u6240\u306B\u5024\u3092\u8A2D\u5B9A\u3059\u308B","set the value at a path array"],del:["\u6307\u5B9A\u3057\u305F\u5834\u6240\u3092\u524A\u9664\u3059\u308B","delete the given paths"],delpaths:["\u30D1\u30B9\u306E\u4E00\u89A7\u3067\u6307\u5B9A\u3057\u305F\u5834\u6240\u3092\u524A\u9664\u3059\u308B","delete a list of paths"],ascii_downcase:["\u82F1\u5B57\u3092\u5C0F\u6587\u5B57\u306B\u3059\u308B","lowercase ASCII letters"],ascii_upcase:["\u82F1\u5B57\u3092\u5927\u6587\u5B57\u306B\u3059\u308B","uppercase ASCII letters"],ltrimstr:["\u5148\u982D\u306E\u6307\u5B9A\u6587\u5B57\u5217\u3092\u53D6\u308A\u9664\u304F","remove the given prefix"],rtrimstr:["\u672B\u5C3E\u306E\u6307\u5B9A\u6587\u5B57\u5217\u3092\u53D6\u308A\u9664\u304F","remove the given suffix"],trim:["\u524D\u5F8C\u306E\u7A7A\u767D\u3092\u53D6\u308A\u9664\u304F","trim surrounding whitespace"],startswith:["\u6307\u5B9A\u6587\u5B57\u5217\u3067\u59CB\u307E\u308B\u304B","whether the string starts with the argument"],endswith:["\u6307\u5B9A\u6587\u5B57\u5217\u3067\u7D42\u308F\u308B\u304B","whether the string ends with the argument"],split:["\u6587\u5B57\u5217\u3092\u533A\u5207\u308A\u6587\u5B57\u3067\u5206\u5272\u3057\u3066\u914D\u5217\u306B\u3059\u308B","split a string into an array"],join:["\u914D\u5217\u306E\u8981\u7D20\u3092\u533A\u5207\u308A\u6587\u5B57\u3067\u3064\u306A\u3044\u3067\u6587\u5B57\u5217\u306B\u3059\u308B","join array elements into a string"],test:["\u6B63\u898F\u8868\u73FE\u306B\u4E00\u81F4\u3059\u308B\u304B\uFF08true/false\uFF09","whether the string matches the regex"],match:["\u6B63\u898F\u8868\u73FE\u306E\u4E00\u81F4\u60C5\u5831\u3092\u8FD4\u3059","return match information for the regex"],capture:["\u6B63\u898F\u8868\u73FE\u306E\u540D\u524D\u4ED8\u304D\u30B0\u30EB\u30FC\u30D7\u3092\u30AA\u30D6\u30B8\u30A7\u30AF\u30C8\u306B\u3057\u3066\u8FD4\u3059","return named captures as an object"],scan:["\u6B63\u898F\u8868\u73FE\u306B\u4E00\u81F4\u3059\u308B\u90E8\u5206\u3092\u3059\u3079\u3066\u51FA\u529B\u3059\u308B","output every match of the regex"],sub:["\u6B63\u898F\u8868\u73FE\u306B\u6700\u521D\u306B\u4E00\u81F4\u3057\u305F\u90E8\u5206\u3092\u7F6E\u63DB\u3059\u308B","replace the first regex match"],gsub:["\u6B63\u898F\u8868\u73FE\u306B\u4E00\u81F4\u3059\u308B\u90E8\u5206\u3092\u3059\u3079\u3066\u7F6E\u63DB\u3059\u308B","replace every regex match"],splits:["\u6B63\u898F\u8868\u73FE\u3067\u5206\u5272\u3057\u305F\u5404\u90E8\u5206\u3092\u51FA\u529B\u3059\u308B","split by a regex, outputting each part"],ascii:["\u30B3\u30FC\u30C9\u30DD\u30A4\u30F3\u30C8\u3092\u6587\u5B57\u306B\u3059\u308B","code point to character"],explode:["\u6587\u5B57\u5217\u3092\u30B3\u30FC\u30C9\u30DD\u30A4\u30F3\u30C8\u306E\u914D\u5217\u306B\u3059\u308B","string to an array of code points"],implode:["\u30B3\u30FC\u30C9\u30DD\u30A4\u30F3\u30C8\u306E\u914D\u5217\u3092\u6587\u5B57\u5217\u306B\u3059\u308B","array of code points to a string"],tojson:["\u5024\u3092 JSON \u6587\u5B57\u5217\u306B\u3059\u308B","encode the value as a JSON string"],fromjson:["JSON \u6587\u5B57\u5217\u3092\u5024\u306B\u623B\u3059","parse a JSON string"],todate:["UNIX \u6642\u523B\u3092 ISO 8601 \u306E\u65E5\u6642\u6587\u5B57\u5217\u306B\u3059\u308B","UNIX time to an ISO 8601 string"],fromdate:["ISO 8601 \u306E\u65E5\u6642\u6587\u5B57\u5217\u3092 UNIX \u6642\u523B\u306B\u3059\u308B","ISO 8601 string to UNIX time"],now:["\u73FE\u5728\u306E UNIX \u6642\u523B","the current UNIX time"],strftime:["\u65E5\u6642\u3092\u66F8\u5F0F\u306B\u5F93\u3063\u3066\u6587\u5B57\u5217\u306B\u3059\u308B","format a time"],strptime:["\u65E5\u6642\u6587\u5B57\u5217\u3092\u66F8\u5F0F\u306B\u5F93\u3063\u3066\u89E3\u6790\u3059\u308B","parse a time string"],env:["\u74B0\u5883\u5909\u6570\u306E\u30AA\u30D6\u30B8\u30A7\u30AF\u30C8","the environment variables as an object"],input:["\u6B21\u306E\u5165\u529B\u30921\u3064\u8AAD\u3080","read the next input"],inputs:["\u6B8B\u308A\u306E\u5165\u529B\u3092\u3059\u3079\u3066\u51FA\u529B\u3059\u308B","output all remaining inputs"],debug:["\u5024\u3092\u6A19\u6E96\u30A8\u30E9\u30FC\u306B\u8868\u793A\u3057\u3066\u305D\u306E\u307E\u307E\u901A\u3059","print the value to stderr and pass it on"],halt:["\u51E6\u7406\u3092\u7D42\u4E86\u3059\u308B","stop the program"],halt_error:["\u30A8\u30E9\u30FC\u3068\u3057\u3066\u7D42\u4E86\u3059\u308B","stop with an error"],input_filename:["\u5165\u529B\u30D5\u30A1\u30A4\u30EB\u540D","the current input file name"],isempty:["\u30D5\u30A3\u30EB\u30BF\u304C\u4F55\u3082\u51FA\u529B\u3057\u306A\u3044\u304B","whether the filter outputs nothing"],indices:["\u6307\u5B9A\u3057\u305F\u5024\u304C\u73FE\u308C\u308B\u4F4D\u7F6E\u306E\u4E00\u89A7","positions where the value occurs"],index:["\u6307\u5B9A\u3057\u305F\u5024\u304C\u6700\u521D\u306B\u73FE\u308C\u308B\u4F4D\u7F6E","the first position of the value"],rindex:["\u6307\u5B9A\u3057\u305F\u5024\u304C\u6700\u5F8C\u306B\u73FE\u308C\u308B\u4F4D\u7F6E","the last position of the value"],tostream:["\u5024\u3092\u30D1\u30B9\u3068\u5024\u306E\u30B9\u30C8\u30EA\u30FC\u30E0\u306B\u3059\u308B","turn the value into a stream of path/value events"],fromstream:["\u30B9\u30C8\u30EA\u30FC\u30E0\u304B\u3089\u5024\u3092\u7D44\u307F\u7ACB\u3066\u76F4\u3059","rebuild a value from a stream"],objects:["\u30AA\u30D6\u30B8\u30A7\u30AF\u30C8\u3060\u3051\u3092\u901A\u3059","pass through objects only"],arrays:["\u914D\u5217\u3060\u3051\u3092\u901A\u3059","pass through arrays only"],strings:["\u6587\u5B57\u5217\u3060\u3051\u3092\u901A\u3059","pass through strings only"],numbers:["\u6570\u5024\u3060\u3051\u3092\u901A\u3059","pass through numbers only"],booleans:["\u771F\u507D\u5024\u3060\u3051\u3092\u901A\u3059","pass through booleans only"],nulls:["null \u3060\u3051\u3092\u901A\u3059","pass through nulls only"],iterables:["\u914D\u5217\u3068\u30AA\u30D6\u30B8\u30A7\u30AF\u30C8\u3060\u3051\u3092\u901A\u3059","pass through arrays and objects only"],scalars:["\u914D\u5217\u30FB\u30AA\u30D6\u30B8\u30A7\u30AF\u30C8\u4EE5\u5916\u3060\u3051\u3092\u901A\u3059","pass through non-container values only"],IN:["\u5165\u529B\u304C\u3001\u5F15\u6570\u306E\u51FA\u529B\u306E\u3069\u308C\u304B\u3068\u7B49\u3057\u3044\u304B","whether the input equals any output of the argument"],INDEX:["\u6307\u5B9A\u3057\u305F\u30AD\u30FC\u3067\u30AA\u30D6\u30B8\u30A7\u30AF\u30C8\u306B\u7D22\u5F15\u4ED8\u3051\u3059\u308B","build an object indexed by the given key"]},Yo={"@csv":["\u914D\u5217\u3092 CSV \u306E1\u884C\u306B\u3059\u308B","format an array as a CSV row"],"@tsv":["\u914D\u5217\u3092 TSV \u306E1\u884C\u306B\u3059\u308B","format an array as a TSV row"],"@json":["JSON \u6587\u5B57\u5217\u306B\u3059\u308B","format as JSON"],"@text":["\u6587\u5B57\u5217\u306B\u3059\u308B","format as text"],"@html":["HTML \u30A8\u30B9\u30B1\u30FC\u30D7\u3059\u308B","escape for HTML"],"@uri":["URL \u30A8\u30F3\u30B3\u30FC\u30C9\u3059\u308B","percent-encode for URLs"],"@sh":["\u30B7\u30A7\u30EB\u3067\u5B89\u5168\u306B\u4F7F\u3048\u308B\u3088\u3046\u306B\u30AF\u30A9\u30FC\u30C8\u3059\u308B","quote for the shell"],"@base64":["Base64 \u30A8\u30F3\u30B3\u30FC\u30C9\u3059\u308B","encode as Base64"],"@base64d":["Base64 \u30C7\u30B3\u30FC\u30C9\u3059\u308B","decode Base64"]},oe=class extends Error{constructor(t,n){super(n);this.at=t}at};function We(s){let e=[],t=0;for(;t<s.length;){let n=s[t];if(/\s/.test(n)){t++;continue}if(n==="#"){for(;t<s.length&&s[t]!==`
67
+ `;)t++;continue}let r=t;if(n==='"'){t=Xn(s,t),e.push({type:"str",text:s.slice(r,t),start:r,end:t});continue}let a;if(a=/^\d+(\.\d+)?([eE][-+]?\d+)?/.exec(s.slice(t))){t+=a[0].length,e.push({type:"num",text:a[0],start:r,end:t});continue}if(a=/^\$(__loc__|[A-Za-z_][A-Za-z0-9_]*(::[A-Za-z_][A-Za-z0-9_]*)*)/.exec(s.slice(t))){t+=a[0].length,e.push({type:"var",text:a[0],start:r,end:t});continue}if(a=/^@[A-Za-z0-9_]+/.exec(s.slice(t))){t+=a[0].length,e.push({type:"fmt",text:a[0],start:r,end:t});continue}if(a=/^\.([A-Za-z_][A-Za-z0-9_]*)/.exec(s.slice(t))){t+=a[0].length,e.push({type:"field",text:a[0],start:r,end:t});continue}if(n==="."&&s[t+1]==='"'){t=Xn(s,t+1),e.push({type:"field",text:s.slice(r,t),start:r,end:t});continue}if(a=/^[A-Za-z_][A-Za-z0-9_]*(::[A-Za-z_][A-Za-z0-9_]*)*/.exec(s.slice(t))){t+=a[0].length,e.push({type:Bo.has(a[0])?"kw":"ident",text:a[0],start:r,end:t});continue}let o=Ho.find(l=>s.startsWith(l,t));if(!o)throw new oe(t,`unexpected "${n}"`);t+=o.length,e.push({type:"op",text:o,start:r,end:t})}return e}function Xn(s,e){for(e++;e<s.length&&s[e]!=='"';){if(s[e]==="\\"&&s[e+1]==="("){let t=1;for(e+=2;e<s.length&&t>0;)s[e]==='"'?e=Xn(s,e)-1:s[e]==="("?t++:s[e]===")"&&t--,e++;continue}e+=s[e]==="\\"?2:1}if(e>=s.length)throw new oe(s.length,"unterminated string");return e+1}var Zo=new Set(["line_comment","head_comment","foot_comment","style","tag","anchor","alias","key"]),Qn=class{constructor(e,t,n,r="jq"){this.src=e;this.toks=t;this.dialect=r;this.s=O(n)}src;toks;dialect;p=0;s;get done(){return this.p>=this.toks.length}peek(e){let t=this.toks[this.p];return e===void 0||t?.text===e?t:void 0}next(){let e=this.toks[this.p++];if(!e)throw new oe(this.src.length,"unexpected end");return e}expect(e){let t=this.toks[this.p];if(t?.text!==e)throw new oe(t?.start??this.src.length,`expected "${e}"`);return this.p++,t}node(e,t,n,r,a=[],o){return{start:e,end:t,kind:n,explanation:r,children:a,short:o}}opNode(e,t){return this.node(e.start,e.end,"operator",`\`${e.text}\`: ${t}`)}pipe(){let{s:e}=this;if(this.peek("def")){let c=this.definition(),u=this.pipe(),h=this.node(c.start,u.end,"block",u.explanation,[c,...u.isPipe?u.children:[u]],u.short);return h.isPipe=!0,h}let t=this.comma(),n=this.peek("as");if(n){this.p++;let c=this.next(),u=this.dialect==="yq"?this.peek("ireduce"):void 0;if(u){this.p++,this.expect("(");let p=this.pipe();this.expect(";");let f=this.pipe(),m=this.expect(")");return this.node(t.start,m.end,"block",e(`\u7573\u307F\u8FBC\u307F: \u521D\u671F\u5024 \`${this.text(p)}\` \u304B\u3089\u59CB\u3081\u3066\u3001\`${this.text(t)}\` \u306E\u5404\u7D50\u679C\u3092 \`${c.text}\` \u306B\u5165\u308C\u3066 \`${this.text(f)}\` \u3067\u66F4\u65B0\u3057\u3066\u3044\u304F\uFF08jq \u306E \`reduce\` \u306B\u5F53\u305F\u308B\uFF09`,`Fold: start from \`${this.text(p)}\` and update it with \`${this.text(f)}\` for each result of \`${this.text(t)}\` as \`${c.text}\` (jq's \`reduce\`)`),[t,this.opNode(n,e("\u5DE6\u306E\u7D50\u679C\u3092\u5909\u6570\u306B\u5165\u308C\u308B","binds the result to a variable")),this.node(c.start,c.end,"variable",e(`\u5909\u6570 \`${c.text}\``,`Variable \`${c.text}\``)),this.node(u.start,u.end,"keyword",e("`ireduce`: \u7573\u307F\u8FBC\u307F","`ireduce`: fold")),p,f])}let h=this.expect("|"),d=this.pipe();return this.node(t.start,d.end,"block",e(`\u5909\u6570\u675F\u7E1B: \`${this.text(t)}\` \u306E\u5404\u7D50\u679C\u3092 \`${c.text}\` \u306B\u5165\u308C\u3066\u3001\`|\` \u4EE5\u964D\u3092\u5B9F\u884C\u3059\u308B`,`Binding: run what follows \`|\` with each result of \`${this.text(t)}\` as \`${c.text}\``),[t,this.opNode(n,e("\u5DE6\u306E\u7D50\u679C\u3092\u5909\u6570\u306B\u5165\u308C\u308B","binds the result to a variable")),this.node(c.start,c.end,"variable",e(`\u5909\u6570 \`${c.text}\``,`Variable \`${c.text}\``)),this.opNode(h,e("\u4EE5\u964D\u306E\u5F0F\u3067\u5909\u6570\u3092\u4F7F\u3048\u308B","the variable is available from here")),...d.isPipe?d.children:[d]])}let r=this.peek("|");if(!r)return t;this.p++;let a=this.pipe(),o=[t,this.opNode(r,e("\u5DE6\u306E\u5404\u7D50\u679C\u30921\u3064\u305A\u3064\u53F3\u306E\u30D5\u30A3\u30EB\u30BF\u306B\u6E21\u3059","feeds each result on the left into the filter on the right")),...a.isPipe?a.children:[a]],l=this.node(t.start,a.end,"operator",e("\u30D1\u30A4\u30D7\u30E9\u30A4\u30F3: \u5DE6\u304B\u3089\u9806\u306B\u3001\u5404\u30D5\u30A3\u30EB\u30BF\u306E\u51FA\u529B\u3092\u6B21\u306E\u30D5\u30A3\u30EB\u30BF\u306E\u5165\u529B\u306B\u3059\u308B","Pipeline: each filter's output becomes the next filter's input"),o);return l.isPipe=!0,l}comma(){let e=this.alternative(),t;for(;t=this.peek(",");){this.p++;let n=this.alternative();e=this.binary(e,t,n,this.s("\u5DE6\u53F3\u4E21\u65B9\u306E\u7D50\u679C\u3092\u9806\u306B\u51FA\u529B\u3059\u308B","outputs the results of both sides"))}return e}alternative(){let e=this.assignment(),t=this.peek("//")??this.peek("?//");if(!t)return e;this.p++;let n=this.alternative();return this.binary(e,t,n,this.s("\u5DE6\u304C null\u30FBfalse\u30FB\u30A8\u30E9\u30FC\u306A\u3089\u53F3\u306E\u5024\u3092\u4F7F\u3046\uFF08\u65E2\u5B9A\u5024\uFF09","use the right side if the left is null, false or an error (a default)"))}assignment(){let e=this.or(),t=this.toks[this.p],n={"=":["\u5DE6\u306E\u30D1\u30B9\u306B\u53F3\u306E\u5024\u3092\u8A2D\u5B9A\u3059\u308B","set the path on the left to the value on the right"],"|=":["\u5DE6\u306E\u30D1\u30B9\u306E\u5024\u3092\u3001\u53F3\u306E\u30D5\u30A3\u30EB\u30BF\u3067\u66F4\u65B0\u3059\u308B","update the value at the path with the filter"],"+=":["\u5DE6\u306E\u30D1\u30B9\u306E\u5024\u306B\u53F3\u306E\u5024\u3092\u8DB3\u3059","add to the value at the path"],"-=":["\u5DE6\u306E\u30D1\u30B9\u306E\u5024\u304B\u3089\u53F3\u306E\u5024\u3092\u5F15\u304F","subtract from the value at the path"],"*=":["\u5DE6\u306E\u30D1\u30B9\u306E\u5024\u306B\u53F3\u306E\u5024\u3092\u639B\u3051\u308B","multiply the value at the path"],"/=":["\u5DE6\u306E\u30D1\u30B9\u306E\u5024\u3092\u53F3\u306E\u5024\u3067\u5272\u308B","divide the value at the path"],"%=":["\u5DE6\u306E\u30D1\u30B9\u306E\u5024\u3092\u53F3\u306E\u5024\u3067\u5272\u3063\u305F\u4F59\u308A\u306B\u3059\u308B","set the value at the path to the remainder"],"//=":["\u5DE6\u306E\u30D1\u30B9\u306E\u5024\u304C null\u30FBfalse \u306A\u3089\u53F3\u306E\u5024\u3092\u8A2D\u5B9A\u3059\u308B","set the path if it is null or false"]},r=this.dialect==="yq"&&t?.type==="ident"&&Zo.has(t.text)?t:void 0,a=r&&this.toks[this.p+1];if(r&&a?.type==="op"&&(a.text==="="||a.text==="|=")){this.p+=2;let l=this.alternative(),c=Kn[r.text];return this.node(e.start,l.end,"operator",this.s(`\`${this.text(e)}\` \u306E ${r.text}\uFF08${c?c[0]:""}\uFF09\u3092\u8A2D\u5B9A\u3057\u3001\u6587\u66F8\u5168\u4F53\u3092\u51FA\u529B\u3059\u308B`,`Set the ${r.text} of \`${this.text(e)}\` (${c?c[1]:""}) and output the whole document`),[e,this.node(r.start,r.end,"function",`\`${r.text}\`: ${c?this.s(c[0],c[1]):""}`),this.opNode(a,this.s("\u8A2D\u5B9A\u3059\u308B","sets it")),l])}if(t?.type!=="op"||!n[t.text])return e;this.p++;let o=this.alternative();return this.binary(e,t,o,this.s(n[t.text][0],n[t.text][1]))}or(){let e=this.and(),t;for(;t=this.peek("or");)this.p++,e=this.binary(e,t,this.and(),this.s("\u3069\u3061\u3089\u304B\u304C\u771F\u306A\u3089 true","true if either side is true"));return e}and(){let e=this.compare(),t;for(;t=this.peek("and");)this.p++,e=this.binary(e,t,this.compare(),this.s("\u4E21\u65B9\u304C\u771F\u306A\u3089 true","true if both sides are true"));return e}compare(){let e=this.additive(),t=this.toks[this.p],n={"==":["\u7B49\u3057\u3044","equal"],"!=":["\u7B49\u3057\u304F\u306A\u3044","not equal"],"<":["\u5DE6\u304C\u5C0F\u3055\u3044","less than"],"<=":["\u5DE6\u304C\u4EE5\u4E0B","less than or equal"],">":["\u5DE6\u304C\u5927\u304D\u3044","greater than"],">=":["\u5DE6\u304C\u4EE5\u4E0A","greater than or equal"]};return t?.type!=="op"||!n[t.text]?e:(this.p++,this.binary(e,t,this.additive(),this.s(`\u6BD4\u8F03: ${n[t.text][0]}\u306A\u3089 true`,`comparison: true if ${n[t.text][1]}`)))}additive(){let e=this.multiplicative(),t;for(;t=this.peek("+")??this.peek("-");)this.p++,e=this.binary(e,t,this.multiplicative(),t.text==="+"?this.s("\u8DB3\u3057\u7B97\uFF08\u6587\u5B57\u5217\u30FB\u914D\u5217\u306F\u9023\u7D50\u3001\u30AA\u30D6\u30B8\u30A7\u30AF\u30C8\u306F\u30DE\u30FC\u30B8\uFF09","addition (concatenates strings/arrays, merges objects)"):this.s("\u5F15\u304D\u7B97\uFF08\u914D\u5217\u306A\u3089\u53F3\u306E\u8981\u7D20\u3092\u53D6\u308A\u9664\u304F\uFF09","subtraction (removes elements for arrays)"));return e}multiplicative(){let e=this.postfix(),t;for(;t=this.peek("*")??this.peek("/")??this.peek("%");){this.p++;let n=t.text==="*"?this.s("\u639B\u3051\u7B97\uFF08\u30AA\u30D6\u30B8\u30A7\u30AF\u30C8\u306A\u3089\u6DF1\u3044\u30DE\u30FC\u30B8\uFF09","multiplication (deep merge for objects)"):t.text==="/"?this.s("\u5272\u308A\u7B97\uFF08\u6587\u5B57\u5217\u306A\u3089\u5206\u5272\uFF09","division (splits strings)"):this.s("\u5272\u3063\u305F\u4F59\u308A","remainder");e=this.binary(e,t,this.postfix(),n)}return e}binary(e,t,n,r){return this.node(e.start,n.end,"operator",`\`${t.text}\`: ${r}`,[e,this.opNode(t,r),n])}postfix(){let{s:e}=this,t=this.term(),n=[];for(;;){let l=this.toks[this.p];if(!l)break;let c=l.start===(n[n.length-1]??t).end;if(l.type==="field"&&c)this.p++,n.push(this.field(l));else if(l.text==="."&&this.toks[this.p+1]?.text==="["&&c)this.p++;else if(l.text==="["&&c)n.push(this.bracket());else if(l.text==="?")this.p++,n.push(this.node(l.start,l.end,"operator",e("`?`: \u30A8\u30E9\u30FC\u306B\u306A\u3063\u3066\u3082\u7121\u8996\u3057\u3066\u7D9A\u3051\u308B","`?`: ignore errors"),[],e("\uFF08\u30A8\u30E9\u30FC\u306F\u7121\u8996\uFF09","(errors ignored)")));else break}if(!n.length)return t;let a=[...this.text(t)==="."?[]:[t],...n],o=a.map(l=>l.short??`\`${this.text(l)}\``).join(" \u2192 ");return this.node(t.start,n[n.length-1].end,"variable",e(`\u30D1\u30B9: ${o}`,`Path: ${o}`),a)}field(e){let t=e.text.slice(1).replace(/^"|"$/g,"");return this.node(e.start,e.end,"variable",this.s(`\`${t}\` \u30D5\u30A3\u30FC\u30EB\u30C9\u306E\u5024`,`the value of field \`${t}\``),[],`\`${t}\``)}bracket(){let{s:e}=this,t=this.next();if(this.peek("]")){let u=this.next();return this.node(t.start,u.end,"operator",e("`[]`: \u914D\u5217\uFF08\u30AA\u30D6\u30B8\u30A7\u30AF\u30C8\uFF09\u306E\u5404\u8981\u7D20\u30921\u3064\u305A\u3064\u51FA\u529B\u3059\u308B","`[]`: output each element (or value) one by one"),[],e("\u5404\u8981\u7D20","each element"))}let n=this.toks[this.p],r=this.toks[this.p+1],a=this.toks[this.p+2];if((n?.type==="num"||n?.text==="-"&&r?.type==="num")&&(n.type==="num"?r:a)?.text==="]"){let u=n.text==="-",h=Number(u?r.text:n.text)*(u?-1:1);this.p+=u?2:1;let d=this.next(),p=h<0?e(h===-1?"\u6700\u5F8C\u306E\u8981\u7D20":`\u5F8C\u308D\u304B\u3089 ${-h} \u756A\u76EE\u306E\u8981\u7D20`,h===-1?"the last element":`the ${-h}th element from the end`):e(`${h+1} \u756A\u76EE\u306E\u8981\u7D20\uFF080 \u59CB\u307E\u308A\uFF09`,`element ${h} (0-based)`);return this.node(t.start,d.end,"operator",`\`[${h}]\`: ${p}`,[],p)}let o=this.findSlice();if(o!==void 0){let u=this.src.slice(t.end,o.start).trim(),[h,d]=u.split(":").map(f=>f.trim());this.p=this.toks.indexOf(o)+1;let p=e(`${h||"\u5148\u982D"} \u304B\u3089 ${d||"\u6700\u5F8C"}${d?" \u306E\u624B\u524D":""}\u307E\u3067`,`from ${h||"the start"} up to ${d?`(not including) ${d}`:"the end"}`);return this.node(t.start,o.end,"operator",e(`\`[${u}]\`: \u90E8\u5206\u914D\u5217\uFF08\u90E8\u5206\u6587\u5B57\u5217\uFF09\u3092\u53D6\u308A\u51FA\u3059: ${p}`,`\`[${u}]\`: a slice ${p}`),[],e(`[${u}] \u306E\u7BC4\u56F2`,`slice [${u}]`))}if(n?.type==="str"&&r?.text==="]"){this.p++;let u=this.next(),h=n.text.slice(1,-1);return this.node(t.start,u.end,"variable",e(`\`${h}\` \u30D5\u30A3\u30FC\u30EB\u30C9\u306E\u5024`,`the value of field \`${h}\``),[],`\`${h}\``)}let l=this.pipe(),c=this.expect("]");return this.node(t.start,c.end,"operator",e("`[\u5F0F]`: \u5F0F\u306E\u7D50\u679C\u3092\u30AD\u30FC\uFF08\u30A4\u30F3\u30C7\u30C3\u30AF\u30B9\uFF09\u306B\u3057\u3066\u53D6\u308A\u51FA\u3059","`[expr]`: index by the result of the expression"),[l],e("\u5F0F\u3067\u6307\u5B9A\u3057\u305F\u8981\u7D20","the indexed element"))}findSlice(){let e=0,t=!1;for(let n=this.p;n<this.toks.length;n++){let r=this.toks[n];if(r.text==="["||r.text==="("||r.text==="{")e++;else if(r.text===")"||r.text==="}")e--;else if(r.text==="]"){if(e===0)return t?r:void 0;e--}else r.text===":"&&e===0&&(t=!0)}}term(){let{s:e}=this,t=this.next();switch(t.type){case"field":return this.field(t);case"num":return this.node(t.start,t.end,"number",e(`\u6570\u5024 ${t.text}`,`Number ${t.text}`));case"str":return this.node(t.start,t.end,"string",t.text.includes("\\(")?e("\u6587\u5B57\u5217\uFF08`\\(\u2026)` \u306E\u90E8\u5206\u306B\u5F0F\u306E\u7D50\u679C\u304C\u57CB\u3081\u8FBC\u307E\u308C\u308B\uFF09","String (the result of each `\\(\u2026)` is interpolated)"):e(`\u6587\u5B57\u5217 ${t.text}`,`String ${t.text}`));case"var":{let r={$ENV:["\u74B0\u5883\u5909\u6570\u306E\u30AA\u30D6\u30B8\u30A7\u30AF\u30C8","the environment variables"],$__loc__:["\u3053\u306E\u4F4D\u7F6E\u306E\u30D5\u30A1\u30A4\u30EB\u540D\u3068\u884C\u756A\u53F7","the current file and line"]}[t.text];return this.node(t.start,t.end,"variable",r?`\`${t.text}\`: ${e(r[0],r[1])}`:e(`\u5909\u6570 \`${t.text}\`\uFF08\`--arg\` \u3084 \`as\` \u3067\u8A2D\u5B9A\u3055\u308C\u305F\u5024\uFF09`,`Variable \`${t.text}\` (set by \`--arg\` or \`as\`)`))}case"fmt":{let n=Yo[t.text],r=n?`\`${t.text}\`: ${e(n[0],n[1])}`:e(`\u66F8\u5F0F \`${t.text}\``,`Format \`${t.text}\``);if(this.peek()?.type==="str"){let a=this.next();return this.node(t.start,a.end,"operator",e(`${r}\uFF08\u6587\u5B57\u5217\u4E2D\u306E \`\\(\u2026)\` \u306B\u9069\u7528\uFF09`,`${r} (applied to each \`\\(\u2026)\` in the string)`))}return this.node(t.start,t.end,"operator",r)}case"ident":return this.call(t);case"kw":return this.keyword(t);case"op":break}switch(t.text){case".":return this.node(t.start,t.end,"variable",e("`.`: \u5165\u529B\u305D\u306E\u3082\u306E","`.`: the input itself"),[],e("\u5165\u529B","the input"));case"..":return this.node(t.start,t.end,"operator",e("`..`: \u5165\u529B\u3068\u305D\u306E\u3059\u3079\u3066\u306E\u5B50\u5B6B\u3092\u518D\u5E30\u7684\u306B\u51FA\u529B\u3059\u308B","`..`: the input and all of its descendants"));case"...":if(this.dialect!=="yq")throw new oe(t.start,"unexpected ...");return this.node(t.start,t.end,"operator",e("`...`: \u5165\u529B\u3068\u305D\u306E\u3059\u3079\u3066\u306E\u5B50\u5B6B\u3092\u3001\u30DE\u30C3\u30D7\u306E\u30AD\u30FC\u3082\u542B\u3081\u3066\u518D\u5E30\u7684\u306B\u51FA\u529B\u3059\u308B","`...`: the input and all of its descendants, map keys included"));case"-":{let n=this.postfix();return this.node(t.start,n.end,"operator",e("\u7B26\u53F7\u3092\u53CD\u8EE2\u3059\u308B","negation"),[n])}case"(":{let n=this.pipe(),r=this.expect(")");return this.node(t.start,r.end,"block",e("`( )`: \u4E2D\u306E\u5F0F\u3092\u3072\u3068\u307E\u3068\u3081\u306B\u3059\u308B","`( )`: groups the expression"),[n],n.short)}case"[":{if(this.peek("]")){let a=this.next();return this.node(t.start,a.end,"block",e("\u7A7A\u306E\u914D\u5217","An empty array"))}let n=this.pipe(),r=this.expect("]");return this.node(t.start,r.end,"block",e("`[ ]`: \u4E2D\u306E\u5F0F\u306E\u51FA\u529B\u3092\u3059\u3079\u3066\u96C6\u3081\u3066\u914D\u5217\u306B\u3059\u308B","`[ ]`: collects every output of the expression into an array"),[n])}case"{":return this.object(t)}throw new oe(t.start,`unexpected "${t.text}"`)}call(e){let{s:t}=this,n=e.text,r={true:["\u771F\u507D\u5024 true","boolean true"],false:["\u771F\u507D\u5024 false","boolean false"],null:["null","null"]};if(r[n])return this.node(e.start,e.end,"number",t(r[n][0],r[n][1]));let a=[],o=e.end;if(this.peek("(")&&this.toks[this.p].start===e.end)for(this.p++;;){a.push(this.pipe());let d=this.next();if(d.text===")"){o=d.end;break}if(d.text!==";")throw new oe(d.start,"expected ; or )")}let l=this.dialect==="yq",c=(l?Kn[n]:void 0)??Go[n],u=c?t(c[0],c[1]):l?t("\u95A2\u6570","a function"):t("\u95A2\u6570\uFF08jq \u306E\u7D44\u307F\u8FBC\u307F\u95A2\u6570\u304B\u3001`def` \u3067\u5B9A\u7FA9\u3057\u305F\u95A2\u6570\uFF09","a function (built-in or defined with `def`)");if(l&&nn.has(n)&&(u+=t("\uFF08\u26A0 jq \u306E\u95A2\u6570\u3067\u3001mikefarah/yq \u306B\u306F\u306A\u3044\uFF09"," (\u26A0 a jq function; mikefarah/yq does not have it)")),l&&(n==="env"||n==="strenv")&&a.length===1&&/^[A-Za-z_]\w*$/.test(this.text(a[0]))&&(a[0]={...a[0],kind:"variable",explanation:t(`\u74B0\u5883\u5909\u6570\u540D \`${this.text(a[0])}\``,`the environment variable name \`${this.text(a[0])}\``),children:[]}),!a.length)return this.node(e.start,e.end,"function",`\`${n}\`: ${u}`,[],`\`${n}\``);let h=this.node(e.start,e.end,"function",t("\u95A2\u6570\u540D","Function name"));return this.node(e.start,o,"function",`\`${n}(\u2026)\`: ${u}`,[h,...a.map((d,p)=>({...d,explanation:(a.length>1?t(`\u5F15\u6570 ${p+1}: `,`Argument ${p+1}: `):t("\u5F15\u6570: ","Argument: "))+d.explanation}))],`\`${n}(\u2026)\``)}object(e){let{s:t}=this,n=[];for(;!this.peek("}");){let a=this.next(),o=a.text,l;if(a.type==="str")o=a.text.slice(1,-1);else if(a.text==="(")l=this.pipe(),this.expect(")"),o=t("\u5F0F\u306E\u7D50\u679C","the computed key");else if(a.type==="var")o=a.text.slice(1);else if(a.type!=="ident"&&a.type!=="kw")throw new oe(a.start,"bad object key");if(this.peek(":")){this.p++;let c=this.objectValue();n.push(this.node(a.start,c.end,"assignment",t(`\u30AD\u30FC \`${o}\` \u306B\u5024 \`${this.text(c)}\` \u3092\u5165\u308C\u308B`,`Key \`${o}\` gets \`${this.text(c)}\``),[...l?[l]:[],c]))}else{let c=a.type==="var"?a.text:`.${o}`;n.push(this.node(a.start,this.toks[this.p-1].end,"assignment",t(`\u30AD\u30FC \`${o}\` \u306B \`${c}\` \u3092\u5165\u308C\u308B\uFF08\`{${a.text}}\` \u306F \`{${o}: ${c}}\` \u306E\u7701\u7565\u5F62\uFF09`,`Key \`${o}\` gets \`${c}\` (short for \`{${o}: ${c}}\`)`)))}if(this.peek(","))this.p++;else if(!this.peek("}"))throw new oe(this.toks[this.p]?.start??this.src.length,"expected , or }")}let r=this.next();return this.node(e.start,r.end,"block",t("`{ }`: \u30AA\u30D6\u30B8\u30A7\u30AF\u30C8\u3092\u4F5C\u308B","`{ }`: builds an object"),n)}objectValue(){return this.alternative()}keyword(e){let{s:t}=this;switch(e.text){case"if":{let n=[],r=this.pipe();n.push({...r,explanation:t("\u6761\u4EF6: ","Condition: ")+r.explanation}),this.expect("then");let a=this.pipe();for(n.push({...a,explanation:t("\u771F\u306E\u3068\u304D: ","If true: ")+a.explanation});this.peek("elif");){this.p++;let l=this.pipe();n.push({...l,explanation:t("\u6B21\u306E\u6761\u4EF6: ","Next condition: ")+l.explanation}),this.expect("then");let c=this.pipe();n.push({...c,explanation:t("\u305D\u306E\u6761\u4EF6\u304C\u771F\u306E\u3068\u304D: ","If that is true: ")+c.explanation})}if(this.peek("else")){this.p++;let l=this.pipe();n.push({...l,explanation:t("\u507D\u306E\u3068\u304D: ","Otherwise: ")+l.explanation})}let o=this.expect("end");return this.node(e.start,o.end,"keyword",t("\u6761\u4EF6\u5206\u5C90: \u6761\u4EF6\u304C\u771F\u306A\u3089 then\u3001\u507D\u306A\u3089 else \u306E\u5F0F\u3092\u51FA\u529B\u3059\u308B","Conditional: outputs the then branch if the condition is true, else the else branch"),n)}case"reduce":case"foreach":{let n=this.postfix();this.expect("as");let r=this.next();this.expect("(");let a=this.pipe();this.expect(";");let o=this.pipe(),l;this.peek(";")&&(this.p++,l=this.pipe());let c=this.expect(")"),u=e.text==="reduce"?t(`\u7573\u307F\u8FBC\u307F: \`${this.text(n)}\` \u306E\u5404\u5024\u3092 \`${r.text}\` \u3068\u3057\u3066\u3001\u521D\u671F\u5024\u304B\u3089\u9806\u306B\u66F4\u65B0\u3057\u3001\u6700\u5F8C\u306E\u7D50\u679C\u3092\u51FA\u529B\u3059\u308B`,`Reduce: fold each value of \`${this.text(n)}\` (as \`${r.text}\`) into an accumulator and output the final result`):t(`\`${this.text(n)}\` \u306E\u5404\u5024\u3092 \`${r.text}\` \u3068\u3057\u3066\u9806\u306B\u66F4\u65B0\u3057\u3001\u9014\u4E2D\u306E\u7D50\u679C\u3092\u6BCE\u56DE\u51FA\u529B\u3059\u308B`,`Foreach: update an accumulator with each value of \`${this.text(n)}\` (as \`${r.text}\`), outputting each step`),h=[{...n,explanation:t("\u7E70\u308A\u8FD4\u3059\u5024: ","Values: ")+n.explanation},this.node(r.start,r.end,"variable",t(`\u5404\u5024\u304C\u5165\u308B\u5909\u6570 \`${r.text}\``,`Each value is bound to \`${r.text}\``)),{...a,explanation:t("\u521D\u671F\u5024\uFF08`.` \u304C\u84C4\u7A4D\u5024\uFF09: ","Initial value (`.` is the accumulator): ")+a.explanation},{...o,explanation:t("\u66F4\u65B0\u5F0F: ","Update: ")+o.explanation}];return l&&h.push({...l,explanation:t("\u51FA\u529B\u3059\u308B\u5024: ","Output: ")+l.explanation}),this.node(e.start,c.end,"keyword",u,h)}case"try":{let n=this.postfix(),r=[n],a=n.end;if(this.peek("catch")){this.p++;let o=this.postfix();r.push({...o,explanation:t("\u30A8\u30E9\u30FC\u6642: ","On error: ")+o.explanation}),a=o.end}return this.node(e.start,a,"keyword",t("`try`: \u30A8\u30E9\u30FC\u304C\u8D77\u304D\u3066\u3082\u6B62\u3081\u305A\u306B\u7D9A\u3051\u308B\uFF08`catch` \u304C\u3042\u308C\u3070\u30A8\u30E9\u30FC\u6642\u306B\u305D\u308C\u3092\u5B9F\u884C\uFF09","`try`: keep going on errors (run `catch` on an error)"),r)}case"label":{let n=this.next();this.expect("|");let r=this.pipe();return this.node(e.start,r.end,"keyword",t(`\u30E9\u30D9\u30EB \`${n.text}\`: \`break ${n.text}\` \u3067\u629C\u3051\u3089\u308C\u308B\u7BC4\u56F2`,`Label \`${n.text}\`: \`break ${n.text}\` exits here`),[r])}case"def":return this.p--,this.definition()}throw new oe(e.start,`unexpected "${e.text}"`)}definition(){let{s:e}=this,t=this.expect("def"),n=this.next(),r="";if(this.peek("(")){let l=this.next();for(;!this.peek(")");)this.p++;let c=this.next();r=this.src.slice(l.start,c.end)}this.expect(":");let a=this.pipe(),o=this.expect(";");return this.node(t.start,o.end,"function",e(`\u95A2\u6570 \`${n.text}${r}\` \u3092\u5B9A\u7FA9\u3059\u308B`,`Defines the function \`${n.text}${r}\``),[a])}text(e){return this.src.slice(e.start,e.end)}};function es(s,e,t="jq"){let n=O(e);try{let r=We(s);if(!r.length)return[];let a=new Qn(s,r,e,t),o=a.pipe();if(!a.done)throw new oe(r[r.length-1].start,"trailing input");return Vr(o.isPipe?o.children:[o])}catch(r){if(!(r instanceof oe))throw r;return[{start:0,end:s.length,kind:"error",children:[],explanation:n("jq \u30D5\u30A3\u30EB\u30BF\u3092\u89E3\u6790\u3067\u304D\u307E\u305B\u3093\u3067\u3057\u305F\uFF08\u69CB\u6587\u306E\u8AA4\u308A\u304B\u3001\u672A\u5BFE\u5FDC\u306E\u66F8\u304D\u65B9\uFF09","Could not parse the jq filter (a syntax error, or unsupported syntax)")}]}}function Vr(s){return s.map(({start:e,end:t,kind:n,explanation:r,children:a})=>({start:e,end:t,kind:n,explanation:r,children:Vr(a)}))}var J=class extends Error{},ts=class s{constructor(e,t){this.src=e;this.toks=t}src;toks;p=0;get done(){return this.p>=this.toks.length}peek(e){let t=this.toks[this.p];return e===void 0||t?.text===e&&t.type!=="str"?t:void 0}next(){let e=this.toks[this.p++];if(!e)throw new J("end");return e}expect(e){let t=this.next();if(t.text!==e)throw new J(`expected ${e}`);return t}pipe(){if(this.peek("def")){this.p++;let t=this.next().text,n=[];if(this.peek("(")){for(this.p++;!this.peek(")");){let a=this.next();a.text!==";"&&n.push(a.text)}this.p++}this.expect(":");let r=this.pipe();return this.expect(";"),{t:"def",name:t,params:n,body:r,rest:this.pipe()}}let e=this.comma();if(this.peek("as")){this.p++;let t=this.next();if(t.type!=="var")throw new J("destructuring");return this.expect("|"),{t:"as",src:e,v:t.text,body:this.pipe()}}return this.peek("|")?(this.p++,{t:"pipe",l:e,r:this.pipe()}):e}comma(){let e=this.alt();for(;this.peek(",");)this.p++,e={t:"comma",l:e,r:this.alt()};return e}alt(){let e=this.assign();if(this.peek("?//"))throw new J("?//");return this.peek("//")?(this.p++,{t:"alt",l:e,r:this.alt()}):e}assign(){let e=this.or(),t=this.peek();return t?.type==="op"&&["=","|=","+=","-=","*=","/=","%=","//="].includes(t.text)?(this.p++,{t:"assign",op:t.text,l:e,r:this.alt()}):e}or(){let e=this.and();for(;this.peek("or");)this.p++,e={t:"bin",op:"or",l:e,r:this.and()};return e}and(){let e=this.compare();for(;this.peek("and");)this.p++,e={t:"bin",op:"and",l:e,r:this.compare()};return e}compare(){let e=this.additive(),t=this.peek();return t?.type==="op"&&["==","!=","<","<=",">",">="].includes(t.text)?(this.p++,{t:"bin",op:t.text,l:e,r:this.additive()}):e}additive(){let e=this.mult();for(;this.peek("+")||this.peek("-");)e={t:"bin",op:this.next().text,l:e,r:this.mult()};return e}mult(){let e=this.unary();for(;this.peek("*")||this.peek("/")||this.peek("%");)e={t:"bin",op:this.next().text,l:e,r:this.unary()};return e}unary(){return this.peek("-")?(this.p++,{t:"neg",e:this.postfix()}):this.postfix()}postfix(){let e=this.term();for(;;){let t=this.toks[this.p];if(!t)return e;let n=this.toks[this.p-1].end,r=t.start===n;if(t.type==="field"&&r)this.p++,e={t:"field",base:e,name:Jr(t.text)};else if(t.text==="."&&t.type==="op"&&this.toks[this.p+1]?.text==="["&&r)this.p++;else if(t.text==="["&&t.type==="op"&&r)e=this.bracket(e);else if(t.text==="?"&&t.type==="op"){let a=this.toks[this.p-1].text===")";this.p++,e=!a&&(e.t==="field"||e.t==="index"||e.t==="slice"||e.t==="iter")?{...e,opt:!0}:{t:"try",body:e}}else return e}}bracket(e){if(this.expect("["),this.peek("]"))return this.p++,{t:"iter",base:e};if(this.peek(":")){this.p++;let n=this.pipe();return this.expect("]"),{t:"slice",base:e,to:n}}let t=this.pipe();if(this.peek(":")){this.p++;let n=this.peek("]")?void 0:this.pipe();return this.expect("]"),{t:"slice",base:e,from:t,to:n}}return this.expect("]"),{t:"index",base:e,idx:t}}term(){let e=this.next();switch(e.type){case"num":return{t:"lit",v:Number(e.text)};case"str":return{t:"str",parts:this.stringParts(e)};case"var":return{t:"var",name:e.text};case"field":return{t:"field",base:{t:"id"},name:Jr(e.text)};case"fmt":return this.peek()?.type==="str"?{t:"str",parts:this.stringParts(this.next()),fmt:e.text}:{t:"fmt",name:e.text};case"ident":{if(e.text==="true"||e.text==="false")return{t:"lit",v:e.text==="true"};if(e.text==="null")return{t:"lit",v:null};let t=[];if(this.peek("(")&&this.toks[this.p].start===e.end)for(this.p++;;){t.push(this.pipe());let n=this.next();if(n.text===")")break;if(n.text!==";")throw new J("args")}return{t:"call",name:e.text,args:t}}case"kw":return this.keyword(e)}switch(e.text){case".":return{t:"id"};case"..":return{t:"recurse"};case"(":{let t=this.pipe();return this.expect(")"),t}case"[":{if(this.peek("]"))return this.p++,{t:"array"};let t=this.pipe();return this.expect("]"),{t:"array",e:t}}case"{":return this.object();case"-":return{t:"neg",e:this.postfix()}}throw new J(`unexpected ${e.text}`)}stringParts(e){let t=e.text.slice(1,-1),n=[],r="";for(let a=0;a<t.length;a++){if(t[a]==="\\"&&t[a+1]==="("){let o=1,l=a+2;for(;l<t.length&&o>0;)t[l]==="("?o++:t[l]===")"&&o--,l++;r&&n.push(JSON.parse(`"${r}"`)),r="";let c=t.slice(a+2,l-1),u=new s(c,We(c));n.push(u.pipe()),a=l-1;continue}if(t[a]==="\\"){r+=t.slice(a,a+2),a++;continue}r+=t[a]}return r&&n.push(JSON.parse(`"${r}"`)),n}object(){let e=[];for(;!this.peek("}");){let t=this.next(),n,r;if(t.type==="var")n={t:"lit",v:t.text.slice(1)},r={t:"var",name:t.text};else if(t.type==="str")n={t:"str",parts:this.stringParts(t)};else if(t.text==="(")n=this.pipe(),this.expect(")");else if(t.type==="ident"||t.type==="kw")n={t:"lit",v:t.text};else throw new J("object key");if(this.peek(":")&&(this.p++,r=this.objectValue()),!r){if(n.t!=="lit"&&n.t!=="str")throw new J("object shorthand");let a=n.t==="lit"?String(n.v):n.parts.length===1&&typeof n.parts[0]=="string"?n.parts[0]:void 0;if(a===void 0)throw new J("object shorthand");r={t:"field",base:{t:"id"},name:a}}if(e.push({key:n,value:r}),this.peek(","))this.p++;else if(!this.peek("}"))throw new J("object")}return this.p++,{t:"object",entries:e}}objectValue(){let e=this.alt();for(;this.peek("|");)this.p++,e={t:"pipe",l:e,r:this.alt()};return e}keyword(e){switch(e.text){case"if":{let t=[],n=this.pipe();this.expect("then"),t.push([n,this.pipe()]);let r;for(;;)if(this.peek("elif"))this.p++,n=this.pipe(),this.expect("then"),t.push([n,this.pipe()]);else if(this.peek("else"))this.p++,r=this.pipe();else break;return this.expect("end"),{t:"if",branches:t,else:r}}case"reduce":case"foreach":{let t=this.postfix();this.expect("as");let n=this.next();if(n.type!=="var")throw new J("destructuring");this.expect("(");let r=this.pipe();this.expect(";");let a=this.pipe(),o;return this.peek(";")&&(this.p++,o=this.pipe()),this.expect(")"),e.text==="reduce"?{t:"reduce",src:t,v:n.text,init:r,update:a}:{t:"foreach",src:t,v:n.text,init:r,update:a,extract:o}}case"try":{let t=this.postfix();return this.peek("catch")?(this.p++,{t:"try",body:t,catch:this.postfix()}):{t:"try",body:t}}}throw new J(e.text)}};function Jr(s){let e=s.slice(1);return e.startsWith('"')?JSON.parse(e):e}function Yr(s){try{let e=We(s),t=new ts(s,e),n=t.pipe();return t.done?n:void 0}catch(e){if(e instanceof J||e instanceof oe||e instanceof SyntaxError)return;throw e}}var j=class extends Error{constructor(t){super(typeof t=="string"?t:JSON.stringify(t));this.value=t}value},Z=s=>typeof s=="object"&&s!==null&&!Array.isArray(s);function D(s){return s===null?"null":Array.isArray(s)?"array":typeof s=="object"?"object":typeof s}var Br=["null","boolean","number","string","array","object"];function Q(s,e){let t=Br.indexOf(D(s)),n=Br.indexOf(D(e));if(t!==n)return t-n;if(typeof s=="boolean"||typeof s=="number")return Number(s)-Number(e);if(typeof s=="string")return s<e?-1:s>e?1:0;if(Array.isArray(s)){let r=e;for(let a=0;a<Math.min(s.length,r.length);a++){let o=Q(s[a],r[a]);if(o)return o}return s.length-r.length}if(Z(s)){let r=e,a=Object.keys(s).sort(),o=Object.keys(r).sort(),l=Q(a,o);if(l)return l;for(let c of a){let u=Q(s[c],r[c]);if(u)return u}}return 0}var me=s=>s!==null&&s!==!1;function Zr(s,e){if(s===null)return e;if(e===null)return s;if(typeof s=="number"&&typeof e=="number"||typeof s=="string"&&typeof e=="string")return s+e;if(Array.isArray(s)&&Array.isArray(e))return[...s,...e];if(Z(s)&&Z(e))return{...s,...e};throw new j(`${D(s)} and ${D(e)} cannot be added`)}function Hr(s,e,t){switch(s){case"+":return Zr(e,t);case"-":if(typeof e=="number"&&typeof t=="number")return e-t;if(Array.isArray(e)&&Array.isArray(t))return e.filter(n=>!t.some(r=>Q(n,r)===0));break;case"*":if(typeof e=="number"&&typeof t=="number")return e*t;if(Z(e)&&Z(t))return Kr(e,t);if(typeof e=="string"&&typeof t=="number")return t>0?e.repeat(Math.ceil(t)):null;break;case"/":if(typeof e=="number"&&typeof t=="number"){if(t===0)throw new j(`${e} and ${t} cannot be divided because the divisor is zero`);return e/t}if(typeof e=="string"&&typeof t=="string")return e.split(t);break;case"%":if(typeof e=="number"&&typeof t=="number"){if(Math.trunc(t)===0)throw new j(`${e} and ${t} cannot be divided because the divisor is zero`);return Math.trunc(e)%Math.trunc(t)}break}throw new j(`${D(e)} and ${D(t)} cannot be ${s==="-"?"subtracted":s==="*"?"multiplied":"divided"}`)}function Kr(s,e){let t={...s};for(let[n,r]of Object.entries(e))t[n]=Z(t[n])&&Z(r)?Kr(t[n],r):r;return t}function ue(s){return JSON.stringify(s)}function rn(s,e){if(D(s)!==D(e))throw new j(`${D(s)} and ${D(e)} cannot have their containment checked`);return typeof s=="string"?s.includes(e):Array.isArray(s)?e.every(t=>s.some(n=>D(t)===D(n)&&rn(n,t))):Z(s)?Object.entries(e).every(([t,n])=>t in s&&D(s[t])===D(n)&&rn(s[t],n)):Q(s,e)===0}var ns=class{steps=0;tick(){if(++this.steps>1e5)throw new J("too many steps")}ev(e,t,n){switch(this.tick(),e.t){case"id":return[t];case"recurse":return this.recurse(t);case"lit":return[e.v];case"var":{if(!n.vars.has(e.name))throw new J(`variable ${e.name}`);return[n.vars.get(e.name)]}case"field":return this.ev(e.base,t,n).flatMap(r=>this.opt(e.opt,()=>[this.field(r,e.name)]));case"index":return this.ev(e.base,t,n).flatMap(r=>this.ev(e.idx,t,n).flatMap(a=>this.opt(e.opt,()=>[this.index(r,a)])));case"slice":return this.ev(e.base,t,n).flatMap(r=>this.opt(e.opt,()=>{let a=e.from?this.ev(e.from,t,n)[0]:null,o=e.to?this.ev(e.to,t,n)[0]:null;return[this.slice(r,a,o)]}));case"iter":return this.ev(e.base,t,n).flatMap(r=>this.opt(e.opt,()=>this.iterate(r)));case"try":try{return this.ev(e.body,t,n)}catch(r){if(!(r instanceof j))throw r;return e.catch?this.ev(e.catch,r.value,n):[]}case"str":{let r=[""];for(let a of e.parts){if(typeof a=="string"){r=r.map(l=>l+a);continue}let o=this.ev(a,t,n).map(l=>e.fmt?this.format(e.fmt,l):typeof l=="string"?l:ue(l));r=r.flatMap(l=>o.map(c=>l+c))}return r}case"fmt":return[this.format(e.name,t)];case"pipe":return this.ev(e.l,t,n).flatMap(r=>this.ev(e.r,r,n));case"comma":return[...this.ev(e.l,t,n),...this.ev(e.r,t,n)];case"alt":{let r=[];try{r=this.ev(e.l,t,n).filter(me)}catch(a){if(!(a instanceof j))throw a}return r.length?r:this.ev(e.r,t,n)}case"neg":return this.ev(e.e,t,n).map(r=>{if(typeof r!="number")throw new j(`${D(r)} cannot be negated`);return-r});case"bin":return e.op==="and"||e.op==="or"?this.ev(e.l,t,n).flatMap(r=>e.op==="and"&&!me(r)?[!1]:e.op==="or"&&me(r)?[!0]:this.ev(e.r,t,n).map(me)):this.ev(e.r,t,n).flatMap(r=>this.ev(e.l,t,n).map(a=>{switch(e.op){case"==":return Q(a,r)===0;case"!=":return Q(a,r)!==0;case"<":return Q(a,r)<0;case"<=":return Q(a,r)<=0;case">":return Q(a,r)>0;case">=":return Q(a,r)>=0;default:return Hr(e.op,a,r)}}));case"array":return[e.e?this.ev(e.e,t,n):[]];case"object":{let r=[{}];for(let{key:a,value:o}of e.entries){let l=this.ev(a,t,n),c=this.ev(o,t,n);r=r.flatMap(u=>l.flatMap(h=>{if(typeof h!="string")throw new j("Object keys must be strings");return c.map(d=>({...u,[h]:d}))}))}return r}case"if":{let r=(a,o)=>{if(a>=e.branches.length)return e.else?this.ev(e.else,o,n):[o];let[l,c]=e.branches[a];return this.ev(l,o,n).flatMap(u=>me(u)?this.ev(c,o,n):r(a+1,o))};return r(0,t)}case"reduce":{let r=this.ev(e.init,t,n);for(let a of this.ev(e.src,t,n)){let o={...n,vars:new Map(n.vars).set(e.v,a)};r=r.flatMap(l=>this.ev(e.update,l,o)).slice(-1)}return r}case"foreach":{let r=this.ev(e.init,t,n),a=[];for(let o of this.ev(e.src,t,n)){let l={...n,vars:new Map(n.vars).set(e.v,o)};r=r.flatMap(c=>this.ev(e.update,c,l));for(let c of r)a.push(...e.extract?this.ev(e.extract,c,l):[c])}return a}case"as":return this.ev(e.src,t,n).flatMap(r=>this.ev(e.body,t,{...n,vars:new Map(n.vars).set(e.v,r)}));case"def":{let r={...n,funcs:new Map(n.funcs)};return r.funcs.set(`${e.name}/${e.params.length}`,{params:e.params,body:e.body,env:r}),this.ev(e.rest,t,r)}case"assign":return[this.assign(e,t,n)];case"call":return this.call(e,t,n)}}opt(e,t){if(!e)return t();try{return t()}catch(n){if(n instanceof j)return[];throw n}}field(e,t){if(e===null)return null;if(!Z(e))throw new j(`Cannot index ${D(e)} with "${t}"`);return t in e?e[t]:null}index(e,t){if(typeof t=="string")return this.field(e,t);if(e===null)return null;if(typeof t=="number"&&Array.isArray(e)){let n=Math.floor(t<0?e.length+t:t);return e[n]??null}throw new j(`Cannot index ${D(e)} with ${D(t)}`)}slice(e,t,n){if(e===null)return null;if(!Array.isArray(e)&&typeof e!="string")throw new j(`Cannot index ${D(e)} with object`);let r=e.length,a=(o,l)=>{if(o===null)return l;let c=Math.floor(o);return Math.max(0,Math.min(r,c<0?r+c:c))};return e.slice(a(t,0),a(n,r))}iterate(e){if(Array.isArray(e))return e;if(Z(e))return Object.values(e);throw new j(`Cannot iterate over ${D(e)}`)}recurse(e){let t=[e];if(Array.isArray(e))for(let n of e)t.push(...this.recurse(n));else if(Z(e))for(let n of Object.values(e))t.push(...this.recurse(n));return t}format(e,t){let n=typeof t=="string"?t:ue(t);switch(e){case"@text":return n;case"@json":return ue(t);case"@base64":return fr(n);case"@base64d":return mr(n);case"@uri":return encodeURIComponent(n).replace(/[!'()*]/g,r=>"%"+r.charCodeAt(0).toString(16).toUpperCase());case"@html":return n.replace(/[<>&'"]/g,r=>({"<":"&lt;",">":"&gt;","&":"&amp;","'":"&#39;",'"':"&quot;"})[r]);case"@sh":{let r=a=>{if(typeof a=="string")return`'${a.replace(/'/g,"'\\''")}'`;if(Array.isArray(a)||Z(a))throw new j(`${D(a)} can not be escaped for shell`);return ue(a)};return Array.isArray(t)?t.map(r).join(" "):r(t)}case"@csv":case"@tsv":{if(!Array.isArray(t))throw new j(`${D(t)} cannot be ${e.slice(1)}-formatted, only an array can be`);return t.map(r=>{if(typeof r=="number"||typeof r=="boolean")return String(r);if(r===null)return"";if(typeof r!="string")throw new j(`${D(r)} is not valid in a csv row`);return e==="@csv"?`"${r.replace(/"/g,'""')}"`:r.replace(/\\/g,"\\\\").replace(/\t/g,"\\t").replace(/\n/g,"\\n").replace(/\r/g,"\\r")}).join(e==="@csv"?",":" ")}}throw new J(e)}paths(e,t,n){switch(this.tick(),e.t){case"id":return[[]];case"field":return this.paths(e.base,t,n).flatMap(r=>this.opt2(e.opt,()=>(this.field(this.getpath(t,r),e.name),[[...r,e.name]])));case"index":return this.paths(e.base,t,n).flatMap(r=>this.ev(e.idx,t,n).map(a=>{if(typeof a!="string"&&typeof a!="number")throw new J("index path");return[...r,a]}));case"iter":return this.paths(e.base,t,n).flatMap(r=>{let a=this.getpath(t,r);if(Array.isArray(a))return a.map((o,l)=>[...r,l]);if(Z(a))return Object.keys(a).map(o=>[...r,o]);if(a===null&&e.opt)return[];throw new j(`Cannot iterate over ${D(a)}`)});case"pipe":return this.paths(e.l,t,n).flatMap(r=>this.paths(e.r,this.getpath(t,r),n).map(a=>[...r,...a]));case"comma":return[...this.paths(e.l,t,n),...this.paths(e.r,t,n)];case"recurse":{let r=[],a=(o,l)=>{r.push(l),Array.isArray(o)?o.forEach((c,u)=>a(c,[...l,u])):Z(o)&&Object.entries(o).forEach(([c,u])=>a(u,[...l,c]))};return a(t,[]),r}case"if":{let r=a=>{if(a>=e.branches.length)return e.else?this.paths(e.else,t,n):[[]];let[o,l]=e.branches[a];return this.ev(o,t,n).flatMap(c=>me(c)?this.paths(l,t,n):r(a+1))};return r(0)}case"call":if(e.name==="select"&&e.args.length===1)return this.ev(e.args[0],t,n).some(me)?[[]]:[];if(e.name==="empty")return[];if(e.name==="recurse"&&!e.args.length)return this.paths({t:"recurse"},t,n);if(e.name==="first"&&e.args.length===1)return this.paths(e.args[0],t,n).slice(0,1);break}throw new J(`path of ${e.t}`)}opt2(e,t){try{return t()}catch(n){if(e&&n instanceof j)return[];throw n}}getpath(e,t){let n=e;for(let r of t){if(n===null)return null;if(typeof r=="object")throw new J("slice path");n=typeof r=="number"?Array.isArray(n)?n[r<0?n.length+r:r]??null:this.index(n,r):this.field(n,r)}return n}setpath(e,t,n){if(!t.length)return n;let[r,...a]=t;if(typeof r=="object")throw new J("slice path");if(typeof r=="number"){let l=e===null?[]:Array.isArray(e)?[...e]:(()=>{throw new j(`Cannot index ${D(e)} with number`)})(),c=r<0?l.length+r:r;for(;l.length<=c;)l.push(null);return l[c]=this.setpath(l[c],a,n),l}let o=e===null?{}:Z(e)?{...e}:(()=>{throw new j(`Cannot index ${D(e)} with "${r}"`)})();return o[r]=this.setpath(o[r]??null,a,n),o}delpaths(e,t){let n=[...t].sort((a,o)=>Q(o,a)),r=e;for(let a of n)r=this.delpath(r,a);return r}delpath(e,t){if(!t.length)return null;let[n,...r]=t;if(e===null)return null;if(typeof n=="object")throw new J("slice path");if(!r.length){if(Array.isArray(e)&&typeof n=="number")return e.filter((o,l)=>l!==(n<0?e.length+n:n));if(Z(e)&&typeof n=="string"){let{[n]:o,...l}=e;return l}throw new j(`Cannot delete field at ${D(e)} index`)}let a=this.getpath(e,[n]);return this.setpath(e,[n],this.delpath(a,r))}assign(e,t,n){let r=this.paths(e.l,t,n);if(e.op==="|="){let o=t;for(let l of r){let c=this.ev(e.r,this.getpath(o,l),n);o=c.length?this.setpath(o,l,c[0]):this.delpath(o,l)}return o}if(e.op==="="){let o=this.ev(e.r,t,n);if(o.length!==1)throw new J("= with several values");return r.reduce((l,c)=>this.setpath(l,c,o[0]),t)}let a=this.ev(e.r,t,n);if(a.length!==1)throw new J("arithmetic update with several values");return r.reduce((o,l)=>{let c=this.getpath(o,l),u=e.op==="//="?me(c)?c:a[0]:Hr(e.op.slice(0,-1),c,a[0]);return this.setpath(o,l,u)},t)}call(e,t,n){let r=n.funcs.get(`${e.name}/${e.args.length}`);if(r){let p=new Map,f=new Map(r.env.vars);return r.params.forEach((m,g)=>{if(m.startsWith("$")){let _=this.ev(e.args[g],t,n);if(_.length!==1)throw new J("$param with several values");f.set(m,_[0]),p.set(m.slice(1),{node:{t:"var",name:m},env:{...r.env,vars:f}})}else p.set(m,{node:e.args[g],env:n})}),this.ev(r.body,t,{...r.env,vars:f,closures:p,funcs:r.env.funcs})}let a=n.closures?.get(e.name);if(a&&!e.args.length)return this.ev(a.node,t,a.env);let o=e.args,l=p=>{let f=this.ev(o[p],t,n);if(f.length!==1)throw new J(`${e.name} argument with several values`);return f[0]},c=(p,f=e.name)=>{if(!Array.isArray(p))throw new j(`Cannot ${f} ${D(p)}`);return p},u=p=>{if(typeof p!="string")throw new j(`${D(p)} cannot be used as a string`);return p},h=p=>f=>this.ev(p,f,n),d=`${e.name}/${o.length}`;switch(d){case"empty/0":return[];case"not/0":return[!me(t)];case"error/0":throw new j(t);case"error/1":throw new j(l(0));case"length/0":if(t===null)return[0];if(typeof t=="boolean")throw new j("boolean has no length");return typeof t=="number"?[Math.abs(t)]:typeof t=="string"?[[...t].length]:[Array.isArray(t)?t.length:Object.keys(t).length];case"utf8bytelength/0":return[Yt(u(t))];case"keys/0":case"keys_unsorted/0":if(Array.isArray(t))return[t.map((p,f)=>f)];if(!Z(t))throw new j(`${D(t)} has no keys`);return[e.name==="keys"?Object.keys(t).sort():Object.keys(t)];case"values/0":return t===null?[]:[t];case"has/1":{let p=l(0);if(Z(t)&&typeof p=="string")return[p in t];if(Array.isArray(t)&&typeof p=="number")return[p>=0&&p<t.length];throw new j(`Cannot check whether ${D(t)} has a ${D(p)} key`)}case"in/1":{let p=l(0);if(Z(p)&&typeof t=="string")return[t in p];if(Array.isArray(p)&&typeof t=="number")return[t>=0&&t<p.length];throw new j("in: bad arguments")}case"contains/1":return[rn(t,l(0))];case"inside/1":return[rn(l(0),t)];case"select/1":return this.ev(o[0],t,n).filter(me).map(()=>t);case"map/1":return[this.iterate(t).flatMap(h(o[0]))];case"map_values/1":if(Array.isArray(t))return[t.flatMap(p=>h(o[0])(p).slice(0,1))];if(Z(t))return[Object.fromEntries(Object.entries(t).flatMap(([p,f])=>h(o[0])(f).slice(0,1).map(m=>[p,m])))];throw new j(`Cannot iterate over ${D(t)}`);case"add/0":return[this.iterate(t).reduce((p,f)=>Zr(p,f),null)];case"any/0":return[c(t).some(me)];case"all/0":return[c(t).every(me)];case"any/1":return[c(t).some(p=>h(o[0])(p).some(me))];case"all/1":return[c(t).every(p=>h(o[0])(p).every(me))];case"flatten/0":case"flatten/1":{let p=o.length?l(0):1e9,f=(m,g)=>m.flatMap(_=>Array.isArray(_)&&g>0?f(_,g-1):[_]);return[f(c(t),p)]}case"range/1":{let p=l(0);return Array.from({length:Math.max(0,Math.ceil(p))},(f,m)=>m)}case"range/2":{let p=l(0),f=l(1),m=[];for(let g=p;g<f&&m.length<1e3;g++)m.push(g);return m}case"floor/0":return[Math.floor(t)];case"ceil/0":return[Math.ceil(t)];case"round/0":return[Math.round(t)];case"sqrt/0":return[Math.sqrt(t)];case"fabs/0":case"abs/0":return[Math.abs(t)];case"tostring/0":return[typeof t=="string"?t:ue(t)];case"tonumber/0":{if(typeof t=="number")return[t];let p=Number(u(t));if(Number.isNaN(p)||u(t).trim()==="")throw new j(`Cannot parse '${t}' as JSON`);return[p]}case"type/0":return[D(t)];case"sort/0":return[[...c(t,"sort")].sort(Q)];case"sort_by/1":return[[...c(t,"sort")].map(p=>[h(o[0])(p),p]).sort((p,f)=>Q(p[0],f[0])).map(p=>p[1])];case"group_by/1":{let p=[...c(t)].map(m=>[h(o[0])(m),m]).sort((m,g)=>Q(m[0],g[0])),f=[];return p.forEach((m,g)=>{(g===0||Q(m[0],p[g-1][0])!==0)&&f.push([]),f[f.length-1].push(m[1])}),[f]}case"unique/0":return[[...c(t)].sort(Q).filter((p,f,m)=>f===0||Q(p,m[f-1])!==0)];case"unique_by/1":{let p=[...c(t)].map(f=>[h(o[0])(f),f]).sort((f,m)=>Q(f[0],m[0]));return[p.filter((f,m)=>m===0||Q(f[0],p[m-1][0])!==0).map(f=>f[1])]}case"min/0":case"max/0":{let p=[...c(t)].sort(Q);return[p.length?e.name==="min"?p[0]:p[p.length-1]:null]}case"min_by/1":case"max_by/1":{let p=[...c(t)].map(f=>[h(o[0])(f),f]).sort((f,m)=>Q(f[0],m[0]));return p.length?[e.name==="min_by"?p[0][1]:p[p.length-1][1]]:[null]}case"reverse/0":return[typeof t=="string"?[...t].reverse().join(""):t===null?[]:[...c(t)].reverse()];case"first/0":return[this.index(t,0)];case"last/0":return[this.index(t,-1)];case"nth/1":return[this.index(t,l(0))];case"first/1":return this.ev(o[0],t,n).slice(0,1);case"last/1":return this.ev(o[0],t,n).slice(-1);case"limit/2":{let p=l(0);return p>0?this.ev(o[1],t,n).slice(0,p):[]}case"isempty/1":return[this.ev(o[0],t,n).length===0];case"recurse/0":return this.recurse(t);case"recurse/1":{let p=[],f=m=>{p.push(m),this.tick();for(let g of this.opt(!0,()=>h(o[0])(m)))f(g)};return f(t),p}case"to_entries/0":{if(!Z(t))throw new j(`${D(t)} has no keys`);return[Object.entries(t).map(([p,f])=>({key:p,value:f}))]}case"from_entries/0":{let p={};for(let f of c(t)){if(!Z(f))throw new j("from_entries: bad entry");let m=f.key??f.k??f.name??f.Name??f.Key??f.K;p[typeof m=="string"?m:ue(m??null)]="value"in f?f.value:"v"in f?f.v:f.Value??null}return[p]}case"with_entries/1":{if(!Z(t))throw new j(`${D(t)} has no keys`);let p=Object.entries(t).flatMap(([f,m])=>h(o[0])({key:f,value:m}));return this.call({t:"call",name:"from_entries",args:[]},p,n)}case"paths/0":return this.paths({t:"recurse"},t,n).filter(p=>p.length);case"getpath/1":return[this.opt(!1,()=>[this.getpath(t,l(0))])[0]];case"setpath/2":return[this.setpath(t,l(0),l(1))];case"del/1":return[this.delpaths(t,this.paths(o[0],t,n))];case"to_array/0":return[Array.isArray(t)?t:[t]];case"join/1":{let p=u(l(0));return[c(t).map(f=>f===null?"":typeof f=="string"?f:typeof f=="number"||typeof f=="boolean"?String(f):(()=>{throw new j(`Cannot join with ${D(f)}`)})()).join(p)]}case"split/1":return[u(t).split(u(l(0)))];case"ascii_downcase/0":return[u(t).replace(/[A-Z]/g,p=>p.toLowerCase())];case"ascii_upcase/0":return[u(t).replace(/[a-z]/g,p=>p.toUpperCase())];case"ltrimstr/1":{let p=l(0);return[typeof t=="string"&&typeof p=="string"&&t.startsWith(p)?t.slice(p.length):t]}case"rtrimstr/1":{let p=l(0);return[typeof t=="string"&&typeof p=="string"&&t.endsWith(p)&&p?t.slice(0,-p.length):t]}case"trim/0":return[u(t).trim()];case"startswith/1":return[u(t).startsWith(u(l(0)))];case"endswith/1":return[u(t).endsWith(u(l(0)))];case"test/1":case"test/2":{let p=o.length>1?u(l(1)):"";if(/[^gix]/.test(p))throw new J("regex flags");return[new RegExp(u(l(0)),p.replace("g","").replace("x","")).test(u(t))]}case"ascii/0":return[String.fromCharCode(t)];case"explode/0":return[[...u(t)].map(p=>p.codePointAt(0))];case"implode/0":return[String.fromCodePoint(...c(t))];case"tojson/0":return[ue(t)];case"fromjson/0":try{return[JSON.parse(u(t))]}catch{throw new j(`${t} cannot be parsed as JSON`)}case"indices/1":case"index/1":case"rindex/1":{let p=l(0),f=[];if(typeof t=="string"&&typeof p=="string"&&p)for(let m=t.indexOf(p);m>=0;m=t.indexOf(p,m+1))f.push(m);else if(Array.isArray(t)){let m=Array.isArray(p)?p:[p];for(let g=0;g+m.length<=t.length;g++)m.every((_,b)=>Q(t[g+b],_)===0)&&f.push(g)}else{if(t===null)return[null];throw new j("Cannot determine indices")}return e.name==="indices"?[f]:(f=e.name==="index"?f.slice(0,1):f.slice(-1),[f.length?f[0]:null])}case"objects/0":return Z(t)?[t]:[];case"arrays/0":return Array.isArray(t)?[t]:[];case"strings/0":return typeof t=="string"?[t]:[];case"numbers/0":return typeof t=="number"?[t]:[];case"booleans/0":return typeof t=="boolean"?[t]:[];case"nulls/0":return t===null?[t]:[];case"iterables/0":return Array.isArray(t)||Z(t)?[t]:[];case"scalars/0":return!Array.isArray(t)&&!Z(t)?[t]:[];case"walk/1":{let p=f=>{let m=Array.isArray(f)?f.map(p):Z(f)?Object.fromEntries(Object.entries(f).map(([_,b])=>[_,p(b)])):f,g=h(o[0])(m);return g.length?g[0]:null};return[p(t)]}case"tostream/0":case"input/0":case"inputs/0":case"now/0":case"env/0":case"input_filename/0":case"debug/0":case"stderr/0":case"halt/0":case"halt_error/0":case"halt_error/1":throw new J(e.name)}throw new J(`function ${d}`)}};function rs(s,e,t={}){let n=Yr(s);if(!n)return;let r={vars:new Map(Object.entries(t).map(([a,o])=>[`$${a}`,o])),funcs:new Map};r.vars.set("$__loc__",{file:"<stdin>",line:1});try{return{outputs:new ns().ev(n,e,r)}}catch(a){if(a instanceof j)return{error:a.message};if(a instanceof J)return;throw a}}var K=class s{constructor(e=""){this.name=e}name;kind="unknown";fields=new Map;elem;thresholds=[];strings=[];minLength=0;optional=!1;avoid=[];deleted=!1;obj(){return this.kind==="unknown"&&(this.kind="object"),this}field(e){this.obj();let t=this.fields.get(e);return t||(t=new s(e),this.fields.set(e,t)),t}arr(){return this.kind==="unknown"&&(this.kind="array"),this.elem??=new s(Xr(this.name)),this.elem}set(e){this.kind==="unknown"&&(this.kind=e)}};function Xr(s){return s.replace(/ies$/,"y").replace(/s$/,"")}var ss=class{vars=new Map;defs=new Map;run(e,t){switch(e.t){case"id":return t;case"recurse":return new K;case"field":return this.run(e.base,t).field(e.name);case"index":{let n=this.run(e.base,t);if(e.idx.t==="lit"&&typeof e.idx.v=="number"){let r=n.arr();return n.minLength=Math.max(n.minLength,e.idx.v>=0?e.idx.v+1:-e.idx.v),r}return e.idx.t==="str"&&e.idx.parts.length===1&&typeof e.idx.parts[0]=="string"?n.field(e.idx.parts[0]):new K}case"slice":{let n=this.run(e.base,t);n.arr();let r=a=>a?.t==="lit"&&typeof a.v=="number"?Math.abs(a.v):0;return n.minLength=Math.max(n.minLength,r(e.to)+1,r(e.from)+2),n}case"str":for(let n of e.parts)typeof n!="string"&&this.run(n,t);return new K;case"def":return e.params.length||this.defs.set(e.name,e.body),this.run(e.rest,t);case"iter":{let n=this.run(e.base,t);return n.kind==="object"?n.fields.values().next().value??new K:n.arr()}case"try":return this.run(e.body,t);case"pipe":return this.run(e.r,this.run(e.l,t));case"comma":return this.run(e.l,t),this.run(e.r,t);case"alt":{let n=this.run(e.l,t);return n!==t&&n.name&&(n.optional=!0),e.r.t==="lit"&&n.avoid.push(e.r.v),this.run(e.r,t)}case"neg":return this.run(e.e,t).set("number"),new K;case"var":return this.vars.get(e.name)??new K;case"as":return this.vars.set(e.v,this.run(e.src,t)),this.run(e.body,t);case"bin":{let n=this.run(e.l,t),r=this.run(e.r,t),a=o=>o.t==="lit"?o.v:o.t==="str"&&o.parts.length===1&&typeof o.parts[0]=="string"?o.parts[0]:void 0;for(let[o,l]of[[n,a(e.r)],[r,a(e.l)]])typeof l=="number"&&(o.set("number"),o.thresholds.push(l)),typeof l=="string"&&(o.set("string"),o.strings.push(l)),typeof l=="boolean"&&o.set("boolean");return["-","*","/","%"].includes(e.op)&&(n.set("number"),r.set("number")),e.op==="+"&&(n.kind==="number"||r.kind==="number")&&(n.set("number"),r.set("number")),(e.op==="and"||e.op==="or")&&(n.set("boolean"),r.set("boolean")),new K}case"assign":{let n=this.run(e.l,t);return this.run(e.r,e.op==="="?t:n),t}case"array":{let n=new K;return e.e&&(n.kind="array",n.elem=this.run(e.e,t)),n}case"object":{let n=new K;n.kind="object";for(let r of e.entries){let a=this.run(r.value,t);r.key.t==="lit"&&typeof r.key.v=="string"&&n.fields.set(r.key.v,a)}return n}case"if":for(let[n,r]of e.branches)this.cond(n,t),this.run(r,t);return e.else?this.run(e.else,t):t;case"reduce":case"foreach":{this.vars.set(e.v,this.run(e.src,t));let n=new K;return e.init.t==="lit"&&typeof e.init.v=="number"&&(n.kind="number"),this.run(e.update,n),new K}case"call":return this.call(e,t);default:return new K}}cond(e,t){let n=this.run(e,t);n!==t&&n.name&&n.set("boolean")}call(e,t){let n=e.args;switch(e.name){case"select":return this.cond(n[0],t),t;case"map":{let r=t.arr(),a=new K;return a.kind="array",a.elem=this.run(n[0],r),a}case"map_values":return this.run(n[0],t.kind==="array"?t.arr():new K),t;case"sort_by":case"group_by":case"unique_by":case"min_by":case"max_by":{let r=t.arr(),a=this.run(n[0],r);return a.kind==="unknown"&&/^(age|count|price|size|score|total|amount|year|id|rank|qty|quantity|level|priority|value)$/.test(a.name)&&a.set("number"),e.name.endsWith("_by")&&(e.name==="min_by"||e.name==="max_by")?r:t}case"sort":case"unique":case"reverse":case"min":case"max":case"first":case"last":case"flatten":if(!n.length){let r=t.arr();return e.name==="min"||e.name==="max"||e.name==="first"||e.name==="last"?r:t}return this.run(n[0],t);case"add":{let r=t.arr();return r.set("number"),r}case"any":case"all":return n.length?this.cond(n[0],t.arr()):t.arr().set("boolean"),new K;case"join":return t.arr().set("string"),new K;case"length":return t.kind==="unknown"&&t.arr(),new K;case"keys":case"keys_unsorted":case"to_entries":case"with_entries":case"has":return t.obj(),new K;case"test":case"startswith":case"endswith":case"ltrimstr":case"rtrimstr":case"ascii_downcase":case"ascii_upcase":case"split":case"tonumber":return t.set("string"),e.name==="tonumber"&&t.strings.push("42"),new K;case"del":return this.run(n[0],t).deleted=!0,t;case"not":return new K;case"tostring":return n.length||t.set("number"),new K;default:{let r=n.length?void 0:this.defs.get(e.name);if(r)return this.run(r,t);for(let a of n)this.run(a,t);return new K}}}},Ve={name:["alice","bob","carol"],user:["alice","bob","carol"],author:["alice","bob","carol"],email:["alice@example.com","bob@example.com","carol@example.com"],city:["Tokyo","Osaka","Kyoto"],title:["Intro","Guide","Notes"],status:["active","inactive","active"],type:["book","pen","book"],id:["a1","b2","c3"],tag:["sale","new","sale"],url:["https://example.com/a","https://example.com/b","https://example.com/c"],version:["1.0.0","1.2.0","2.0.0"],date:["2026-01-15","2026-03-02","2026-07-21"],key:["host","port","user"]},sn={age:[30,25,41],price:[80,150,120],count:[3,7,1],id:[1,2,3],score:[72,95,88],size:[120,2048,512],total:[10,30,20],year:[2024,2025,2026],timeout:[30,60,10],port:[8080,3e3,5432]},Ko=/^(ok|enabled|active|done|valid|deleted|published|visible|admin|is_\w+|has_\w+)$/;function an(s,e,t=0,n=!1){for(let r=0;r<3&&s.avoid.length;r++){let a=Gr(s,e+r,t,n);if(!s.avoid.some(o=>Q(o,a)===0))return a}return Gr(s,e,t,n)}function Gr(s,e,t,n){switch(s.kind){case"object":{if(!s.fields.size)return{name:Ve.name[e%3],age:sn.age[e%3]};let r=Object.fromEntries([...s.fields].filter(([,a])=>!(n&&a.optional)).map(([a,o])=>[a,an(o,e,t+1,n)]));return[...s.fields.values()].every(a=>a.deleted)?{name:Ve.name[e%3],...r}:r}case"array":{let r=Math.min(Math.max(t>1?2:3,s.minLength),8);return Array.from({length:r},(a,o)=>an(s.elem??new K,o,t+1,n))}case"number":{if(s.thresholds.length){let r=s.thresholds[0];return(r===0?[-1,3,5]:[Math.round(r*.5),Math.round(r*1.5),Math.round(r*1.2)])[e%3]}return(sn[s.name]??[10,25,7])[e%3]}case"boolean":return[!0,!1,!0][e%3];case"string":return s.strings.length?e%2===0?s.strings[0]:Ve[s.name]?.[e%3]??`other${e}`:(Ve[s.name]??Ve[Xr(s.name)]??[`${s.name||"value"}1`,`${s.name||"value"}2`,`${s.name||"value"}3`])[e%3];case"unknown":return sn[s.name]?sn[s.name][e%3]:Ko.test(s.name)?[!0,!1,!0][e%3]:Ve[s.name]?Ve[s.name][e%3]:t===0?{name:"alice",age:30}:`${s.name||"value"}${e+1}`}}function is(s,e={}){let t=Yr(s);if(!t)return;let n=c=>{let u=rs(s,c,e.vars);if(!u)return;if("error"in u)return{input:c,outputs:[],values:[],error:u.error};let h=u.outputs.map(d=>e.raw&&typeof d=="string"?d:ue(d));return{input:c,outputs:h.length>5?[...h.slice(0,4),"\u2026"]:h,values:u.outputs.slice(0,5)}};if(e.nullInput){let c=n(null);return c&&[c]}let r=new K;try{new ss().run(t,r)}catch{return}let a=n(an(r,0));if(!a)return;let o=an(r,0,0,!0),l=ue(o)!==ue(a.input)?n(o):void 0;return l&&!l.error?[a,l]:[a]}function Qr(s,e){let t;try{t=new RegExp(s.source,`${s.flags.replace(/[gd]/g,"")}gd`)}catch{return[]}let n=[];for(let r=t.exec(e),a=0;r&&a<50;r=t.exec(e),a++)(r.indices??[]).forEach((l,c)=>{l&&(c===0||l[1]>l[0])&&n.push({start:l[0],end:l[1],group:c})}),r[0]===""&&t.lastIndex++;return n}function Xo(s,e,t){let n;try{n=new RegExp(s.source,s.flags.replace(/[gd]/g,""))}catch{return[]}let r=[];return e.forEach((a,o)=>{let l=n.exec(a);if(!l||l.length<2||r.length>=4)return;let c=l.slice(1).map((u,h)=>`\\${h+1}=${u===void 0?t==="ja"?"\uFF08\u306A\u3057\uFF09":"(none)":JSON.stringify(u)}`);r.push(`${t==="ja"?`${o+1}\u884C\u76EE`:`line ${o+1}`}: ${JSON.stringify(l[0])} ${c.join(" ")}`)}),r}function ei(s,e,t){let n=(o,l)=>t==="ja"?o:l,r=n("\uFF08\u51FA\u529B\u306A\u3057\uFF09","(no output)"),a=(o,l=n("\u51FA\u529B","Output"))=>({sections:[{label:l,lines:o??[n("\uFF08\u3053\u306E\u5165\u529B\u3067\u306F\u5B9F\u884C\u3067\u304D\u307E\u305B\u3093\uFF09","(cannot run on this input)")],empty:r}]});switch(s.kind){case"regex":{let o=e.map(d=>Qr(s.regex,d)),l=e.filter((d,p)=>o[p].some(f=>f.group===0)),c=e.filter((d,p)=>!o[p].some(f=>f.group===0)),u=Xo(s.regex,e,t),h=s.mode==="inverted"?[{label:n("\u8868\u793A\u3055\u308C\u308B\u884C\uFF08\u4E00\u81F4\u3057\u306A\u3044\u884C\uFF09","Printed (lines that do not match)"),lines:c,empty:n("\uFF08\u306A\u3057\uFF09","(none)")}]:[{label:s.mode==="values"?n("\u4E00\u81F4\u3059\u308B\u5024","Matches"):n("\u4E00\u81F4\u3059\u308B\u884C","Matching lines"),lines:l,empty:n("\uFF08\u306A\u3057\uFF09","(none)")}];return u.length&&h.push({label:n("\u30B0\u30EB\u30FC\u30D7\u306B\u5165\u308B\u6587\u5B57\u5217","What the groups capture"),lines:u}),{sections:h,marks:o}}case"glob":{let o=e.filter(l=>Ae(s.pattern,l,s.mode));return{sections:[{label:n("\u4E00\u81F4\u3059\u308B\u540D\u524D","Matching names"),lines:o,empty:n("\uFF08\u306A\u3057\uFF09","(none)")}],marks:e.map(l=>Ae(s.pattern,l,s.mode)?[{start:0,end:l.length,group:0}]:[])}}case"sed":{let o=a(wt(s.script,e,{quiet:s.quiet,extended:s.extended}));return s.highlight&&(o.marks=e.map(l=>Qr(s.highlight,l))),o}case"awk":return a(bt(s.program,e,{fs:s.fs,vars:s.vars}));case"perl":return a(rt(s.code,s.opts,e));case"filter":{let o=je[s.cmd];return a(o?o(s.words,e):void 0)}case"jq":{let o;try{o=JSON.parse(e.join(`
68
+ `))}catch(c){return{sections:[{label:n("\u30A8\u30E9\u30FC","Error"),lines:[n("\u5165\u529B\u304C JSON \u3068\u3057\u3066\u8AAD\u3081\u307E\u305B\u3093","The input is not valid JSON")+`: ${c.message}`]}]}}let l=rs(s.filter,o,s.vars);return l?"error"in l?{sections:[{label:n("\u30A8\u30E9\u30FC","Error"),lines:[l.error]}]}:a(l.outputs.map(c=>s.raw&&typeof c=="string"?c:ue(c))):a(void 0)}case"pipeline":{let o=tn(s.stages,!0,e);return o?{sections:o.steps.filter((l,c)=>l.stage.cmd!=="cat"||c===o.steps.length-1).map((l,c,u)=>({label:c===u.length-1?n(`\u51FA\u529B\uFF08\`${l.stage.text}\` \u306E\u5F8C\uFF09`,`Output (after \`${l.stage.text}\`)`):n(`\`${l.stage.text}\` \u306E\u5F8C`,`After \`${l.stage.text}\``),lines:l.output,empty:n("\uFF08\u306A\u3057\uFF09","(nothing)")}))}:a(void 0)}case"xargs":return a($t(s.words,e.join(`
69
69
  `)+`
70
- `).map($t),n("\u5B9F\u884C\u3055\u308C\u308B\u30B3\u30DE\u30F3\u30C9","Commands that run"))}}var Zo=[":-",":=",":+",":?","##","%%","//","/#","/%","^^",",,","-","=","+","?","#","%","/","^",","];function Kn(s,e,t){let n=0,r;for(let a=e;a<s.length;a++){let o=s[a];if(o==="\\"){a++;continue}if(r){o===r&&(r=void 0);continue}if(o==='"'||o==="'"){r=o;continue}if(o==="$"&&(s[a+1]==="{"||s[a+1]==="(")){n++,a++;continue}if(o==="{"||o==="("||o==="["){n++;continue}if((o==="}"||o===")"||o==="]")&&n>0){n--;continue}if(n===0&&o===t)return a}return-1}function vt(s){if(!s.startsWith("${")||!s.endsWith("}"))return;let e=s.slice(2,-1),t=2,n=[],r=(f,m,g)=>{if(f==="offset"||f==="length"){for(;m<g&&e[m]===" ";)m++;for(;g>m&&e[g-1]===" ";)g--}n.push({role:f,text:e.slice(m,g),start:t+m,end:t+g})},a=0,o;/^[#!][A-Za-z_0-9@*#?$!]/.test(e)&&(o=e[0],r("prefix",0,1),a=1);let l=/^([A-Za-z_][A-Za-z0-9_]*|\d+|[@*#?$!0-])/.exec(e.slice(a));if(!l)return;let c=l[1];r("name",a,a+c.length),a+=c.length;let u;if(e[a]==="["){let f=Kn(e,a+1,"]");if(f<0)return;u=e.slice(a+1,f),r("subscript",a,f+1),a=f+1}let h=e.slice(a);if(!h)return{prefix:o,name:c,subscript:u,parts:n};if(o==="!"&&(h==="*"||h==="@"))return r("op",a,a+1),{prefix:o,name:c,subscript:u,op:h,parts:n};if(o)return;if(h[0]==="@"&&h.length===2)return r("op",a,a+1),r("transform",a+1,a+2),{name:c,subscript:u,op:"@",parts:n};if(h[0]===":"&&!/^:[-=+?]/.test(h)){let f=Kn(e,a+1,":");return r("op",a,a+1),f<0?r("offset",a+1,e.length):(r("offset",a+1,f),r("op",f,f+1),r("length",f+1,e.length)),{name:c,subscript:u,op:":",parts:n}}let d=Zo.find(f=>h.startsWith(f));if(!d)return;r("op",a,a+d.length);let p=a+d.length;if(d[0]==="/"){let f=Kn(e,p,"/");f<0?r("pattern",p,e.length):(r("pattern",p,f),r("op",f,f+1),r("replacement",f+1,e.length))}else/^[#%^,]/.test(d)?p<e.length&&r("pattern",p,e.length):r("word",p,e.length);return{name:c,subscript:u,op:d,parts:n}}function at(s){if(/\$|`|[?*+@!]\(/.test(s))return;let e=[],t=n=>{let r=e[e.length-1];r?.type==="text"?r.text+=n:e.push({type:"text",text:n})};for(let n=0;n<s.length;n++){let r=s[n];if(r==="\\"&&n+1<s.length)t(s[++n]);else if(r==='"'||r==="'"){let a=s.indexOf(r,n+1);if(a<0)return;t(s.slice(n+1,a)),n=a}else if(r==="*")e.push({type:"any"});else if(r==="?")e.push({type:"one"});else if(r==="["){let a=s.indexOf("]",n+2);if(a<0){t(r);continue}let o=s.slice(n+1,a),l=o[0]==="!"||o[0]==="^";l&&(o=o.slice(1)),e.push({type:"class",set:o,negated:l}),n=a}else t(r)}return e}function ln(s){return s.map(e=>{switch(e.type){case"any":return"[\\s\\S]*";case"one":return"[\\s\\S]";case"class":return`[${e.negated?"^":""}${e.set.replace(/[\\\]]/g,"\\$&")}]`;case"text":return e.text.replace(/[.*+?^${}()|[\]\\]/g,"\\$&")}}).join("")}function cn(s,e){let t=e==="ja";return s.map(n=>{switch(n.type){case"any":return t?"\u4EFB\u610F\u306E\u6587\u5B57\u5217":"any string";case"one":return t?"\u4EFB\u610F\u306E1\u6587\u5B57":"any one character";case"class":{let r=Xo(n.set,e);return t?`${r}${n.negated?"\u4EE5\u5916\u306E":"\u306E\u3069\u308C\u304B"}1\u6587\u5B57`:`one character ${n.negated?"other than":"from"} ${r}`}case"text":return t?`\u300C${n.text}\u300D`:`"${n.text}"`}}).join(" + ")}function Xo(s,e){let t={"[:digit:]":["\u6570\u5B57","digits"],"[:alpha:]":["\u82F1\u5B57","letters"],"[:alnum:]":["\u82F1\u6570\u5B57","letters/digits"],"[:space:]":["\u7A7A\u767D","whitespace"],"[:upper:]":["\u5927\u6587\u5B57","uppercase letters"],"[:lower:]":["\u5C0F\u6587\u5B57","lowercase letters"]};return t[s]?t[s][e==="ja"?0:1]:s.replace(/(.)-(.)/g,(n,r,a)=>e==="ja"?`${r}\u301C${a}`:`${r}-${a}`)}function an(s,e,t,n){let r=new RegExp(`^(?:${ln(e)})$`),a=s.length,o=Array.from({length:a+1},(l,c)=>n?a-c:c);for(let l of o){let c=t==="start"?s.slice(0,l):s.slice(a-l);if(r.test(c))return t==="start"?s.slice(l):s.slice(0,a-l)}return s}function Hr(s,e,t,n){let r=ln(e);if(!r)return s;if(n==="/#")return s.replace(new RegExp(`^(?:${r})`),()=>t);if(n==="/%"){for(let a=0;a<=s.length;a++)if(new RegExp(`^(?:${r})$`).test(s.slice(a)))return s.slice(0,a)+t;return s}return s.replace(new RegExp(r,n==="//"?"g":""),()=>t)}var Ko=["report.tar.gz","/usr/local/bin/app.sh","src/main/app.log","v1.2.3","2026-10-16","hello world","foo_bar_baz","ABC-123-xyz","image.png","key=value"];function on(s){return Ko.find(s)}var Qo=s=>`'${s.replace(/'/g,"'\\''")}'`;function Yr(s,e){let t=e==="ja",n=s.name,r=/^[1-9]\d*$/.test(n),a=m=>/[\s']/.test(m)?`"${m}"`:m||'""',o=(m,g)=>({when:r?t?`${n} \u756A\u76EE\u306E\u5F15\u6570\u304C \`${a(m)}\` \u306E\u3068\u304D`:`When argument ${n} is \`${a(m)}\``:t?`\`${n}=${a(m)}\` \u306E\u3068\u304D`:`When \`${n}=${a(m)}\``,result:g,setup:r?void 0:`${n}=${Qo(m)}`}),l=m=>({when:t?`\`${n}=(a b c)\` \u306E\u3068\u304D`:`When \`${n}=(a b c)\``,result:m,setup:`${n}=(a b c)`}),c=(m,g)=>({when:r?t?`${n} \u756A\u76EE\u306E\u5F15\u6570\u304C\u7121\u3044${m?"\u304B\u7A7A\u306E":""}\u3068\u304D`:`When argument ${n} is missing${m?" or empty":""}`:t?`${n} \u304C\u672A\u8A2D\u5B9A${m?"\u304B\u7A7A":""}\u306E\u3068\u304D`:`When ${n} is unset${m?" or empty":""}`,result:g,setup:r?void 0:`unset ${n}`});if(s.prefix==="#")return s.subscript==="@"||s.subscript==="*"?[l("3")]:[o("hello","5")];if(s.prefix==="!")return s.op==="*"||s.op==="@"?[{when:t?`${n}_A \u3068 ${n}_B \u304C\u3042\u308B\u3068\u304D`:`When ${n}_A and ${n}_B are set`,result:`${n}_A ${n}_B`,setup:`${n}_A=1 ${n}_B=2`}]:s.subscript==="@"||s.subscript==="*"?[l("0 1 2")]:[{when:t?`\`${n}=HOME\` \u306E\u3068\u304D`:`When \`${n}=HOME\``,result:t?"$HOME \u306E\u5024":"the value of $HOME"}];if(!s.op)return s.subscript==="@"||s.subscript==="*"?[l("a b c")]:s.subscript&&/^\d+$/.test(s.subscript)?[l(["a","b","c"][Number(s.subscript)]??"")]:void 0;let u=m=>s.parts.find(g=>g.role===m)?.text,h=u("word")??"",d=/^\/|^~/.test(h)?"/data":/^-?\d+$/.test(h)?"42":"hello",p=m=>`${m}${/\$/.test(m)?t?"\uFF08\u5C55\u958B\u7D50\u679C\uFF09":" (expanded)":""}`,f=m=>({when:r?t?`${n} \u756A\u76EE\u306E\u5F15\u6570\u304C\u7A7A\u306E\u3068\u304D`:`When argument ${n} is empty`:t?`\`${n}=""\` \u306E\u3068\u304D`:`When \`${n}=""\``,result:m,setup:r?void 0:`${n}=`});switch(s.op){case":-":case":=":return[c(!0,p(h)),o(d,d)];case"-":case"=":return[c(!1,p(h)),f(""),o(d,d)];case":+":return[o(d,p(h)),c(!0,"")];case"+":return[o(d,p(h)),f(p(h)),c(!1,"")];case":?":case"?":{let m=h||(t?"\uFF08\u65E2\u5B9A\u306E\u30E1\u30C3\u30BB\u30FC\u30B8\uFF09":"(a default message)"),g=t?`\u30A8\u30E9\u30FC\u300C${m}\u300D\u3092\u8868\u793A\u3057\u3066\u7D42\u4E86`:`prints the error "${m}" and exits`;return[c(s.op===":?",g),o(d,d)]}case"#":case"##":case"%":case"%%":{let m=at(u("pattern")??"");if(!m)return;let g=s.op[0]==="#"?"start":"end",_=s.op.length===2,b=k=>an(k,m,g,_)!==k,w=on(k=>b(k)&&an(k,m,g,!0)!==an(k,m,g,!1))??on(b)??el(m,g);return w?[o(w,an(w,m,g,_))]:void 0}case"/":case"//":case"/#":case"/%":{let m=at(u("pattern")??""),g=u("replacement")??"";if(!m||/[$`]/.test(g))return;let _=g.replace(/^["']|["']$/g,""),b=new RegExp(ln(m)),k=(s.op==="/"||s.op==="//"?on(v=>(v.match(new RegExp(ln(m),"g"))??[]).length>1)??Gr(m,s.op):void 0)??on(v=>b.test(v)&&Hr(v,m,_,s.op)!==v)??Gr(m,s.op);return k?[o(k,Hr(k,m,_,s.op))]:void 0}case"^":return[o("hello world","Hello world")];case"^^":return[o("hello world","HELLO WORLD")];case",":return[o("HELLO World","hELLO World")];case",,":return[o("HELLO World","hello world")];case":":{let m=u("offset")?.trim(),g=u("length")?.trim();if(!m||!/^-?\d+$/.test(m)||g!==void 0&&!/^-?\d+$/.test(g))return;let _="abcdefgh",b=Number(m),w=b<0?Math.max(0,_.length+b):b,k=_.length;return g!==void 0&&(k=Number(g)<0?_.length+Number(g):w+Number(g)),[o(_,_.slice(w,Math.max(w,k)))]}case"@":{let m=u("transform"),g={Q:["it's","'it'\\''s'"],E:["a\\tb",t?"a<\u30BF\u30D6>b":"a<TAB>b"],U:["hello","HELLO"],u:["hello","Hello"],L:["HELLO","hello"],A:["abc",`${n}='abc'`],P:["\\u@\\h",t?"\u30E6\u30FC\u30B6\u30FC\u540D@\u30DB\u30B9\u30C8\u540D":"user@host"]},_=m&&g[m];return _?[o(_[0],_[1])]:void 0}}}function el(s,e){let t=s.map(n=>n.type==="text"?n.text:n.type==="any"?"xx":n.type==="one"?"x":n.negated?"_":n.set[0]).join("");if(t)return e==="start"?`${t}name`:`name${t}`}function Gr(s,e){let t=s.map(n=>n.type==="text"?n.text:n.type==="any"?"xx":n.type==="one"?"x":n.negated?"_":n.set[0]).join("");if(t)return e==="/#"?`${t}-abc`:e==="/%"?`abc-${t}`:/\w/.test(t)?`a-${t}-b-${t}`:`foo${t}bar${t}baz`}var Qn={":-":["\u65E2\u5B9A\u5024\u306E\u6F14\u7B97\u5B50: \u5DE6\u306E\u5909\u6570\u304C\u672A\u8A2D\u5B9A\u307E\u305F\u306F\u7A7A\u306A\u3089\u53F3\u306E\u5024\u3092\u4F7F\u3046\uFF08`:` \u304C\u3042\u308B\u3068\u7A7A\u6587\u5B57\u3082\u672A\u8A2D\u5B9A\u3068\u540C\u3058\u6271\u3044\uFF09","Default operator: use the right side if the variable is unset or empty (the `:` makes empty count as unset)"],"-":["\u65E2\u5B9A\u5024\u306E\u6F14\u7B97\u5B50: \u5DE6\u306E\u5909\u6570\u304C\u672A\u8A2D\u5B9A\u306E\u3068\u304D\u3060\u3051\u53F3\u306E\u5024\u3092\u4F7F\u3046\uFF08\u7A7A\u6587\u5B57\u306A\u3089\u7A7A\u306E\u307E\u307E\uFF09","Default operator: use the right side only if the variable is unset (empty stays empty)"],":=":["\u65E2\u5B9A\u5024\u306E\u4EE3\u5165\u6F14\u7B97\u5B50: \u672A\u8A2D\u5B9A\u307E\u305F\u306F\u7A7A\u306A\u3089\u53F3\u306E\u5024\u3092\u5909\u6570\u306B\u4EE3\u5165\u3057\u3066\u304B\u3089\u4F7F\u3046","Assign-default operator: if unset or empty, assign the right side to the variable and use it"],"=":["\u65E2\u5B9A\u5024\u306E\u4EE3\u5165\u6F14\u7B97\u5B50: \u672A\u8A2D\u5B9A\u306E\u3068\u304D\u3060\u3051\u53F3\u306E\u5024\u3092\u5909\u6570\u306B\u4EE3\u5165\u3057\u3066\u304B\u3089\u4F7F\u3046","Assign-default operator: if unset, assign the right side and use it"],":+":["\u4EE3\u66FF\u5024\u306E\u6F14\u7B97\u5B50: \u5909\u6570\u304C\u8A2D\u5B9A\u6E08\u307F\u304B\u3064\u7A7A\u3067\u306A\u3044\u3068\u304D\u3060\u3051\u53F3\u306E\u5024\u3092\u4F7F\u3046","Alternate-value operator: use the right side only if the variable is set and non-empty"],"+":["\u4EE3\u66FF\u5024\u306E\u6F14\u7B97\u5B50: \u5909\u6570\u304C\u8A2D\u5B9A\u6E08\u307F\u306A\u3089\uFF08\u7A7A\u3067\u3082\uFF09\u53F3\u306E\u5024\u3092\u4F7F\u3046","Alternate-value operator: use the right side if the variable is set (even if empty)"],":?":["\u30A8\u30E9\u30FC\u6F14\u7B97\u5B50: \u672A\u8A2D\u5B9A\u307E\u305F\u306F\u7A7A\u306A\u3089\u30E1\u30C3\u30BB\u30FC\u30B8\u3092\u8868\u793A\u3057\u3066\u30B9\u30AF\u30EA\u30D7\u30C8\u3092\u7D42\u4E86\u3059\u308B","Error operator: if unset or empty, print the message and exit"],"?":["\u30A8\u30E9\u30FC\u6F14\u7B97\u5B50: \u672A\u8A2D\u5B9A\u306A\u3089\u30E1\u30C3\u30BB\u30FC\u30B8\u3092\u8868\u793A\u3057\u3066\u30B9\u30AF\u30EA\u30D7\u30C8\u3092\u7D42\u4E86\u3059\u308B","Error operator: if unset, print the message and exit"],"#":["\u5148\u982D\u304B\u3089\u3001\u30D1\u30BF\u30FC\u30F3\u306B\u4E00\u81F4\u3059\u308B\u6700\u3082\u77ED\u3044\u90E8\u5206\u3092\u53D6\u308A\u9664\u304F","Remove the shortest prefix matching the pattern"],"##":["\u5148\u982D\u304B\u3089\u3001\u30D1\u30BF\u30FC\u30F3\u306B\u4E00\u81F4\u3059\u308B\u6700\u3082\u9577\u3044\u90E8\u5206\u3092\u53D6\u308A\u9664\u304F","Remove the longest prefix matching the pattern"],"%":["\u672B\u5C3E\u304B\u3089\u3001\u30D1\u30BF\u30FC\u30F3\u306B\u4E00\u81F4\u3059\u308B\u6700\u3082\u77ED\u3044\u90E8\u5206\u3092\u53D6\u308A\u9664\u304F","Remove the shortest suffix matching the pattern"],"%%":["\u672B\u5C3E\u304B\u3089\u3001\u30D1\u30BF\u30FC\u30F3\u306B\u4E00\u81F4\u3059\u308B\u6700\u3082\u9577\u3044\u90E8\u5206\u3092\u53D6\u308A\u9664\u304F","Remove the longest suffix matching the pattern"],"/":["\u6700\u521D\u306B\u4E00\u81F4\u3057\u305F\u90E8\u5206\u3060\u3051\u3092\u7F6E\u63DB\u3059\u308B","Replace the first match"],"//":["\u4E00\u81F4\u3057\u305F\u90E8\u5206\u3092\u3059\u3079\u3066\u7F6E\u63DB\u3059\u308B","Replace every match"],"/#":["\u5148\u982D\u3067\u4E00\u81F4\u3057\u305F\u5834\u5408\u3060\u3051\u7F6E\u63DB\u3059\u308B","Replace a match at the start"],"/%":["\u672B\u5C3E\u3067\u4E00\u81F4\u3057\u305F\u5834\u5408\u3060\u3051\u7F6E\u63DB\u3059\u308B","Replace a match at the end"],"^":["\u5148\u982D\u306E1\u6587\u5B57\u3092\u5927\u6587\u5B57\u306B\u3059\u308B","Uppercase the first character"],"^^":["\u3059\u3079\u3066\u306E\u6587\u5B57\u3092\u5927\u6587\u5B57\u306B\u3059\u308B","Uppercase every character"],",":["\u5148\u982D\u306E1\u6587\u5B57\u3092\u5C0F\u6587\u5B57\u306B\u3059\u308B","Lowercase the first character"],",,":["\u3059\u3079\u3066\u306E\u6587\u5B57\u3092\u5C0F\u6587\u5B57\u306B\u3059\u308B","Lowercase every character"],":":["\u90E8\u5206\u6587\u5B57\u5217\u3092\u53D6\u308A\u51FA\u3059\uFF08`:\u958B\u59CB\u4F4D\u7F6E:\u9577\u3055`\uFF09","Take a substring (`:offset:length`)"],"@":["\u5024\u3092\u5909\u63DB\u3059\u308B\uFF08`@` \u306E\u5F8C\u306E1\u6587\u5B57\u3067\u5909\u63DB\u306E\u7A2E\u985E\u3092\u6307\u5B9A\uFF09","Transform the value (the letter after `@` selects how)"]},es={Q:["\u30B7\u30A7\u30EB\u306B\u518D\u5165\u529B\u3067\u304D\u308B\u5F62\u306B\u30AF\u30A9\u30FC\u30C8\u3059\u308B","quote it so it can be reused as shell input"],E:["`\\n` \u3084 `\\t` \u306A\u3069\u306E\u30D0\u30C3\u30AF\u30B9\u30E9\u30C3\u30B7\u30E5\u30A8\u30B9\u30B1\u30FC\u30D7\u3092\u5C55\u958B\u3059\u308B\uFF08`$'\u2026'` \u3068\u540C\u3058\uFF09","expand backslash escapes like `\\n` (as in `$'\u2026'`)"],P:["\u30D7\u30ED\u30F3\u30D7\u30C8\u6587\u5B57\u5217\uFF08PS1 \u3068\u540C\u3058\u66F8\u5F0F\uFF09\u3068\u3057\u3066\u5C55\u958B\u3059\u308B","expand it as a prompt string (like PS1)"],A:["\u540C\u3058\u5024\u3092\u518D\u73FE\u3059\u308B\u4EE3\u5165\u6587\uFF08`name='value'`\uFF09\u306B\u3059\u308B","turn it into an assignment statement that recreates it"],K:["\u9023\u60F3\u914D\u5217\u3092\u30AD\u30FC\u3068\u5024\u306E\u7D44\u3068\u3057\u3066\u8868\u793A\u3059\u308B","show an associative array as key/value pairs"],k:["\u9023\u60F3\u914D\u5217\u3092\u30AD\u30FC\u3068\u5024\u3092\u4EA4\u4E92\u306B\u4E26\u3079\u305F\u5358\u8A9E\u306B\u5206\u3051\u308B","expand an associative array into alternating keys and values"],a:["\u5909\u6570\u306E\u5C5E\u6027\u30D5\u30E9\u30B0\uFF08`declare` \u306E\u30AA\u30D7\u30B7\u30E7\u30F3\u6587\u5B57\uFF09\u3092\u8FD4\u3059","give the variable's attribute flags (as for `declare`)"],U:["\u3059\u3079\u3066\u5927\u6587\u5B57\u306B\u3059\u308B","uppercase every character"],u:["\u5148\u982D\u306E1\u6587\u5B57\u3092\u5927\u6587\u5B57\u306B\u3059\u308B","uppercase the first character"],L:["\u3059\u3079\u3066\u5C0F\u6587\u5B57\u306B\u3059\u308B","lowercase every character"]};var tl=new Set([";","+"]);function ns(s){return/^'.*'$/.test(s)||/^".*"$/.test(s)?s.slice(1,-1):s.replace(/^\\/,"")}function Zr(s){let e=ns(s);return e.startsWith("-")&&e.length>1||e==="("||e==="!"||e===","}var ts=class{constructor(e,t){this.words=e;this.arity=t}words;arity;i=0;peek(){return this.words[this.i]}or(){let e=[this.and()],t=[];for(;this.peek()==="-o"||this.peek()==="-or";)t.push(this.i++),e.push(this.and());return e.length===1?e[0]:{type:"or",children:e,ops:t}}and(){let e=[this.unary()],t=[];for(;;){let n=this.peek();if(n===void 0||n===")"||n==="-o"||n==="-or"||n===",")break;(n==="-a"||n==="-and")&&t.push(this.i++),e.push(this.unary())}return e.length===1?e[0]:{type:"and",children:e,ops:t}}unary(){let e=this.peek();if(e===void 0)throw new Error("missing expression");if(e==="!"||e==="-not")return{type:"not",op:this.i++,child:this.unary()};if(e==="("){let r=this.i++,a=this.or();if(this.peek()!==")")throw new Error("missing )");return{type:"group",open:r,close:this.i++,child:a}}let t=this.i++,n=this.arity(e);if(n==="until"){for(;this.i<this.words.length&&!tl.has(this.words[this.i]);)this.i++;this.i=Math.min(this.i+1,this.words.length)}else this.i=Math.min(this.i+n,this.words.length);return{type:"primary",from:t,to:this.i-1,name:e,args:this.words.slice(t+1,this.i)}}};function Xr(s,e){let t=new ts(s,e);try{let n=t.or();return t.i===s.length?n:void 0}catch{return}}var Kr=new Set(["-print","-print0","-printf","-fprint","-fprint0","-fprintf","-ls","-fls","-delete","-exec","-execdir","-ok","-okdir","-quit"]);function un(s){switch(s.type){case"primary":return Kr.has(s.name);case"not":return un(s.child);case"group":return un(s.child);default:return s.children.some(un)}}function nl(s,e){let t=A(e),n=s.args[0]??"",r=(o,l,c)=>{let u=n.replace(/^[+-]/,"");return n.startsWith("+")?t(`${u}${o}\u3088\u308A\u524D\u306B${c[0]}`,`${c[1]} more than ${u} ${l} ago`):n.startsWith("-")?t(`${u}${o}\u4EE5\u5185\u306B${c[0]}`,`${c[1]} less than ${u} ${l} ago`):t(`\u3061\u3087\u3046\u3069${u}${o}\u524D\u306B${c[0]}`,`${c[1]} exactly ${u} ${l} ago`)},a={f:["\u901A\u5E38\u30D5\u30A1\u30A4\u30EB","a regular file"],d:["\u30C7\u30A3\u30EC\u30AF\u30C8\u30EA","a directory"],l:["\u30B7\u30F3\u30DC\u30EA\u30C3\u30AF\u30EA\u30F3\u30AF","a symlink"],p:["\u540D\u524D\u4ED8\u304D\u30D1\u30A4\u30D7","a named pipe"],s:["\u30BD\u30B1\u30C3\u30C8","a socket"],b:["\u30D6\u30ED\u30C3\u30AF\u30C7\u30D0\u30A4\u30B9","a block device"],c:["\u30AD\u30E3\u30E9\u30AF\u30BF\u30C7\u30D0\u30A4\u30B9","a character device"]};switch(s.name){case"-name":return t(`\u540D\u524D\u304C ${n} \u306B\u4E00\u81F4`,`name matches ${n}`);case"-iname":return t(`\u540D\u524D\u304C ${n} \u306B\u4E00\u81F4\uFF08\u5927\u5C0F\u6587\u5B57\u533A\u5225\u306A\u3057\uFF09`,`name matches ${n} (any case)`);case"-path":case"-wholename":return t(`\u30D1\u30B9\u304C ${n} \u306B\u4E00\u81F4`,`path matches ${n}`);case"-ipath":return t(`\u30D1\u30B9\u304C ${n} \u306B\u4E00\u81F4\uFF08\u5927\u5C0F\u6587\u5B57\u533A\u5225\u306A\u3057\uFF09`,`path matches ${n} (any case)`);case"-regex":return t(`\u30D1\u30B9\u5168\u4F53\u304C\u6B63\u898F\u8868\u73FE ${n} \u306B\u4E00\u81F4`,`the whole path matches the regex ${n}`);case"-type":return n.split(",").map(o=>a[o]?t(a[o][0],a[o][1]):o).join(t("\u304B"," or "));case"-mtime":return r("\u65E5","days",["\u66F4\u65B0","modified"]);case"-mmin":return r("\u5206","minutes",["\u66F4\u65B0","modified"]);case"-atime":return r("\u65E5","days",["\u30A2\u30AF\u30BB\u30B9","accessed"]);case"-amin":return r("\u5206","minutes",["\u30A2\u30AF\u30BB\u30B9","accessed"]);case"-ctime":return r("\u65E5","days",["\u72B6\u614B\u5909\u66F4","changed"]);case"-cmin":return r("\u5206","minutes",["\u72B6\u614B\u5909\u66F4","changed"]);case"-newer":return t(`${n} \u3088\u308A\u65B0\u3057\u3044`,`newer than ${n}`);case"-size":{let o=n.replace(/^[+-]/,"");return n.startsWith("+")?t(`\u30B5\u30A4\u30BA\u304C ${o} \u3088\u308A\u5927\u304D\u3044`,`larger than ${o}`):n.startsWith("-")?t(`\u30B5\u30A4\u30BA\u304C ${o} \u3088\u308A\u5C0F\u3055\u3044`,`smaller than ${o}`):t(`\u30B5\u30A4\u30BA\u304C\u3061\u3087\u3046\u3069 ${o}`,`exactly ${o}`)}case"-empty":return t("\u7A7A","empty");case"-user":return t(`\u6240\u6709\u8005\u304C ${n}`,`owned by ${n}`);case"-group":return t(`\u30B0\u30EB\u30FC\u30D7\u304C ${n}`,`group ${n}`);case"-perm":return t(`\u6A29\u9650\u304C ${n}`,`permissions ${n}`);case"-maxdepth":return t(`\u6DF1\u3055 ${n} \u307E\u3067`,`at most ${n} levels deep`);case"-mindepth":return t(`\u6DF1\u3055 ${n} \u4EE5\u4E0A`,`at least ${n} levels deep`);case"-readable":return t("\u8AAD\u307F\u53D6\u308A\u53EF\u80FD","readable");case"-writable":return t("\u66F8\u304D\u8FBC\u307F\u53EF\u80FD","writable");case"-executable":return t("\u5B9F\u884C\u53EF\u80FD","executable");case"-true":return t("\u5E38\u306B\u771F","always true");case"-false":return t("\u5E38\u306B\u507D","always false");case"-prune":return t("\u305D\u306E\u4E2D\u306B\u306F\u5165\u3089\u305A\u30B9\u30AD\u30C3\u30D7","skip it without descending");case"-print":return t("\u8868\u793A","print it");case"-print0":return t("NUL \u533A\u5207\u308A\u3067\u8868\u793A","print it NUL-terminated");case"-printf":return t(`\u66F8\u5F0F ${n} \u3067\u8868\u793A`,`print it with the format ${n}`);case"-ls":return t("\u8A73\u7D30\u3092\u8868\u793A","list it in detail");case"-delete":return t("\u524A\u9664","delete it");case"-quit":return t("\u3059\u3050\u306B\u7D42\u4E86","quit");case"-exec":case"-execdir":case"-ok":{let o=s.args.slice(0,-1).join(" "),l=s.args[s.args.length-1]==="+";return t(`\u300C${o}\u300D\u3092${l?"\u307E\u3068\u3081\u3066":"1\u4EF6\u305A\u3064"}\u5B9F\u884C`,`run "${o}"${l?" on all at once":" for each"}`)}default:return s.name+(n?` ${n}`:"")}}function qe(s,e,t=!1){let n=A(e);switch(s.type){case"primary":return nl(s,e);case"not":return n(`\u300C${qe(s.child,e,!0)}\u300D\u3067\u306F\u306A\u3044`,`not (${qe(s.child,e,!0)})`);case"group":return n(`\uFF08${qe(s.child,e)}\uFF09`,`(${qe(s.child,e)})`);case"or":{let r=s.children.map(a=>qe(a,e,!0)).join(n("\u3001\u307E\u305F\u306F ","; or "));return t?n(`\uFF08${r}\uFF09`,`(${r})`):r}case"and":{let r=s.children.filter(c=>!(c.type==="primary"&&(Kr.has(c.name)||c.name==="-prune"))),a=s.children.filter(c=>!r.includes(c)),o=r.map(c=>qe(c,e,!0)).join(n(" \u304B\u3064 "," and "));if(!a.length)return o;let l=a.map(c=>qe(c,e,!0)).join(n("\u3057\u3066",", then "));return o?n(`${o}\u306A\u3089${l}`,`if ${o}: ${l}`):l}}}function Qr(s,e){let t=A(e),n=qe(s,e),a=s.type==="or"&&s.children[0].type==="and"&&s.children[0].children.some(o=>o.type==="primary"&&o.name==="-prune")?t("\uFF08`-prune -o` \u306F\u3001\u7279\u5B9A\u306E\u30C7\u30A3\u30EC\u30AF\u30C8\u30EA\u3092\u63A2\u7D22\u304B\u3089\u9664\u5916\u3059\u308B\u5B9A\u756A\u306E\u66F8\u304D\u65B9\uFF09"," (`-prune -o` is the usual way to exclude a directory)"):"";return un(s)?t(`\u691C\u7D22\u6761\u4EF6\u3068\u51E6\u7406: ${n}${a}`,`Conditions and actions: ${n}${a}`):t(`\u300C${n}\u300D\u306B\u5F53\u3066\u306F\u307E\u308B\u3082\u306E\u3092\u8868\u793A\u3059\u308B\uFF08\u51E6\u7406\u306E\u6307\u5B9A\u304C\u7121\u3044\u306E\u3067 \`-print\` \u304C\u88DC\u308F\u308C\u308B\uFF09${a}`,`Print what matches: ${n} (no action is given, so \`-print\` is implied)${a}`)}function ei(s,e){let t=at(s);if(!(!t||!t.some(n=>n.type!=="text")))return A(e)("\u30D1\u30BF\u30FC\u30F3: ","pattern: ")+cn(t,e)}function ti(s,e){let t=A(e);if(!/^:?([A-Za-z0-9?]:?)+$/.test(s))return;let n=[],r=[],a=0;for(s[0]===":"&&(n.push({start:0,end:1,kind:"operator",children:[],explanation:t("\u5148\u982D\u306E `:`: \u30A8\u30E9\u30FC\u3092\u81EA\u5206\u3067\u51E6\u7406\u3059\u308B\u30E2\u30FC\u30C9\uFF08\u4E0D\u660E\u306A\u30AA\u30D7\u30B7\u30E7\u30F3\u3067\u306F\u5909\u6570\u306B `?`\u3001\u5024\u306E\u6B20\u3051\u305F\u30AA\u30D7\u30B7\u30E7\u30F3\u3067\u306F `:` \u304C\u5165\u308A\u3001\u305D\u306E\u30AA\u30D7\u30B7\u30E7\u30F3\u6587\u5B57\u304C $OPTARG \u306B\u5165\u308B\u3002\u30A8\u30E9\u30FC\u30E1\u30C3\u30BB\u30FC\u30B8\u306F\u51FA\u306A\u3044\uFF09","Leading `:`: silent error mode (an unknown option sets the variable to `?`, a missing value to `:`, with the option letter in $OPTARG; no messages are printed)")}),a=1);a<s.length;){let o=s[a],l=s[a+1]===":";n.push({start:a,end:a+(l?2:1),kind:"option",children:[],explanation:l?t(`\`${o}:\`: \u30AA\u30D7\u30B7\u30E7\u30F3 -${o} \u306F\u5024\u3092\u53D6\u308B\uFF08\`-${o} \u5024\`\u3002\u5024\u306F $OPTARG \u306B\u5165\u308B\uFF09`,`\`${o}:\`: option -${o} takes a value (\`-${o} VALUE\`, available in $OPTARG)`):t(`\`${o}\`: \u30AA\u30D7\u30B7\u30E7\u30F3 -${o}\uFF08\u5024\u306A\u3057\uFF09`,`\`${o}\`: option -${o} (no value)`)}),r.push(l?t(`-${o} \u5024`,`-${o} VALUE`):`-${o}`),a+=l?2:1}return{tokens:n,note:t(`\u53D7\u3051\u4ED8\u3051\u308B\u30AA\u30D7\u30B7\u30E7\u30F3: ${r.join("\u3001")}`,`accepts ${r.join(", ")}`)}}var ri={mikefarah4:["mikefarah/yq v4","mikefarah/yq v4"],kislyuk:["kislyuk/yq\uFF08Python \u7248\u3002jq \u306E\u30E9\u30C3\u30D1\u30FC\uFF09","kislyuk/yq (the Python jq wrapper)"],mikefarah3:["mikefarah/yq v3","mikefarah/yq v3"]},ss={"-P":"4.5.1","--prettyPrint":"4.5.1","-I":"4.0.0","--indent":"4.0.0","-i":"4.0.0","--inplace":"4.0.0","-n":"4.3.2","--null-input":"4.3.2","-f":"4.11.2","--front-matter":"4.11.2","-0":"4.33.3","--nul-output":"4.33.3","-e":"4.0.0","--exit-status":"4.0.0","-N":"4.0.0","--no-doc":"4.0.0","-M":"4.0.0","-C":"4.0.0","-r":"4.0.0"},sl={json:"4.12.2",j:"4.12.2",props:"4.12.2",p:"4.12.2",yaml:"4.12.2",y:"4.12.2",xml:"4.17.2",x:"4.17.2",csv:"4.16.2",c:"4.16.2",tsv:"4.16.2",t:"4.16.2",toml:"4.52.5",shell:"4.34.2",s:"4.34.2",lua:"4.40.7",l:"4.40.7"},rl={json:"4.27.5",j:"4.27.5",xml:"4.17.2",x:"4.17.2",csv:"4.27.5",c:"4.27.5",tsv:"4.27.5",t:"4.27.5",toml:"4.33.3",props:"4.20.2",p:"4.20.2",ini:"4.46.1",i:"4.46.1",yaml:"4.17.2",y:"4.17.2",lua:"4.40.7",l:"4.40.7"},rs={keys:"4.4.1",del:"4.1.0",to_entries:"4.8.0",from_entries:"4.8.0",with_entries:"4.8.0",map:"4.16.2",map_values:"4.16.2",sort_by:"4.16.2",sort:"4.16.2",unique:"4.9.8",unique_by:"4.9.8",group_by:"4.14.2",flatten:"4.14.2",env:"4.3.2",strenv:"4.3.2",envsubst:"4.18.1",load:"4.15.1",load_str:"4.17.2",pick:"4.22.1",omit:"4.43.1",split:"4.4.1",join:"4.4.1",test:"4.10.0",sub:"4.7.1",match:"4.10.0",capture:"4.10.0",downcase:"4.21.1",upcase:"4.21.1",to_number:"4.40.7",to_json:"4.14.2",to_yaml:"4.14.2",from_yaml:"4.14.2",line_comment:"4.20.2",head_comment:"4.20.2",foot_comment:"4.20.2",parent:"4.15.1",key:"4.15.1",kind:"4.40.7",split_doc:"4.20.2",document_index:"4.20.2",di:"4.20.2",filename:"4.3.2",eval:"4.19.1",shuffle:"4.31.2",min:"4.44.6",max:"4.44.6",any:"4.9.8",all:"4.9.8",reverse:"4.21.1",pivot:"4.44.6",with:"4.13.5",tostring:"4.43.1",to_string:"4.43.1",trim:"4.27.5",contains:"4.13.5",sort_keys:"4.16.2",now:"4.25.3",ireduce:"4.6.3","@base64":"4.21.1","@base64d":"4.21.1","@json":"4.16.2","@csv":"4.16.2","@tsv":"4.16.2","@yaml":"4.16.2","@sh":"4.31.2"},il=new Set(["-y","--yaml-output","--yml-output","-Y","--yaml-roundtrip","--yml-roundtrip","--indentless-lists","--indentless","--explicit-start","--explicit-end","-w","--width","--yaml-output-grammar-version","--yml-out-ver","-F","--yaml-frontmatter","--in-place","-S","--sort-keys","--arg","--argjson","--slurpfile","--rawfile","--args","--jsonargs","-R","--raw-input","-a","--ascii-output","--tab","--seq","--stream","-j","--join-output","--slurp"]),al=new Set(["-o","--output-format","-p","--input-format","-P","--prettyPrint","-I","--front-matter","-0","--nul-output","-N","--no-doc","--expression","--header-preprocess","--xml-attribute-prefix","--xml-content-name","--csv-separator","--properties-separator","--properties-array-brackets","--shell-key-separator","--lua-prefix","--lua-suffix","--lua-globals","--lua-unquoted","--split-exp","--split-exp-file","--security-disable-env-ops","--security-disable-file-ops","--security-enable-system-operator","--string-interpolation","--yaml-compact-seq-indent","--inplace"]),is=new Set(["-o","--output-format","-p","--input-format","-I","--indent","-f","--front-matter","-s","--split-exp","--expression","--from-file","--xml-attribute-prefix","--xml-content-name","--csv-separator","--properties-separator","--shell-key-separator","--lua-prefix","--lua-suffix","--split-exp-file"]),ni={"--arg":2,"--argjson":2,"--slurpfile":2,"--rawfile":2,"-w":1,"--width":1,"--indent":1,"--yaml-output-grammar-version":1,"--yml-out-ver":1,"-L":1,"-f":1,"--from-file":1},ot={r:"read",read:"read",w:"write",write:"write",d:"delete",delete:"delete",m:"merge",merge:"merge",n:"new",new:"new",p:"prefix",prefix:"prefix",x:"compare",compare:"compare",v:"validate",validate:"validate"},si=s=>s.split(".").map(Number).reduce((e,t)=>e*1e3+t,0),ol=(s,e)=>si(s)>=si(e)?s:e;function ii(s,e={}){let t=[],n=[],r=g=>`\`${g}\``,a,o;for(let g=0;g<s.length;g++){let _=s[g];if(_!==void 0){if(_==="--"){a===void 0&&s[g+1]!==void 0&&(a=g+1);break}if(_.startsWith("-")&&_.length>1){let b=/^(--?[\w-]+)=(.*)$/.exec(_),w=!_.startsWith("--")&&/^-[opI]./.test(_)?[_.slice(0,2),_.slice(2)]:void 0,[k,v]=b?[b[1],b[2]]:w??[_,void 0],R=!!(o&&ot[o]);if(il.has(k)&&!(k==="-j"&&R)){t.push({flavor:"kislyuk",weight:3,why:[`${r(k)} \u306F kislyuk/yq\uFF08jq\uFF09\u306E\u30AA\u30D7\u30B7\u30E7\u30F3`,`${r(k)} is a kislyuk/yq (jq) option`]}),n.push({label:r(k),v4:null,kislyuk:!0,v3:!1}),g+=ni[k]&&v===void 0?ni[k]:0;continue}if(al.has(k)&&!R){let W=v??(is.has(k)?s[g+1]:void 0),j=ss[k]??"4.0.0";(k==="-o"||k==="--output-format")&&W&&(j=sl[W]??"4.12.2"),(k==="-p"||k==="--input-format")&&W&&(j=rl[W]??"4.17.2"),t.push({flavor:"mikefarah4",weight:3,why:[`${r(W&&v===void 0?`${k} ${W}`:_)} \u306F mikefarah/yq v4 \u306E\u30AA\u30D7\u30B7\u30E7\u30F3`,`${r(W&&v===void 0?`${k} ${W}`:_)} is a mikefarah/yq v4 option`]}),n.push({label:r(W&&v===void 0?`${k} ${W}`:_),v4:j,kislyuk:!1,v3:k==="-P"||k==="--prettyPrint"||k==="-I"}),is.has(k)&&v===void 0&&g++;continue}ss[k]&&n.push({label:r(k),v4:ss[k],kislyuk:["-i","-n","-e","-r","-C","-M"].includes(k),v3:["-i","-I","-P","-C"].includes(k)}),is.has(k)&&v===void 0&&g++;continue}if(a===void 0){if(o===void 0&&ot[_]&&s.length>g+1){o=_,t.push({flavor:"mikefarah3",weight:4,why:[`${r(_)}\uFF08${ot[_]}\uFF09\u306F mikefarah/yq v3 \u306E\u30B5\u30D6\u30B3\u30DE\u30F3\u30C9`,`${r(_)} (${ot[_]}) is a mikefarah/yq v3 subcommand`]}),n.push({label:r(_),v4:null,kislyuk:!1,v3:!0}),a=s.slice(g+1).map((w,k)=>({x:w,k:g+1+k})).filter(({x:w})=>w!==void 0&&!w.startsWith("-"))[_==="n"||_==="new"?0:1]?.k;break}if(o===void 0&&(_==="e"||_==="eval"||_==="ea"||_==="eval-all")){o=_,t.push({flavor:"mikefarah4",weight:4,why:[`${r(_)} \u306F mikefarah/yq v4 \u306E\u30B5\u30D6\u30B3\u30DE\u30F3\u30C9`,`${r(_)} is a mikefarah/yq v4 subcommand`]}),n.push({label:r(_),v4:"4.0.0",kislyuk:!1,v3:!1});continue}a=g,o===void 0&&n.push({label:r(`yq '${_.length>16?_.slice(0,15)+"\u2026":_}'`),v4:"4.18.1",kislyuk:!0,v3:!0})}}}let l=a!==void 0?s[a]:void 0;if(l!==void 0&&!(o&&ot[o])){let g=[];try{g=We(l).filter(_=>_.type==="ident"||_.type==="fmt").map(_=>_.text)}catch{g=[]}for(let _ of new Set(g)){let b=_==="pick"&&/\bpick\s*\(\s*\[/.test(l)||_==="explode"&&/\bexplode\s*\(/.test(l);Or.has(_)||_==="ireduce"||b?(t.push({flavor:"mikefarah4",weight:2,why:[`${r(_)} \u306F mikefarah/yq \u306E\u95A2\u6570\uFF08jq \u306B\u306F\u306A\u3044\uFF09`,`${r(_)} is a mikefarah/yq function (jq has none)`]}),n.push({label:r(_),v4:rs[_]??"4.0.0",kislyuk:!1,v3:!1})):tn.has(_)?(t.push({flavor:"kislyuk",weight:2,why:[`${r(_)} \u306F jq \u306E\u95A2\u6570\uFF08mikefarah/yq \u306B\u306F\u306A\u3044\uFF09`,`${r(_)} is a jq function (mikefarah/yq has none)`]}),n.push({label:r(_),v4:null,kislyuk:!0,v3:!1})):rs[_]&&n.push({label:r(_),v4:rs[_],kislyuk:!0,v3:!1})}/(^|[^.])\.\.\.(?!\.)/.test(l)&&(t.push({flavor:"mikefarah4",weight:2,why:["`...` \u306F mikefarah/yq \u306E\u6F14\u7B97\u5B50","`...` is a mikefarah/yq operator"]}),n.push({label:"`...`",v4:"4.2.1",kislyuk:!1,v3:!1})),/\bif\b[\s\S]*\bthen\b/.test(l)&&n.push({label:"`if \u2026 then`",v4:"4.54.1",kislyuk:!0,v3:!1}),/\[\s*-?\d*\s*:\s*-?\d*\s*\]/.test(l)&&n.push({label:"`.[m:n]`",v4:"4.53.6",kislyuk:!0,v3:!1}),/\|=|\+=|-=/.test(l)&&n.push({label:"`|=`",v4:"4.3.2",kislyuk:!0,v3:!1}),/\bas\s+\$/.test(l)&&n.push({label:"`as $x`",v4:"4.5.1",kislyuk:!0,v3:!1})}let c=e.doc??"",u=(g,_,b,w)=>{let k=g.exec(c);k&&t.push({flavor:_,weight:1,why:[`\u540C\u3058\u30D5\u30A1\u30A4\u30EB\u306E ${r(k[0].trim().slice(0,60))} \u304B\u3089 ${b}`,`${r(k[0].trim().slice(0,60))} in the same file suggests ${w}`]})},h=/mikefarah\/yq[^\s'"]*?[/:@]v?([34])(?:\.\d+){0,2}/.exec(c);h&&t.push({flavor:h[1]==="3"?"mikefarah3":"mikefarah4",weight:1,why:[`\u540C\u3058\u30D5\u30A1\u30A4\u30EB\u306E ${r(h[0])} \u304B\u3089`,`from ${r(h[0])} in the same file`]}),u(/\b(pip3?|pipx)\s+install\b[^\n]*\byq\b/,"kislyuk","kislyuk/yq \u3068\u5224\u65AD","kislyuk/yq"),u(/\bapt(-get)?\s+(?:-\S+\s+)*install\b[^\n]*\byq\b/,"kislyuk","kislyuk/yq \u3068\u5224\u65AD\uFF08Debian\u30FBUbuntu \u306E yq \u30D1\u30C3\u30B1\u30FC\u30B8\u306F kislyuk/yq\uFF09","kislyuk/yq (the Debian/Ubuntu yq package is kislyuk/yq)"),u(/\bbrew\s+install\b[^\n]*\bpython-yq\b/,"kislyuk","kislyuk/yq \u3068\u5224\u65AD","kislyuk/yq"),u(/\b(brew|snap)\s+install\b(?![^\n]*python-yq)[^\n]*\byq\b/,"mikefarah4","mikefarah/yq \u3068\u5224\u65AD","mikefarah/yq"),e.host?.startsWith("GitHub Actions")&&t.push({flavor:"mikefarah4",weight:1,why:["GitHub Actions \u306E\u30E9\u30F3\u30CA\u30FC\u306B\u306F mikefarah/yq v4 \u304C\u5165\u3063\u3066\u3044\u308B","GitHub Actions runners come with mikefarah/yq v4"]});let d="mikefarah4",p=!1,f=[];if(e.setting&&e.setting!=="auto"&&e.setting in ri)d=e.setting,p=!0,f.push(["\u8A2D\u5B9A `bashExplainer.yq.flavor` \u306E\u6307\u5B9A","the `bashExplainer.yq.flavor` setting"]);else if(t.length){let g=_=>t.filter(b=>b.flavor===_).reduce((b,w)=>b+w.weight,0);d=["mikefarah4","kislyuk","mikefarah3"].reduce((_,b)=>g(b)>g(_)?b:_),p=!0}f.push(...t.filter(g=>g.flavor===d).map(g=>g.why));let m={};for(let g of["mikefarah4","kislyuk","mikefarah3"]){let _=n.filter(w=>g==="mikefarah4"?w.v4===null:g==="kislyuk"?!w.kislyuk:!w.v3).map(w=>w.label);g==="mikefarah3"&&l!==void 0&&!(o&&ot[o])&&_.unshift(ai);let b=g==="mikefarah4"?n.reduce((w,k)=>k.v4?ol(k.v4,w):w,"4.0.0"):void 0;m[g]={ok:!_.length,min:b,missing:[...new Set(_)]}}return{flavor:d,decided:p,reasons:f,compat:m,expression:a}}var ai="\0jq-style";function oi(s,e){let t=(u,h)=>e==="ja"?u:h,n=u=>ri[u][e==="ja"?0:1],r=u=>u==="kislyuk"?"kislyuk/yq":n(u),a=u=>u===ai?t("jq \u5F62\u5F0F\u306E\u5F0F","jq-style expressions"):u,o=u=>u==="mikefarah4"&&s.compat.mikefarah4.min&&s.compat.mikefarah4.min!=="4.0.0"?t(`\uFF08v${s.compat.mikefarah4.min} \u4EE5\u964D\uFF09`,` (v${s.compat.mikefarah4.min} or later)`):"",l=s.decided?t(`yq: ${n(s.flavor)}${o(s.flavor)||(n(s.flavor).endsWith("\uFF09")?"":" ")}\u3068\u3057\u3066\u89E3\u8AAC\u3002\u6839\u62E0: ${s.reasons.map(u=>u[0]).join("\u3001")}`,`yq: explained as ${n(s.flavor)}${o(s.flavor)}. Because: ${s.reasons.map(u=>u[1]).join("; ")}`):t(`yq: \u3069\u306E yq \u304B\u5224\u5B9A\u3067\u304D\u306A\u3044\u305F\u3081\u3001${n("mikefarah4")}${o("mikefarah4")||" "}\u3068\u3057\u3066\u89E3\u8AAC\uFF08\u5229\u7528\u8005\u304C\u591A\u3044\u305F\u3081\uFF09`,`yq: which yq this is cannot be told, so it is explained as ${n("mikefarah4")}${o("mikefarah4")} (the most common one)`),c=["mikefarah4","kislyuk","mikefarah3"].map(u=>{let h=s.compat[u];if(h.ok){let p=u==="kislyuk"&&s.flavor!=="kislyuk"?t("\u3002\u51FA\u529B\u306F JSON\uFF08YAML \u306B\u3059\u308B\u306B\u306F `-y`\uFF09","; output is JSON (`-y` for YAML)"):"";return`${r(u)}${u==="mikefarah4"?o(u):""} \u2713${p}`}let d=h.missing.slice(0,2).map(a);return`${r(u)} \u2717${t(`\uFF08${d.join("\u30FB")} \u304C\u4F7F\u3048\u306A\u3044\uFF09`,` (no ${d.join(", ")})`)}`});return[l,t(`\u4E92\u63DB\u6027: ${c.join(" \uFF0F ")}`,`Works with: ${c.join(" / ")}`)]}function li(s,e){let t=(a,o)=>e==="ja"?a:o,n=[],r=0;for(;r<s.length;){if(s[r]==="."){n.push({start:r,end:r+1,kind:"operator",children:[],explanation:t("`.`: 1\u6BB5\u4E0B\u306E\u968E\u5C64\u3078","`.`: one level down")}),r++;continue}let a,o=s.slice(r),l=0,c="variable",u="";if((a=/^\[(\d+)\]/.exec(o))?(l=a[0].length,u=t(`\u914D\u5217\u306E ${Number(a[1])+1} \u756A\u76EE\u306E\u8981\u7D20\uFF080 \u59CB\u307E\u308A\uFF09`,`element ${a[1]} of the array (from 0)`)):(a=/^\[\*\]/.exec(o))?(l=3,c="pattern",u=t("\u914D\u5217\u306E\u3059\u3079\u3066\u306E\u8981\u7D20","every element of the array")):(a=/^\[\+\]/.exec(o))?(l=3,c="operator",u=t("\u914D\u5217\u306E\u672B\u5C3E\u306B\u8FFD\u52A0\u3059\u308B\u4F4D\u7F6E\uFF08write \u3067\u4F7F\u3046\uFF09","a new element at the end of the array (for write)")):(a=/^\(([^)]*?)(==|!=)([^)]*)\)/.exec(o))?(l=a[0].length,c="pattern",u=t(`\`${a[1]}\` \u304C \`${a[3]}\` ${a[2]==="=="?"\u306B\u4E00\u81F4\u3059\u308B":"\u3067\u306A\u3044"}\u8981\u7D20\uFF08\`*\` \u306F\u30EF\u30A4\u30EB\u30C9\u30AB\u30FC\u30C9\uFF09`,`the elements whose \`${a[1]}\` ${a[2]==="=="?"matches":"does not match"} \`${a[3]}\` (\`*\` is a wildcard)`)):(a=/^\(\.==([^)]*)\)/.exec(o))?(l=a[0].length,c="pattern",u=t(`\u5024\u304C \`${a[1]}\` \u306E\u8981\u7D20`,`the elements equal to \`${a[1]}\``)):(a=/^\*\*/.exec(o))?(l=2,c="pattern",u=t("`**`: \u4EFB\u610F\u306E\u6DF1\u3055\u306E\u3059\u3079\u3066\u306E\u5B50\u5B6B","`**`: every descendant at any depth")):(a=/^"([^"]*)"/.exec(o))?(l=a[0].length,u=t(`\u30AD\u30FC \`${a[1]}\`\uFF08\`.\` \u3092\u542B\u3080\u30AD\u30FC\u306F\u30AF\u30A9\u30FC\u30C8\u3059\u308B\uFF09`,`the key \`${a[1]}\` (keys containing \`.\` are quoted)`)):(a=/^[^.[(]+/.exec(o))&&(l=a[0].length,a[0].includes("*")?(c="pattern",u=t(`\`${a[0]}\` \u306B\u4E00\u81F4\u3059\u308B\u30AD\u30FC\uFF08\`*\` \u306F\u30EF\u30A4\u30EB\u30C9\u30AB\u30FC\u30C9\uFF09`,`keys matching \`${a[0]}\` (\`*\` is a wildcard)`)):u=t(`\u30AD\u30FC \`${a[0]}\``,`the key \`${a[0]}\``)),!l)return;n.push({start:r,end:r+l,kind:c,children:[],explanation:u}),r+=l}return n.length?{tokens:n}:void 0}var ll=new Set(["select","map","has","length","to_entries","with_entries","from_entries","sort","sort_by","unique","unique_by","group_by","flatten","split","join","test","any","all","reverse","contains","del","not","min","max","map_values","type","tostring"]);function ci(s){let e;try{e=We(s)}catch{return!1}return e.some(t=>t.type==="fmt"||t.type==="kw"&&!["and","or","as"].includes(t.text))||e.some(t=>t.type==="op"&&t.text==="...")?!1:e.filter(t=>t.type==="ident").every(t=>ll.has(t.text)||t.text==="true"||t.text==="false"||t.text==="null")}var Be=class extends Error{},di=/^[-+]?(\d[\d_]*(\.\d*)?|\.\d+)([eE][-+]?\d+)?$|^0x[0-9a-fA-F]+$|^0o[0-7]+$|^[-+]?\.(inf|Inf|INF)$|^\.(nan|NaN|NAN)$/,pi=/^(true|True|TRUE|false|False|FALSE|null|Null|NULL|~|)$/,cl=/^(y|Y|yes|Yes|YES|n|N|no|No|NO|on|On|ON|off|Off|OFF)$|^[-+]?\d[\d_]*(:[0-5]?\d)+(\.\d*)?$|^0b[01_]+$/;function ul(s,e){return pi.test(s)||di.test(s)||e==="kislyuk"&&cl.test(s)||/^[\s]|[\s]$/.test(s)||/^[[\]{},#&*!|>'"%@`]/.test(s)||/^[-?:](\s|$)/.test(s)?!0:/: |:$| #|[\t]/.test(s)}function ui(s,e){if(s===null)return"null";if(typeof s=="boolean")return String(s);if(typeof s=="number")return Number.isInteger(s)||Math.abs(s)>=1e-4?String(s):(()=>{throw new Be("number")})();if(typeof s!="string")throw new Be("not a scalar");return ul(s,e)?e==="mikefarah"&&(pi.test(s)||di.test(s))||s.includes("'")&&e==="mikefarah"?JSON.stringify(s):`'${s.replace(/'/g,"''")}'`:s}var hi=s=>typeof s=="object"&&s!==null&&!Array.isArray(s);function Je(s,e){if(typeof s=="string"&&s.includes(`
70
+ `).map(vt),n("\u5B9F\u884C\u3055\u308C\u308B\u30B3\u30DE\u30F3\u30C9","Commands that run"))}}var Qo=[":-",":=",":+",":?","##","%%","//","/#","/%","^^",",,","-","=","+","?","#","%","/","^",","];function as(s,e,t){let n=0,r;for(let a=e;a<s.length;a++){let o=s[a];if(o==="\\"){a++;continue}if(r){o===r&&(r=void 0);continue}if(o==='"'||o==="'"){r=o;continue}if(o==="$"&&(s[a+1]==="{"||s[a+1]==="(")){n++,a++;continue}if(o==="{"||o==="("||o==="["){n++;continue}if((o==="}"||o===")"||o==="]")&&n>0){n--;continue}if(n===0&&o===t)return a}return-1}function Et(s){if(!s.startsWith("${")||!s.endsWith("}"))return;let e=s.slice(2,-1),t=2,n=[],r=(f,m,g)=>{if(f==="offset"||f==="length"){for(;m<g&&e[m]===" ";)m++;for(;g>m&&e[g-1]===" ";)g--}n.push({role:f,text:e.slice(m,g),start:t+m,end:t+g})},a=0,o;/^[#!][A-Za-z_0-9@*#?$!]/.test(e)&&(o=e[0],r("prefix",0,1),a=1);let l=/^([A-Za-z_][A-Za-z0-9_]*|\d+|[@*#?$!0-])/.exec(e.slice(a));if(!l)return;let c=l[1];r("name",a,a+c.length),a+=c.length;let u;if(e[a]==="["){let f=as(e,a+1,"]");if(f<0)return;u=e.slice(a+1,f),r("subscript",a,f+1),a=f+1}let h=e.slice(a);if(!h)return{prefix:o,name:c,subscript:u,parts:n};if(o==="!"&&(h==="*"||h==="@"))return r("op",a,a+1),{prefix:o,name:c,subscript:u,op:h,parts:n};if(o)return;if(h[0]==="@"&&h.length===2)return r("op",a,a+1),r("transform",a+1,a+2),{name:c,subscript:u,op:"@",parts:n};if(h[0]===":"&&!/^:[-=+?]/.test(h)){let f=as(e,a+1,":");return r("op",a,a+1),f<0?r("offset",a+1,e.length):(r("offset",a+1,f),r("op",f,f+1),r("length",f+1,e.length)),{name:c,subscript:u,op:":",parts:n}}let d=Qo.find(f=>h.startsWith(f));if(!d)return;r("op",a,a+d.length);let p=a+d.length;if(d[0]==="/"){let f=as(e,p,"/");f<0?r("pattern",p,e.length):(r("pattern",p,f),r("op",f,f+1),r("replacement",f+1,e.length))}else/^[#%^,]/.test(d)?p<e.length&&r("pattern",p,e.length):r("word",p,e.length);return{name:c,subscript:u,op:d,parts:n}}function at(s){if(/\$|`|[?*+@!]\(/.test(s))return;let e=[],t=n=>{let r=e[e.length-1];r?.type==="text"?r.text+=n:e.push({type:"text",text:n})};for(let n=0;n<s.length;n++){let r=s[n];if(r==="\\"&&n+1<s.length)t(s[++n]);else if(r==='"'||r==="'"){let a=s.indexOf(r,n+1);if(a<0)return;t(s.slice(n+1,a)),n=a}else if(r==="*")e.push({type:"any"});else if(r==="?")e.push({type:"one"});else if(r==="["){let a=s.indexOf("]",n+2);if(a<0){t(r);continue}let o=s.slice(n+1,a),l=o[0]==="!"||o[0]==="^";l&&(o=o.slice(1)),e.push({type:"class",set:o,negated:l}),n=a}else t(r)}return e}function cn(s){return s.map(e=>{switch(e.type){case"any":return"[\\s\\S]*";case"one":return"[\\s\\S]";case"class":return`[${e.negated?"^":""}${e.set.replace(/[\\\]]/g,"\\$&")}]`;case"text":return e.text.replace(/[.*+?^${}()|[\]\\]/g,"\\$&")}}).join("")}function un(s,e){let t=e==="ja";return s.map(n=>{switch(n.type){case"any":return t?"\u4EFB\u610F\u306E\u6587\u5B57\u5217":"any string";case"one":return t?"\u4EFB\u610F\u306E1\u6587\u5B57":"any one character";case"class":{let r=el(n.set,e);return t?`${r}${n.negated?"\u4EE5\u5916\u306E":"\u306E\u3069\u308C\u304B"}1\u6587\u5B57`:`one character ${n.negated?"other than":"from"} ${r}`}case"text":return t?`\u300C${n.text}\u300D`:`"${n.text}"`}}).join(" + ")}function el(s,e){let t={"[:digit:]":["\u6570\u5B57","digits"],"[:alpha:]":["\u82F1\u5B57","letters"],"[:alnum:]":["\u82F1\u6570\u5B57","letters/digits"],"[:space:]":["\u7A7A\u767D","whitespace"],"[:upper:]":["\u5927\u6587\u5B57","uppercase letters"],"[:lower:]":["\u5C0F\u6587\u5B57","lowercase letters"]};return t[s]?t[s][e==="ja"?0:1]:s.replace(/(.)-(.)/g,(n,r,a)=>e==="ja"?`${r}\u301C${a}`:`${r}-${a}`)}function on(s,e,t,n){let r=new RegExp(`^(?:${cn(e)})$`),a=s.length,o=Array.from({length:a+1},(l,c)=>n?a-c:c);for(let l of o){let c=t==="start"?s.slice(0,l):s.slice(a-l);if(r.test(c))return t==="start"?s.slice(l):s.slice(0,a-l)}return s}function ti(s,e,t,n){let r=cn(e);if(!r)return s;if(n==="/#")return s.replace(new RegExp(`^(?:${r})`),()=>t);if(n==="/%"){for(let a=0;a<=s.length;a++)if(new RegExp(`^(?:${r})$`).test(s.slice(a)))return s.slice(0,a)+t;return s}return s.replace(new RegExp(r,n==="//"?"g":""),()=>t)}var tl=["report.tar.gz","/usr/local/bin/app.sh","src/main/app.log","v1.2.3","2026-10-16","hello world","foo_bar_baz","ABC-123-xyz","image.png","key=value"];function ln(s){return tl.find(s)}var nl=s=>`'${s.replace(/'/g,"'\\''")}'`;function si(s,e){let t=e==="ja",n=s.name,r=/^[1-9]\d*$/.test(n),a=m=>/[\s']/.test(m)?`"${m}"`:m||'""',o=(m,g)=>({when:r?t?`${n} \u756A\u76EE\u306E\u5F15\u6570\u304C \`${a(m)}\` \u306E\u3068\u304D`:`When argument ${n} is \`${a(m)}\``:t?`\`${n}=${a(m)}\` \u306E\u3068\u304D`:`When \`${n}=${a(m)}\``,result:g,setup:r?void 0:`${n}=${nl(m)}`}),l=m=>({when:t?`\`${n}=(a b c)\` \u306E\u3068\u304D`:`When \`${n}=(a b c)\``,result:m,setup:`${n}=(a b c)`}),c=(m,g)=>({when:r?t?`${n} \u756A\u76EE\u306E\u5F15\u6570\u304C\u7121\u3044${m?"\u304B\u7A7A\u306E":""}\u3068\u304D`:`When argument ${n} is missing${m?" or empty":""}`:t?`${n} \u304C\u672A\u8A2D\u5B9A${m?"\u304B\u7A7A":""}\u306E\u3068\u304D`:`When ${n} is unset${m?" or empty":""}`,result:g,setup:r?void 0:`unset ${n}`});if(s.prefix==="#")return s.subscript==="@"||s.subscript==="*"?[l("3")]:[o("hello","5")];if(s.prefix==="!")return s.op==="*"||s.op==="@"?[{when:t?`${n}_A \u3068 ${n}_B \u304C\u3042\u308B\u3068\u304D`:`When ${n}_A and ${n}_B are set`,result:`${n}_A ${n}_B`,setup:`${n}_A=1 ${n}_B=2`}]:s.subscript==="@"||s.subscript==="*"?[l("0 1 2")]:[{when:t?`\`${n}=HOME\` \u306E\u3068\u304D`:`When \`${n}=HOME\``,result:t?"$HOME \u306E\u5024":"the value of $HOME"}];if(!s.op)return s.subscript==="@"||s.subscript==="*"?[l("a b c")]:s.subscript&&/^\d+$/.test(s.subscript)?[l(["a","b","c"][Number(s.subscript)]??"")]:void 0;let u=m=>s.parts.find(g=>g.role===m)?.text,h=u("word")??"",d=/^\/|^~/.test(h)?"/data":/^-?\d+$/.test(h)?"42":"hello",p=m=>`${m}${/\$/.test(m)?t?"\uFF08\u5C55\u958B\u7D50\u679C\uFF09":" (expanded)":""}`,f=m=>({when:r?t?`${n} \u756A\u76EE\u306E\u5F15\u6570\u304C\u7A7A\u306E\u3068\u304D`:`When argument ${n} is empty`:t?`\`${n}=""\` \u306E\u3068\u304D`:`When \`${n}=""\``,result:m,setup:r?void 0:`${n}=`});switch(s.op){case":-":case":=":return[c(!0,p(h)),o(d,d)];case"-":case"=":return[c(!1,p(h)),f(""),o(d,d)];case":+":return[o(d,p(h)),c(!0,"")];case"+":return[o(d,p(h)),f(p(h)),c(!1,"")];case":?":case"?":{let m=h||(t?"\uFF08\u65E2\u5B9A\u306E\u30E1\u30C3\u30BB\u30FC\u30B8\uFF09":"(a default message)"),g=t?`\u30A8\u30E9\u30FC\u300C${m}\u300D\u3092\u8868\u793A\u3057\u3066\u7D42\u4E86`:`prints the error "${m}" and exits`;return[c(s.op===":?",g),o(d,d)]}case"#":case"##":case"%":case"%%":{let m=at(u("pattern")??"");if(!m)return;let g=s.op[0]==="#"?"start":"end",_=s.op.length===2,b=y=>on(y,m,g,_)!==y,w=ln(y=>b(y)&&on(y,m,g,!0)!==on(y,m,g,!1))??ln(b)??sl(m,g);return w?[o(w,on(w,m,g,_))]:void 0}case"/":case"//":case"/#":case"/%":{let m=at(u("pattern")??""),g=u("replacement")??"";if(!m||/[$`]/.test(g))return;let _=g.replace(/^["']|["']$/g,""),b=new RegExp(cn(m)),y=(s.op==="/"||s.op==="//"?ln(N=>(N.match(new RegExp(cn(m),"g"))??[]).length>1)??ni(m,s.op):void 0)??ln(N=>b.test(N)&&ti(N,m,_,s.op)!==N)??ni(m,s.op);return y?[o(y,ti(y,m,_,s.op))]:void 0}case"^":return[o("hello world","Hello world")];case"^^":return[o("hello world","HELLO WORLD")];case",":return[o("HELLO World","hELLO World")];case",,":return[o("HELLO World","hello world")];case":":{let m=u("offset")?.trim(),g=u("length")?.trim();if(!m||!/^-?\d+$/.test(m)||g!==void 0&&!/^-?\d+$/.test(g))return;let _="abcdefgh",b=Number(m),w=b<0?Math.max(0,_.length+b):b,y=_.length;return g!==void 0&&(y=Number(g)<0?_.length+Number(g):w+Number(g)),[o(_,_.slice(w,Math.max(w,y)))]}case"@":{let m=u("transform"),g={Q:["it's","'it'\\''s'"],E:["a\\tb",t?"a<\u30BF\u30D6>b":"a<TAB>b"],U:["hello","HELLO"],u:["hello","Hello"],L:["HELLO","hello"],A:["abc",`${n}='abc'`],P:["\\u@\\h",t?"\u30E6\u30FC\u30B6\u30FC\u540D@\u30DB\u30B9\u30C8\u540D":"user@host"]},_=m&&g[m];return _?[o(_[0],_[1])]:void 0}}}function sl(s,e){let t=s.map(n=>n.type==="text"?n.text:n.type==="any"?"xx":n.type==="one"?"x":n.negated?"_":n.set[0]).join("");if(t)return e==="start"?`${t}name`:`name${t}`}function ni(s,e){let t=s.map(n=>n.type==="text"?n.text:n.type==="any"?"xx":n.type==="one"?"x":n.negated?"_":n.set[0]).join("");if(t)return e==="/#"?`${t}-abc`:e==="/%"?`abc-${t}`:/\w/.test(t)?`a-${t}-b-${t}`:`foo${t}bar${t}baz`}var os={":-":["\u65E2\u5B9A\u5024\u306E\u6F14\u7B97\u5B50: \u5DE6\u306E\u5909\u6570\u304C\u672A\u8A2D\u5B9A\u307E\u305F\u306F\u7A7A\u306A\u3089\u53F3\u306E\u5024\u3092\u4F7F\u3046\uFF08`:` \u304C\u3042\u308B\u3068\u7A7A\u6587\u5B57\u3082\u672A\u8A2D\u5B9A\u3068\u540C\u3058\u6271\u3044\uFF09","Default operator: use the right side if the variable is unset or empty (the `:` makes empty count as unset)"],"-":["\u65E2\u5B9A\u5024\u306E\u6F14\u7B97\u5B50: \u5DE6\u306E\u5909\u6570\u304C\u672A\u8A2D\u5B9A\u306E\u3068\u304D\u3060\u3051\u53F3\u306E\u5024\u3092\u4F7F\u3046\uFF08\u7A7A\u6587\u5B57\u306A\u3089\u7A7A\u306E\u307E\u307E\uFF09","Default operator: use the right side only if the variable is unset (empty stays empty)"],":=":["\u65E2\u5B9A\u5024\u306E\u4EE3\u5165\u6F14\u7B97\u5B50: \u672A\u8A2D\u5B9A\u307E\u305F\u306F\u7A7A\u306A\u3089\u53F3\u306E\u5024\u3092\u5909\u6570\u306B\u4EE3\u5165\u3057\u3066\u304B\u3089\u4F7F\u3046","Assign-default operator: if unset or empty, assign the right side to the variable and use it"],"=":["\u65E2\u5B9A\u5024\u306E\u4EE3\u5165\u6F14\u7B97\u5B50: \u672A\u8A2D\u5B9A\u306E\u3068\u304D\u3060\u3051\u53F3\u306E\u5024\u3092\u5909\u6570\u306B\u4EE3\u5165\u3057\u3066\u304B\u3089\u4F7F\u3046","Assign-default operator: if unset, assign the right side and use it"],":+":["\u4EE3\u66FF\u5024\u306E\u6F14\u7B97\u5B50: \u5909\u6570\u304C\u8A2D\u5B9A\u6E08\u307F\u304B\u3064\u7A7A\u3067\u306A\u3044\u3068\u304D\u3060\u3051\u53F3\u306E\u5024\u3092\u4F7F\u3046","Alternate-value operator: use the right side only if the variable is set and non-empty"],"+":["\u4EE3\u66FF\u5024\u306E\u6F14\u7B97\u5B50: \u5909\u6570\u304C\u8A2D\u5B9A\u6E08\u307F\u306A\u3089\uFF08\u7A7A\u3067\u3082\uFF09\u53F3\u306E\u5024\u3092\u4F7F\u3046","Alternate-value operator: use the right side if the variable is set (even if empty)"],":?":["\u30A8\u30E9\u30FC\u6F14\u7B97\u5B50: \u672A\u8A2D\u5B9A\u307E\u305F\u306F\u7A7A\u306A\u3089\u30E1\u30C3\u30BB\u30FC\u30B8\u3092\u8868\u793A\u3057\u3066\u30B9\u30AF\u30EA\u30D7\u30C8\u3092\u7D42\u4E86\u3059\u308B","Error operator: if unset or empty, print the message and exit"],"?":["\u30A8\u30E9\u30FC\u6F14\u7B97\u5B50: \u672A\u8A2D\u5B9A\u306A\u3089\u30E1\u30C3\u30BB\u30FC\u30B8\u3092\u8868\u793A\u3057\u3066\u30B9\u30AF\u30EA\u30D7\u30C8\u3092\u7D42\u4E86\u3059\u308B","Error operator: if unset, print the message and exit"],"#":["\u5148\u982D\u304B\u3089\u3001\u30D1\u30BF\u30FC\u30F3\u306B\u4E00\u81F4\u3059\u308B\u6700\u3082\u77ED\u3044\u90E8\u5206\u3092\u53D6\u308A\u9664\u304F","Remove the shortest prefix matching the pattern"],"##":["\u5148\u982D\u304B\u3089\u3001\u30D1\u30BF\u30FC\u30F3\u306B\u4E00\u81F4\u3059\u308B\u6700\u3082\u9577\u3044\u90E8\u5206\u3092\u53D6\u308A\u9664\u304F","Remove the longest prefix matching the pattern"],"%":["\u672B\u5C3E\u304B\u3089\u3001\u30D1\u30BF\u30FC\u30F3\u306B\u4E00\u81F4\u3059\u308B\u6700\u3082\u77ED\u3044\u90E8\u5206\u3092\u53D6\u308A\u9664\u304F","Remove the shortest suffix matching the pattern"],"%%":["\u672B\u5C3E\u304B\u3089\u3001\u30D1\u30BF\u30FC\u30F3\u306B\u4E00\u81F4\u3059\u308B\u6700\u3082\u9577\u3044\u90E8\u5206\u3092\u53D6\u308A\u9664\u304F","Remove the longest suffix matching the pattern"],"/":["\u6700\u521D\u306B\u4E00\u81F4\u3057\u305F\u90E8\u5206\u3060\u3051\u3092\u7F6E\u63DB\u3059\u308B","Replace the first match"],"//":["\u4E00\u81F4\u3057\u305F\u90E8\u5206\u3092\u3059\u3079\u3066\u7F6E\u63DB\u3059\u308B","Replace every match"],"/#":["\u5148\u982D\u3067\u4E00\u81F4\u3057\u305F\u5834\u5408\u3060\u3051\u7F6E\u63DB\u3059\u308B","Replace a match at the start"],"/%":["\u672B\u5C3E\u3067\u4E00\u81F4\u3057\u305F\u5834\u5408\u3060\u3051\u7F6E\u63DB\u3059\u308B","Replace a match at the end"],"^":["\u5148\u982D\u306E1\u6587\u5B57\u3092\u5927\u6587\u5B57\u306B\u3059\u308B","Uppercase the first character"],"^^":["\u3059\u3079\u3066\u306E\u6587\u5B57\u3092\u5927\u6587\u5B57\u306B\u3059\u308B","Uppercase every character"],",":["\u5148\u982D\u306E1\u6587\u5B57\u3092\u5C0F\u6587\u5B57\u306B\u3059\u308B","Lowercase the first character"],",,":["\u3059\u3079\u3066\u306E\u6587\u5B57\u3092\u5C0F\u6587\u5B57\u306B\u3059\u308B","Lowercase every character"],":":["\u90E8\u5206\u6587\u5B57\u5217\u3092\u53D6\u308A\u51FA\u3059\uFF08`:\u958B\u59CB\u4F4D\u7F6E:\u9577\u3055`\uFF09","Take a substring (`:offset:length`)"],"@":["\u5024\u3092\u5909\u63DB\u3059\u308B\uFF08`@` \u306E\u5F8C\u306E1\u6587\u5B57\u3067\u5909\u63DB\u306E\u7A2E\u985E\u3092\u6307\u5B9A\uFF09","Transform the value (the letter after `@` selects how)"]},ls={Q:["\u30B7\u30A7\u30EB\u306B\u518D\u5165\u529B\u3067\u304D\u308B\u5F62\u306B\u30AF\u30A9\u30FC\u30C8\u3059\u308B","quote it so it can be reused as shell input"],E:["`\\n` \u3084 `\\t` \u306A\u3069\u306E\u30D0\u30C3\u30AF\u30B9\u30E9\u30C3\u30B7\u30E5\u30A8\u30B9\u30B1\u30FC\u30D7\u3092\u5C55\u958B\u3059\u308B\uFF08`$'\u2026'` \u3068\u540C\u3058\uFF09","expand backslash escapes like `\\n` (as in `$'\u2026'`)"],P:["\u30D7\u30ED\u30F3\u30D7\u30C8\u6587\u5B57\u5217\uFF08PS1 \u3068\u540C\u3058\u66F8\u5F0F\uFF09\u3068\u3057\u3066\u5C55\u958B\u3059\u308B","expand it as a prompt string (like PS1)"],A:["\u540C\u3058\u5024\u3092\u518D\u73FE\u3059\u308B\u4EE3\u5165\u6587\uFF08`name='value'`\uFF09\u306B\u3059\u308B","turn it into an assignment statement that recreates it"],K:["\u9023\u60F3\u914D\u5217\u3092\u30AD\u30FC\u3068\u5024\u306E\u7D44\u3068\u3057\u3066\u8868\u793A\u3059\u308B","show an associative array as key/value pairs"],k:["\u9023\u60F3\u914D\u5217\u3092\u30AD\u30FC\u3068\u5024\u3092\u4EA4\u4E92\u306B\u4E26\u3079\u305F\u5358\u8A9E\u306B\u5206\u3051\u308B","expand an associative array into alternating keys and values"],a:["\u5909\u6570\u306E\u5C5E\u6027\u30D5\u30E9\u30B0\uFF08`declare` \u306E\u30AA\u30D7\u30B7\u30E7\u30F3\u6587\u5B57\uFF09\u3092\u8FD4\u3059","give the variable's attribute flags (as for `declare`)"],U:["\u3059\u3079\u3066\u5927\u6587\u5B57\u306B\u3059\u308B","uppercase every character"],u:["\u5148\u982D\u306E1\u6587\u5B57\u3092\u5927\u6587\u5B57\u306B\u3059\u308B","uppercase the first character"],L:["\u3059\u3079\u3066\u5C0F\u6587\u5B57\u306B\u3059\u308B","lowercase every character"]};var rl=new Set([";","+"]);function us(s){return/^'.*'$/.test(s)||/^".*"$/.test(s)?s.slice(1,-1):s.replace(/^\\/,"")}function ri(s){let e=us(s);return e.startsWith("-")&&e.length>1||e==="("||e==="!"||e===","}var cs=class{constructor(e,t){this.words=e;this.arity=t}words;arity;i=0;peek(){return this.words[this.i]}or(){let e=[this.and()],t=[];for(;this.peek()==="-o"||this.peek()==="-or";)t.push(this.i++),e.push(this.and());return e.length===1?e[0]:{type:"or",children:e,ops:t}}and(){let e=[this.unary()],t=[];for(;;){let n=this.peek();if(n===void 0||n===")"||n==="-o"||n==="-or"||n===",")break;(n==="-a"||n==="-and")&&t.push(this.i++),e.push(this.unary())}return e.length===1?e[0]:{type:"and",children:e,ops:t}}unary(){let e=this.peek();if(e===void 0)throw new Error("missing expression");if(e==="!"||e==="-not")return{type:"not",op:this.i++,child:this.unary()};if(e==="("){let r=this.i++,a=this.or();if(this.peek()!==")")throw new Error("missing )");return{type:"group",open:r,close:this.i++,child:a}}let t=this.i++,n=this.arity(e);if(n==="until"){for(;this.i<this.words.length&&!rl.has(this.words[this.i]);)this.i++;this.i=Math.min(this.i+1,this.words.length)}else this.i=Math.min(this.i+n,this.words.length);return{type:"primary",from:t,to:this.i-1,name:e,args:this.words.slice(t+1,this.i)}}};function ii(s,e){let t=new cs(s,e);try{let n=t.or();return t.i===s.length?n:void 0}catch{return}}var ai=new Set(["-print","-print0","-printf","-fprint","-fprint0","-fprintf","-ls","-fls","-delete","-exec","-execdir","-ok","-okdir","-quit"]);function hn(s){switch(s.type){case"primary":return ai.has(s.name);case"not":return hn(s.child);case"group":return hn(s.child);default:return s.children.some(hn)}}function il(s,e){let t=O(e),n=s.args[0]??"",r=(o,l,c)=>{let u=n.replace(/^[+-]/,"");return n.startsWith("+")?t(`${u}${o}\u3088\u308A\u524D\u306B${c[0]}`,`${c[1]} more than ${u} ${l} ago`):n.startsWith("-")?t(`${u}${o}\u4EE5\u5185\u306B${c[0]}`,`${c[1]} less than ${u} ${l} ago`):t(`\u3061\u3087\u3046\u3069${u}${o}\u524D\u306B${c[0]}`,`${c[1]} exactly ${u} ${l} ago`)},a={f:["\u901A\u5E38\u30D5\u30A1\u30A4\u30EB","a regular file"],d:["\u30C7\u30A3\u30EC\u30AF\u30C8\u30EA","a directory"],l:["\u30B7\u30F3\u30DC\u30EA\u30C3\u30AF\u30EA\u30F3\u30AF","a symlink"],p:["\u540D\u524D\u4ED8\u304D\u30D1\u30A4\u30D7","a named pipe"],s:["\u30BD\u30B1\u30C3\u30C8","a socket"],b:["\u30D6\u30ED\u30C3\u30AF\u30C7\u30D0\u30A4\u30B9","a block device"],c:["\u30AD\u30E3\u30E9\u30AF\u30BF\u30C7\u30D0\u30A4\u30B9","a character device"]};switch(s.name){case"-name":return t(`\u540D\u524D\u304C ${n} \u306B\u4E00\u81F4`,`name matches ${n}`);case"-iname":return t(`\u540D\u524D\u304C ${n} \u306B\u4E00\u81F4\uFF08\u5927\u5C0F\u6587\u5B57\u533A\u5225\u306A\u3057\uFF09`,`name matches ${n} (any case)`);case"-path":case"-wholename":return t(`\u30D1\u30B9\u304C ${n} \u306B\u4E00\u81F4`,`path matches ${n}`);case"-ipath":return t(`\u30D1\u30B9\u304C ${n} \u306B\u4E00\u81F4\uFF08\u5927\u5C0F\u6587\u5B57\u533A\u5225\u306A\u3057\uFF09`,`path matches ${n} (any case)`);case"-regex":return t(`\u30D1\u30B9\u5168\u4F53\u304C\u6B63\u898F\u8868\u73FE ${n} \u306B\u4E00\u81F4`,`the whole path matches the regex ${n}`);case"-type":return n.split(",").map(o=>a[o]?t(a[o][0],a[o][1]):o).join(t("\u304B"," or "));case"-mtime":return r("\u65E5","days",["\u66F4\u65B0","modified"]);case"-mmin":return r("\u5206","minutes",["\u66F4\u65B0","modified"]);case"-atime":return r("\u65E5","days",["\u30A2\u30AF\u30BB\u30B9","accessed"]);case"-amin":return r("\u5206","minutes",["\u30A2\u30AF\u30BB\u30B9","accessed"]);case"-ctime":return r("\u65E5","days",["\u72B6\u614B\u5909\u66F4","changed"]);case"-cmin":return r("\u5206","minutes",["\u72B6\u614B\u5909\u66F4","changed"]);case"-newer":return t(`${n} \u3088\u308A\u65B0\u3057\u3044`,`newer than ${n}`);case"-size":{let o=n.replace(/^[+-]/,"");return n.startsWith("+")?t(`\u30B5\u30A4\u30BA\u304C ${o} \u3088\u308A\u5927\u304D\u3044`,`larger than ${o}`):n.startsWith("-")?t(`\u30B5\u30A4\u30BA\u304C ${o} \u3088\u308A\u5C0F\u3055\u3044`,`smaller than ${o}`):t(`\u30B5\u30A4\u30BA\u304C\u3061\u3087\u3046\u3069 ${o}`,`exactly ${o}`)}case"-empty":return t("\u7A7A","empty");case"-user":return t(`\u6240\u6709\u8005\u304C ${n}`,`owned by ${n}`);case"-group":return t(`\u30B0\u30EB\u30FC\u30D7\u304C ${n}`,`group ${n}`);case"-perm":return t(`\u6A29\u9650\u304C ${n}`,`permissions ${n}`);case"-maxdepth":return t(`\u6DF1\u3055 ${n} \u307E\u3067`,`at most ${n} levels deep`);case"-mindepth":return t(`\u6DF1\u3055 ${n} \u4EE5\u4E0A`,`at least ${n} levels deep`);case"-readable":return t("\u8AAD\u307F\u53D6\u308A\u53EF\u80FD","readable");case"-writable":return t("\u66F8\u304D\u8FBC\u307F\u53EF\u80FD","writable");case"-executable":return t("\u5B9F\u884C\u53EF\u80FD","executable");case"-true":return t("\u5E38\u306B\u771F","always true");case"-false":return t("\u5E38\u306B\u507D","always false");case"-prune":return t("\u305D\u306E\u4E2D\u306B\u306F\u5165\u3089\u305A\u30B9\u30AD\u30C3\u30D7","skip it without descending");case"-print":return t("\u8868\u793A","print it");case"-print0":return t("NUL \u533A\u5207\u308A\u3067\u8868\u793A","print it NUL-terminated");case"-printf":return t(`\u66F8\u5F0F ${n} \u3067\u8868\u793A`,`print it with the format ${n}`);case"-ls":return t("\u8A73\u7D30\u3092\u8868\u793A","list it in detail");case"-delete":return t("\u524A\u9664","delete it");case"-quit":return t("\u3059\u3050\u306B\u7D42\u4E86","quit");case"-exec":case"-execdir":case"-ok":{let o=s.args.slice(0,-1).join(" "),l=s.args[s.args.length-1]==="+";return t(`\u300C${o}\u300D\u3092${l?"\u307E\u3068\u3081\u3066":"1\u4EF6\u305A\u3064"}\u5B9F\u884C`,`run "${o}"${l?" on all at once":" for each"}`)}default:return s.name+(n?` ${n}`:"")}}function qe(s,e,t=!1){let n=O(e);switch(s.type){case"primary":return il(s,e);case"not":return n(`\u300C${qe(s.child,e,!0)}\u300D\u3067\u306F\u306A\u3044`,`not (${qe(s.child,e,!0)})`);case"group":return n(`\uFF08${qe(s.child,e)}\uFF09`,`(${qe(s.child,e)})`);case"or":{let r=s.children.map(a=>qe(a,e,!0)).join(n("\u3001\u307E\u305F\u306F ","; or "));return t?n(`\uFF08${r}\uFF09`,`(${r})`):r}case"and":{let r=s.children.filter(c=>!(c.type==="primary"&&(ai.has(c.name)||c.name==="-prune"))),a=s.children.filter(c=>!r.includes(c)),o=r.map(c=>qe(c,e,!0)).join(n(" \u304B\u3064 "," and "));if(!a.length)return o;let l=a.map(c=>qe(c,e,!0)).join(n("\u3057\u3066",", then "));return o?n(`${o}\u306A\u3089${l}`,`if ${o}: ${l}`):l}}}function oi(s,e){let t=O(e),n=qe(s,e),a=s.type==="or"&&s.children[0].type==="and"&&s.children[0].children.some(o=>o.type==="primary"&&o.name==="-prune")?t("\uFF08`-prune -o` \u306F\u3001\u7279\u5B9A\u306E\u30C7\u30A3\u30EC\u30AF\u30C8\u30EA\u3092\u63A2\u7D22\u304B\u3089\u9664\u5916\u3059\u308B\u5B9A\u756A\u306E\u66F8\u304D\u65B9\uFF09"," (`-prune -o` is the usual way to exclude a directory)"):"";return hn(s)?t(`\u691C\u7D22\u6761\u4EF6\u3068\u51E6\u7406: ${n}${a}`,`Conditions and actions: ${n}${a}`):t(`\u300C${n}\u300D\u306B\u5F53\u3066\u306F\u307E\u308B\u3082\u306E\u3092\u8868\u793A\u3059\u308B\uFF08\u51E6\u7406\u306E\u6307\u5B9A\u304C\u7121\u3044\u306E\u3067 \`-print\` \u304C\u88DC\u308F\u308C\u308B\uFF09${a}`,`Print what matches: ${n} (no action is given, so \`-print\` is implied)${a}`)}function li(s,e){let t=at(s);if(!(!t||!t.some(n=>n.type!=="text")))return O(e)("\u30D1\u30BF\u30FC\u30F3: ","pattern: ")+un(t,e)}function ci(s,e){let t=O(e);if(!/^:?([A-Za-z0-9?]:?)+$/.test(s))return;let n=[],r=[],a=0;for(s[0]===":"&&(n.push({start:0,end:1,kind:"operator",children:[],explanation:t("\u5148\u982D\u306E `:`: \u30A8\u30E9\u30FC\u3092\u81EA\u5206\u3067\u51E6\u7406\u3059\u308B\u30E2\u30FC\u30C9\uFF08\u4E0D\u660E\u306A\u30AA\u30D7\u30B7\u30E7\u30F3\u3067\u306F\u5909\u6570\u306B `?`\u3001\u5024\u306E\u6B20\u3051\u305F\u30AA\u30D7\u30B7\u30E7\u30F3\u3067\u306F `:` \u304C\u5165\u308A\u3001\u305D\u306E\u30AA\u30D7\u30B7\u30E7\u30F3\u6587\u5B57\u304C $OPTARG \u306B\u5165\u308B\u3002\u30A8\u30E9\u30FC\u30E1\u30C3\u30BB\u30FC\u30B8\u306F\u51FA\u306A\u3044\uFF09","Leading `:`: silent error mode (an unknown option sets the variable to `?`, a missing value to `:`, with the option letter in $OPTARG; no messages are printed)")}),a=1);a<s.length;){let o=s[a],l=s[a+1]===":";n.push({start:a,end:a+(l?2:1),kind:"option",children:[],explanation:l?t(`\`${o}:\`: \u30AA\u30D7\u30B7\u30E7\u30F3 -${o} \u306F\u5024\u3092\u53D6\u308B\uFF08\`-${o} \u5024\`\u3002\u5024\u306F $OPTARG \u306B\u5165\u308B\uFF09`,`\`${o}:\`: option -${o} takes a value (\`-${o} VALUE\`, available in $OPTARG)`):t(`\`${o}\`: \u30AA\u30D7\u30B7\u30E7\u30F3 -${o}\uFF08\u5024\u306A\u3057\uFF09`,`\`${o}\`: option -${o} (no value)`)}),r.push(l?t(`-${o} \u5024`,`-${o} VALUE`):`-${o}`),a+=l?2:1}return{tokens:n,note:t(`\u53D7\u3051\u4ED8\u3051\u308B\u30AA\u30D7\u30B7\u30E7\u30F3: ${r.join("\u3001")}`,`accepts ${r.join(", ")}`)}}var di={mikefarah4:["mikefarah/yq v4","mikefarah/yq v4"],kislyuk:["kislyuk/yq\uFF08Python \u7248\u3002jq \u306E\u30E9\u30C3\u30D1\u30FC\uFF09","kislyuk/yq (the Python jq wrapper)"],mikefarah3:["mikefarah/yq v3","mikefarah/yq v3"]},hs={"-P":"4.5.1","--prettyPrint":"4.5.1","-I":"4.0.0","--indent":"4.0.0","-i":"4.0.0","--inplace":"4.0.0","-n":"4.3.2","--null-input":"4.3.2","-f":"4.11.2","--front-matter":"4.11.2","-0":"4.33.3","--nul-output":"4.33.3","-e":"4.0.0","--exit-status":"4.0.0","-N":"4.0.0","--no-doc":"4.0.0","-M":"4.0.0","-C":"4.0.0","-r":"4.0.0"},al={json:"4.12.2",j:"4.12.2",props:"4.12.2",p:"4.12.2",yaml:"4.12.2",y:"4.12.2",xml:"4.17.2",x:"4.17.2",csv:"4.16.2",c:"4.16.2",tsv:"4.16.2",t:"4.16.2",toml:"4.52.5",shell:"4.34.2",s:"4.34.2",lua:"4.40.7",l:"4.40.7"},ol={json:"4.27.5",j:"4.27.5",xml:"4.17.2",x:"4.17.2",csv:"4.27.5",c:"4.27.5",tsv:"4.27.5",t:"4.27.5",toml:"4.33.3",props:"4.20.2",p:"4.20.2",ini:"4.46.1",i:"4.46.1",yaml:"4.17.2",y:"4.17.2",lua:"4.40.7",l:"4.40.7"},ds={keys:"4.4.1",del:"4.1.0",to_entries:"4.8.0",from_entries:"4.8.0",with_entries:"4.8.0",map:"4.16.2",map_values:"4.16.2",sort_by:"4.16.2",sort:"4.16.2",unique:"4.9.8",unique_by:"4.9.8",group_by:"4.14.2",flatten:"4.14.2",env:"4.3.2",strenv:"4.3.2",envsubst:"4.18.1",load:"4.15.1",load_str:"4.17.2",pick:"4.22.1",omit:"4.43.1",split:"4.4.1",join:"4.4.1",test:"4.10.0",sub:"4.7.1",match:"4.10.0",capture:"4.10.0",downcase:"4.21.1",upcase:"4.21.1",to_number:"4.40.7",to_json:"4.14.2",to_yaml:"4.14.2",from_yaml:"4.14.2",line_comment:"4.20.2",head_comment:"4.20.2",foot_comment:"4.20.2",parent:"4.15.1",key:"4.15.1",kind:"4.40.7",split_doc:"4.20.2",document_index:"4.20.2",di:"4.20.2",filename:"4.3.2",eval:"4.19.1",shuffle:"4.31.2",min:"4.44.6",max:"4.44.6",any:"4.9.8",all:"4.9.8",reverse:"4.21.1",pivot:"4.44.6",with:"4.13.5",tostring:"4.43.1",to_string:"4.43.1",trim:"4.27.5",contains:"4.13.5",sort_keys:"4.16.2",now:"4.25.3",ireduce:"4.6.3","@base64":"4.21.1","@base64d":"4.21.1","@json":"4.16.2","@csv":"4.16.2","@tsv":"4.16.2","@yaml":"4.16.2","@sh":"4.31.2"},ll=new Set(["-y","--yaml-output","--yml-output","-Y","--yaml-roundtrip","--yml-roundtrip","--indentless-lists","--indentless","--explicit-start","--explicit-end","-w","--width","--yaml-output-grammar-version","--yml-out-ver","-F","--yaml-frontmatter","--in-place","-S","--sort-keys","--arg","--argjson","--slurpfile","--rawfile","--args","--jsonargs","-R","--raw-input","-a","--ascii-output","--tab","--seq","--stream","-j","--join-output","--slurp"]),cl=new Set(["-o","--output-format","-p","--input-format","-P","--prettyPrint","-I","--front-matter","-0","--nul-output","-N","--no-doc","--expression","--header-preprocess","--xml-attribute-prefix","--xml-content-name","--csv-separator","--properties-separator","--properties-array-brackets","--shell-key-separator","--lua-prefix","--lua-suffix","--lua-globals","--lua-unquoted","--split-exp","--split-exp-file","--security-disable-env-ops","--security-disable-file-ops","--security-enable-system-operator","--string-interpolation","--yaml-compact-seq-indent","--inplace"]),ps=new Set(["-o","--output-format","-p","--input-format","-I","--indent","-f","--front-matter","-s","--split-exp","--expression","--from-file","--xml-attribute-prefix","--xml-content-name","--csv-separator","--properties-separator","--shell-key-separator","--lua-prefix","--lua-suffix","--split-exp-file"]),ui={"--arg":2,"--argjson":2,"--slurpfile":2,"--rawfile":2,"-w":1,"--width":1,"--indent":1,"--yaml-output-grammar-version":1,"--yml-out-ver":1,"-L":1,"-f":1,"--from-file":1},ot={r:"read",read:"read",w:"write",write:"write",d:"delete",delete:"delete",m:"merge",merge:"merge",n:"new",new:"new",p:"prefix",prefix:"prefix",x:"compare",compare:"compare",v:"validate",validate:"validate"},hi=s=>s.split(".").map(Number).reduce((e,t)=>e*1e3+t,0),ul=(s,e)=>hi(s)>=hi(e)?s:e;function pi(s,e={}){let t=[],n=[],r=g=>`\`${g}\``,a,o;for(let g=0;g<s.length;g++){let _=s[g];if(_!==void 0){if(_==="--"){a===void 0&&s[g+1]!==void 0&&(a=g+1);break}if(_.startsWith("-")&&_.length>1){let b=/^(--?[\w-]+)=(.*)$/.exec(_),w=!_.startsWith("--")&&/^-[opI]./.test(_)?[_.slice(0,2),_.slice(2)]:void 0,[y,N]=b?[b[1],b[2]]:w??[_,void 0],R=!!(o&&ot[o]);if(ll.has(y)&&!(y==="-j"&&R)){t.push({flavor:"kislyuk",weight:3,why:[`${r(y)} \u306F kislyuk/yq\uFF08jq\uFF09\u306E\u30AA\u30D7\u30B7\u30E7\u30F3`,`${r(y)} is a kislyuk/yq (jq) option`]}),n.push({label:r(y),v4:null,kislyuk:!0,v3:!1}),g+=ui[y]&&N===void 0?ui[y]:0;continue}if(cl.has(y)&&!R){let v=N??(ps.has(y)?s[g+1]:void 0),E=hs[y]??"4.0.0";(y==="-o"||y==="--output-format")&&v&&(E=al[v]??"4.12.2"),(y==="-p"||y==="--input-format")&&v&&(E=ol[v]??"4.17.2"),t.push({flavor:"mikefarah4",weight:3,why:[`${r(v&&N===void 0?`${y} ${v}`:_)} \u306F mikefarah/yq v4 \u306E\u30AA\u30D7\u30B7\u30E7\u30F3`,`${r(v&&N===void 0?`${y} ${v}`:_)} is a mikefarah/yq v4 option`]}),n.push({label:r(v&&N===void 0?`${y} ${v}`:_),v4:E,kislyuk:!1,v3:y==="-P"||y==="--prettyPrint"||y==="-I"}),ps.has(y)&&N===void 0&&g++;continue}hs[y]&&n.push({label:r(y),v4:hs[y],kislyuk:["-i","-n","-e","-r","-C","-M"].includes(y),v3:["-i","-I","-P","-C"].includes(y)}),ps.has(y)&&N===void 0&&g++;continue}if(a===void 0){if(o===void 0&&ot[_]&&s.length>g+1){o=_,t.push({flavor:"mikefarah3",weight:4,why:[`${r(_)}\uFF08${ot[_]}\uFF09\u306F mikefarah/yq v3 \u306E\u30B5\u30D6\u30B3\u30DE\u30F3\u30C9`,`${r(_)} (${ot[_]}) is a mikefarah/yq v3 subcommand`]}),n.push({label:r(_),v4:null,kislyuk:!1,v3:!0}),a=s.slice(g+1).map((w,y)=>({x:w,k:g+1+y})).filter(({x:w})=>w!==void 0&&!w.startsWith("-"))[_==="n"||_==="new"?0:1]?.k;break}if(o===void 0&&(_==="e"||_==="eval"||_==="ea"||_==="eval-all")){o=_,t.push({flavor:"mikefarah4",weight:4,why:[`${r(_)} \u306F mikefarah/yq v4 \u306E\u30B5\u30D6\u30B3\u30DE\u30F3\u30C9`,`${r(_)} is a mikefarah/yq v4 subcommand`]}),n.push({label:r(_),v4:"4.0.0",kislyuk:!1,v3:!1});continue}a=g,o===void 0&&n.push({label:r(`yq '${_.length>16?_.slice(0,15)+"\u2026":_}'`),v4:"4.18.1",kislyuk:!0,v3:!0})}}}let l=a!==void 0?s[a]:void 0;if(l!==void 0&&!(o&&ot[o])){let g=[];try{g=We(l).filter(_=>_.type==="ident"||_.type==="fmt").map(_=>_.text)}catch{g=[]}for(let _ of new Set(g)){let b=_==="pick"&&/\bpick\s*\(\s*\[/.test(l)||_==="explode"&&/\bexplode\s*\(/.test(l);Wr.has(_)||_==="ireduce"||b?(t.push({flavor:"mikefarah4",weight:2,why:[`${r(_)} \u306F mikefarah/yq \u306E\u95A2\u6570\uFF08jq \u306B\u306F\u306A\u3044\uFF09`,`${r(_)} is a mikefarah/yq function (jq has none)`]}),n.push({label:r(_),v4:ds[_]??"4.0.0",kislyuk:!1,v3:!1})):nn.has(_)?(t.push({flavor:"kislyuk",weight:2,why:[`${r(_)} \u306F jq \u306E\u95A2\u6570\uFF08mikefarah/yq \u306B\u306F\u306A\u3044\uFF09`,`${r(_)} is a jq function (mikefarah/yq has none)`]}),n.push({label:r(_),v4:null,kislyuk:!0,v3:!1})):ds[_]&&n.push({label:r(_),v4:ds[_],kislyuk:!0,v3:!1})}/(^|[^.])\.\.\.(?!\.)/.test(l)&&(t.push({flavor:"mikefarah4",weight:2,why:["`...` \u306F mikefarah/yq \u306E\u6F14\u7B97\u5B50","`...` is a mikefarah/yq operator"]}),n.push({label:"`...`",v4:"4.2.1",kislyuk:!1,v3:!1})),/\bif\b[\s\S]*\bthen\b/.test(l)&&n.push({label:"`if \u2026 then`",v4:"4.54.1",kislyuk:!0,v3:!1}),/\[\s*-?\d*\s*:\s*-?\d*\s*\]/.test(l)&&n.push({label:"`.[m:n]`",v4:"4.53.6",kislyuk:!0,v3:!1}),/\|=|\+=|-=/.test(l)&&n.push({label:"`|=`",v4:"4.3.2",kislyuk:!0,v3:!1}),/\bas\s+\$/.test(l)&&n.push({label:"`as $x`",v4:"4.5.1",kislyuk:!0,v3:!1})}let c=e.doc??"",u=(g,_,b,w)=>{let y=g.exec(c);y&&t.push({flavor:_,weight:1,why:[`\u540C\u3058\u30D5\u30A1\u30A4\u30EB\u306E ${r(y[0].trim().slice(0,60))} \u304B\u3089 ${b}`,`${r(y[0].trim().slice(0,60))} in the same file suggests ${w}`]})},h=/mikefarah\/yq[^\s'"]*?[/:@]v?([34])(?:\.\d+){0,2}/.exec(c);h&&t.push({flavor:h[1]==="3"?"mikefarah3":"mikefarah4",weight:1,why:[`\u540C\u3058\u30D5\u30A1\u30A4\u30EB\u306E ${r(h[0])} \u304B\u3089`,`from ${r(h[0])} in the same file`]}),u(/\b(pip3?|pipx)\s+install\b[^\n]*\byq\b/,"kislyuk","kislyuk/yq \u3068\u5224\u65AD","kislyuk/yq"),u(/\bapt(-get)?\s+(?:-\S+\s+)*install\b[^\n]*\byq\b/,"kislyuk","kislyuk/yq \u3068\u5224\u65AD\uFF08Debian\u30FBUbuntu \u306E yq \u30D1\u30C3\u30B1\u30FC\u30B8\u306F kislyuk/yq\uFF09","kislyuk/yq (the Debian/Ubuntu yq package is kislyuk/yq)"),u(/\bbrew\s+install\b[^\n]*\bpython-yq\b/,"kislyuk","kislyuk/yq \u3068\u5224\u65AD","kislyuk/yq"),u(/\b(brew|snap)\s+install\b(?![^\n]*python-yq)[^\n]*\byq\b/,"mikefarah4","mikefarah/yq \u3068\u5224\u65AD","mikefarah/yq"),e.host?.startsWith("GitHub Actions")&&t.push({flavor:"mikefarah4",weight:1,why:["GitHub Actions \u306E\u30E9\u30F3\u30CA\u30FC\u306B\u306F mikefarah/yq v4 \u304C\u5165\u3063\u3066\u3044\u308B","GitHub Actions runners come with mikefarah/yq v4"]});let d="mikefarah4",p=!1,f=[];if(e.setting&&e.setting!=="auto"&&e.setting in di)d=e.setting,p=!0,f.push(["\u8A2D\u5B9A `bashExplainer.yq.flavor` \u306E\u6307\u5B9A","the `bashExplainer.yq.flavor` setting"]);else if(t.length){let g=_=>t.filter(b=>b.flavor===_).reduce((b,w)=>b+w.weight,0);d=["mikefarah4","kislyuk","mikefarah3"].reduce((_,b)=>g(b)>g(_)?b:_),p=!0}f.push(...t.filter(g=>g.flavor===d).map(g=>g.why));let m={};for(let g of["mikefarah4","kislyuk","mikefarah3"]){let _=n.filter(w=>g==="mikefarah4"?w.v4===null:g==="kislyuk"?!w.kislyuk:!w.v3).map(w=>w.label);g==="mikefarah3"&&l!==void 0&&!(o&&ot[o])&&_.unshift(fi);let b=g==="mikefarah4"?n.reduce((w,y)=>y.v4?ul(y.v4,w):w,"4.0.0"):void 0;m[g]={ok:!_.length,min:b,missing:[...new Set(_)]}}return{flavor:d,decided:p,reasons:f,compat:m,expression:a}}var fi="\0jq-style";function mi(s,e){let t=(u,h)=>e==="ja"?u:h,n=u=>di[u][e==="ja"?0:1],r=u=>u==="kislyuk"?"kislyuk/yq":n(u),a=u=>u===fi?t("jq \u5F62\u5F0F\u306E\u5F0F","jq-style expressions"):u,o=u=>u==="mikefarah4"&&s.compat.mikefarah4.min&&s.compat.mikefarah4.min!=="4.0.0"?t(`\uFF08v${s.compat.mikefarah4.min} \u4EE5\u964D\uFF09`,` (v${s.compat.mikefarah4.min} or later)`):"",l=s.decided?t(`yq: ${n(s.flavor)}${o(s.flavor)||(n(s.flavor).endsWith("\uFF09")?"":" ")}\u3068\u3057\u3066\u89E3\u8AAC\u3002\u6839\u62E0: ${s.reasons.map(u=>u[0]).join("\u3001")}`,`yq: explained as ${n(s.flavor)}${o(s.flavor)}. Because: ${s.reasons.map(u=>u[1]).join("; ")}`):t(`yq: \u3069\u306E yq \u304B\u5224\u5B9A\u3067\u304D\u306A\u3044\u305F\u3081\u3001${n("mikefarah4")}${o("mikefarah4")||" "}\u3068\u3057\u3066\u89E3\u8AAC\uFF08\u5229\u7528\u8005\u304C\u591A\u3044\u305F\u3081\uFF09`,`yq: which yq this is cannot be told, so it is explained as ${n("mikefarah4")}${o("mikefarah4")} (the most common one)`),c=["mikefarah4","kislyuk","mikefarah3"].map(u=>{let h=s.compat[u];if(h.ok){let p=u==="kislyuk"&&s.flavor!=="kislyuk"?t("\u3002\u51FA\u529B\u306F JSON\uFF08YAML \u306B\u3059\u308B\u306B\u306F `-y`\uFF09","; output is JSON (`-y` for YAML)"):"";return`${r(u)}${u==="mikefarah4"?o(u):""} \u2713${p}`}let d=h.missing.slice(0,2).map(a);return`${r(u)} \u2717${t(`\uFF08${d.join("\u30FB")} \u304C\u4F7F\u3048\u306A\u3044\uFF09`,` (no ${d.join(", ")})`)}`});return[l,t(`\u4E92\u63DB\u6027: ${c.join(" \uFF0F ")}`,`Works with: ${c.join(" / ")}`)]}function gi(s,e){let t=(a,o)=>e==="ja"?a:o,n=[],r=0;for(;r<s.length;){if(s[r]==="."){n.push({start:r,end:r+1,kind:"operator",children:[],explanation:t("`.`: 1\u6BB5\u4E0B\u306E\u968E\u5C64\u3078","`.`: one level down")}),r++;continue}let a,o=s.slice(r),l=0,c="variable",u="";if((a=/^\[(\d+)\]/.exec(o))?(l=a[0].length,u=t(`\u914D\u5217\u306E ${Number(a[1])+1} \u756A\u76EE\u306E\u8981\u7D20\uFF080 \u59CB\u307E\u308A\uFF09`,`element ${a[1]} of the array (from 0)`)):(a=/^\[\*\]/.exec(o))?(l=3,c="pattern",u=t("\u914D\u5217\u306E\u3059\u3079\u3066\u306E\u8981\u7D20","every element of the array")):(a=/^\[\+\]/.exec(o))?(l=3,c="operator",u=t("\u914D\u5217\u306E\u672B\u5C3E\u306B\u8FFD\u52A0\u3059\u308B\u4F4D\u7F6E\uFF08write \u3067\u4F7F\u3046\uFF09","a new element at the end of the array (for write)")):(a=/^\(([^)]*?)(==|!=)([^)]*)\)/.exec(o))?(l=a[0].length,c="pattern",u=t(`\`${a[1]}\` \u304C \`${a[3]}\` ${a[2]==="=="?"\u306B\u4E00\u81F4\u3059\u308B":"\u3067\u306A\u3044"}\u8981\u7D20\uFF08\`*\` \u306F\u30EF\u30A4\u30EB\u30C9\u30AB\u30FC\u30C9\uFF09`,`the elements whose \`${a[1]}\` ${a[2]==="=="?"matches":"does not match"} \`${a[3]}\` (\`*\` is a wildcard)`)):(a=/^\(\.==([^)]*)\)/.exec(o))?(l=a[0].length,c="pattern",u=t(`\u5024\u304C \`${a[1]}\` \u306E\u8981\u7D20`,`the elements equal to \`${a[1]}\``)):(a=/^\*\*/.exec(o))?(l=2,c="pattern",u=t("`**`: \u4EFB\u610F\u306E\u6DF1\u3055\u306E\u3059\u3079\u3066\u306E\u5B50\u5B6B","`**`: every descendant at any depth")):(a=/^"([^"]*)"/.exec(o))?(l=a[0].length,u=t(`\u30AD\u30FC \`${a[1]}\`\uFF08\`.\` \u3092\u542B\u3080\u30AD\u30FC\u306F\u30AF\u30A9\u30FC\u30C8\u3059\u308B\uFF09`,`the key \`${a[1]}\` (keys containing \`.\` are quoted)`)):(a=/^[^.[(]+/.exec(o))&&(l=a[0].length,a[0].includes("*")?(c="pattern",u=t(`\`${a[0]}\` \u306B\u4E00\u81F4\u3059\u308B\u30AD\u30FC\uFF08\`*\` \u306F\u30EF\u30A4\u30EB\u30C9\u30AB\u30FC\u30C9\uFF09`,`keys matching \`${a[0]}\` (\`*\` is a wildcard)`)):u=t(`\u30AD\u30FC \`${a[0]}\``,`the key \`${a[0]}\``)),!l)return;n.push({start:r,end:r+l,kind:c,children:[],explanation:u}),r+=l}return n.length?{tokens:n}:void 0}var hl=new Set(["select","map","has","length","to_entries","with_entries","from_entries","sort","sort_by","unique","unique_by","group_by","flatten","split","join","test","any","all","reverse","contains","del","not","min","max","map_values","type","tostring"]);function _i(s){let e;try{e=We(s)}catch{return!1}return e.some(t=>t.type==="fmt"||t.type==="kw"&&!["and","or","as"].includes(t.text))||e.some(t=>t.type==="op"&&t.text==="...")?!1:e.filter(t=>t.type==="ident").every(t=>hl.has(t.text)||t.text==="true"||t.text==="false"||t.text==="null")}var Be=class extends Error{},wi=/^[-+]?(\d[\d_]*(\.\d*)?|\.\d+)([eE][-+]?\d+)?$|^0x[0-9a-fA-F]+$|^0o[0-7]+$|^[-+]?\.(inf|Inf|INF)$|^\.(nan|NaN|NAN)$/,yi=/^(true|True|TRUE|false|False|FALSE|null|Null|NULL|~|)$/,dl=/^(y|Y|yes|Yes|YES|n|N|no|No|NO|on|On|ON|off|Off|OFF)$|^[-+]?\d[\d_]*(:[0-5]?\d)+(\.\d*)?$|^0b[01_]+$/;function pl(s,e){return yi.test(s)||wi.test(s)||e==="kislyuk"&&dl.test(s)||/^[\s]|[\s]$/.test(s)||/^[[\]{},#&*!|>'"%@`]/.test(s)||/^[-?:](\s|$)/.test(s)?!0:/: |:$| #|[\t]/.test(s)}function bi(s,e){if(s===null)return"null";if(typeof s=="boolean")return String(s);if(typeof s=="number")return Number.isInteger(s)||Math.abs(s)>=1e-4?String(s):(()=>{throw new Be("number")})();if(typeof s!="string")throw new Be("not a scalar");return pl(s,e)?e==="mikefarah"&&(yi.test(s)||wi.test(s))||s.includes("'")&&e==="mikefarah"?JSON.stringify(s):`'${s.replace(/'/g,"''")}'`:s}var xi=s=>typeof s=="object"&&s!==null&&!Array.isArray(s);function Je(s,e){if(typeof s=="string"&&s.includes(`
71
71
  `)){if(e==="kislyuk")throw new Be("multi-line string");return[`|${s.endsWith(`
72
72
  `)?"":"-"}`,...s.replace(/\n$/,"").split(`
73
73
  `).map(t=>` ${t}`)]}if(Array.isArray(s))return s.length?s.flatMap(t=>{let n=Je(t,e);return typeof t=="string"&&t.includes(`
74
- `)?[`- ${n[0]}`,...n.slice(1).map(r=>` ${r}`)]:[`- ${n[0]}`,...n.slice(1).map(r=>` ${r}`)]}):["[]"];if(hi(s)){let t=Object.keys(s);return t.length?t.flatMap(n=>{let r=ui(n,e),a=s[n];if(Array.isArray(a)&&a.length||hi(a)&&Object.keys(a).length)return[`${r}:`,...Je(a,e).map(l=>` ${l}`)];let o=Je(a,e);return[`${r}: ${o[0]}`,...o.slice(1)]}):["{}"]}return[ui(s,e)]}function fi(s,e){if(e==="mikefarah")return s.flatMap(r=>typeof r=="string"&&!r.includes(`
75
- `)?[r]:Je(r,e));let t=[];s.forEach((r,a)=>{a&&t.push("---"),t.push(...Je(r,e))});let n=s[s.length-1];return s.length&&(n===null||typeof n!="object")&&!/^['"]/.test(t[t.length-1])&&t.push("..."),t}var mi=s=>({json:{ja:"JSON",en:"JSON"},j:{ja:"JSON",en:"JSON"},yaml:{ja:"YAML",en:"YAML"},y:{ja:"YAML",en:"YAML"},props:{ja:"Java \u306E properties \u5F62\u5F0F",en:"Java properties"},p:{ja:"Java \u306E properties \u5F62\u5F0F",en:"Java properties"},xml:{ja:"XML",en:"XML"},x:{ja:"XML",en:"XML"},csv:{ja:"CSV",en:"CSV"},c:{ja:"CSV",en:"CSV"},tsv:{ja:"TSV",en:"TSV"},t:{ja:"TSV",en:"TSV"},toml:{ja:"TOML",en:"TOML"},lua:{ja:"Lua",en:"Lua"},l:{ja:"Lua",en:"Lua"},ini:{ja:"INI",en:"INI"},i:{ja:"INI",en:"INI"},...s==="output"?{shell:{ja:"\u30B7\u30A7\u30EB\u306E\u5909\u6570\u4EE3\u5165\uFF08`a_b=1`\uFF09",en:"shell variable assignments (`a_b=1`)"},s:{ja:"\u30B7\u30A7\u30EB\u306E\u5909\u6570\u4EE3\u5165",en:"shell assignments"}}:{}}),Et=[["-o|--output-format","\u51FA\u529B\u5F62\u5F0F\uFF08`json`\u30FB`yaml`\u30FB`xml`\u30FB`props`\u30FB`csv`\u30FB`tsv`\u30FB`toml`\u30FB`shell`\u30FB`lua` \u306A\u3069\u3002\u65E2\u5B9A\u306F\u5165\u529B\u3068\u540C\u3058\uFF09","output format (`json`, `yaml`, `xml`, `props`, `csv`, `tsv`, `toml`, `shell`, `lua`\u2026; defaults to the input format)","arg",mi("output")],["-p|--input-format","\u5165\u529B\u5F62\u5F0F\uFF08`json`\u30FB`xml`\u30FB`csv`\u30FB`toml`\u30FB`props`\u30FB`ini` \u306A\u3069\u3002\u65E2\u5B9A\u306F\u62E1\u5F35\u5B50\u304B\u3089\u5224\u65AD\uFF09","input format (`json`, `xml`, `csv`, `toml`, `props`, `ini`\u2026; guessed from the file extension)","arg",mi("input")],["-i|--inplace","\u7D50\u679C\u3067\u6700\u521D\u306E\u30D5\u30A1\u30A4\u30EB\u3092\u4E0A\u66F8\u304D\u3059\u308B","update the first file in place"],["-n|--null-input","\u5165\u529B\u3092\u8AAD\u307E\u305A\u306B\u5F0F\u3060\u3051\u3067\u6587\u66F8\u3092\u4F5C\u308B","read no input; build a document from the expression"],["-P|--prettyPrint","`{a: 1}` \u306E\u3088\u3046\u306A\u66F8\u304D\u65B9\u3082\u901A\u5E38\u306E\u30D6\u30ED\u30C3\u30AF\u5F62\u5F0F\u306B\u6574\u3048\u308B","pretty print (turn flow style like `{a: 1}` into block style)"],["-I|--indent","\u30A4\u30F3\u30C7\u30F3\u30C8\u306E\u5E45\uFF08\u65E2\u5B9A 2\uFF09","indentation width (default 2)","arg"],["-r|--unwrapScalar","\u6587\u5B57\u5217\u306A\u3069\u3092\u30AF\u30A9\u30FC\u30C8\u306A\u3057\u3067\u51FA\u529B\u3059\u308B\uFF08YAML \u3067\u306F\u65E2\u5B9A\uFF09","print scalars without quotes (the default for YAML)"],["-e|--exit-status","\u7D50\u679C\u304C null\u30FBfalse\u30FB\u306A\u3057\u306A\u3089\u5931\u6557\u306E\u7D42\u4E86\u30B9\u30C6\u30FC\u30BF\u30B9\u306B\u3059\u308B","exit with an error if the result is null, false or nothing"],["-f|--front-matter","Markdown \u306A\u3069\u306E\u5148\u982D\u306E YAML\uFF08\u30D5\u30ED\u30F3\u30C8\u30DE\u30BF\u30FC\uFF09\u3060\u3051\u3092\u51E6\u7406\u3059\u308B\uFF08`extract`\u30FB`process`\uFF09","process only the YAML front matter (`extract` or `process`)","arg"],["-0|--nul-output","\u7D50\u679C\u3092 NUL \u6587\u5B57\u533A\u5207\u308A\u3067\u51FA\u529B\u3059\u308B\uFF08`xargs -0` \u5411\u3051\uFF09","separate results with NUL (for `xargs -0`)"],["-N|--no-doc","\u30C9\u30AD\u30E5\u30E1\u30F3\u30C8\u533A\u5207\u308A `---` \u3092\u51FA\u529B\u3057\u306A\u3044","do not print the `---` document separators"],["-s|--split-exp","\u7D50\u679C\u3054\u3068\u306B\u3001\u3053\u306E\u5F0F\u306E\u540D\u524D\u306E\u30D5\u30A1\u30A4\u30EB\u306B\u66F8\u304D\u51FA\u3059","write each result to a file named by this expression","arg"],["-C|--colors","\u8272\u4ED8\u304D\u3067\u51FA\u529B\u3059\u308B","force colours"],["-M|--no-colors","\u8272\u3092\u4ED8\u3051\u306A\u3044","no colours"],["-v|--verbose","\u8A73\u3057\u3044\u30ED\u30B0\u3092\u51FA\u3059","verbose logging"],["--expression","\u5F0F\u3092\u660E\u793A\u3059\u308B\uFF08\u30D5\u30A1\u30A4\u30EB\u540D\u3068\u533A\u5225\u3067\u304D\u306A\u3044\u3068\u304D\uFF09","give the expression explicitly (when it looks like a file)","arg"],["--from-file","\u5F0F\u3092\u30D5\u30A1\u30A4\u30EB\u304B\u3089\u8AAD\u3080","read the expression from a file","arg"]],St={positional:[$("yq \u306E\u5F0F\uFF08jq \u306B\u4F3C\u305F\u8A18\u6CD5\uFF09","yq expression (jq-like)"),$("\u5165\u529B\u30D5\u30A1\u30A4\u30EB\uFF08\u7701\u7565\u3059\u308B\u3068\u6A19\u6E96\u5165\u529B\uFF09","input file (stdin if omitted)")],positionalLang:["yq4"]},hl=y("YAML\uFF08JSON\u30FBXML\u30FBTOML \u306A\u3069\u3082\uFF09\u3092 jq \u306B\u4F3C\u305F\u5F0F\u3067\u62BD\u51FA\u30FB\u5909\u63DB\u3059\u308B\uFF08mikefarah/yq v4\uFF09","Query and edit YAML (also JSON, XML, TOML\u2026) with jq-like expressions (mikefarah/yq v4)",Et,{...St,subcommands:{e:y("\u5F0F\u3092\u5404\u30C9\u30AD\u30E5\u30E1\u30F3\u30C8\u306B\u9806\u306B\u9069\u7528\u3059\u308B\uFF08`eval`\uFF09","apply the expression to each document (`eval`)",Et,St),eval:y("\u5F0F\u3092\u5404\u30C9\u30AD\u30E5\u30E1\u30F3\u30C8\u306B\u9806\u306B\u9069\u7528\u3059\u308B","apply the expression to each document",Et,St),ea:y("\u5168\u30D5\u30A1\u30A4\u30EB\u306E\u30C9\u30AD\u30E5\u30E1\u30F3\u30C8\u3092\u307E\u3068\u3081\u30661\u56DE\u3067\u51E6\u7406\u3059\u308B\uFF08`eval-all`\u3002\u30DE\u30FC\u30B8\u306A\u3069\u306B\u4F7F\u3046\uFF09","process the documents of all files together (`eval-all`; for merging)",Et,St),"eval-all":y("\u5168\u30D5\u30A1\u30A4\u30EB\u306E\u30C9\u30AD\u30E5\u30E1\u30F3\u30C8\u3092\u307E\u3068\u3081\u30661\u56DE\u3067\u51E6\u7406\u3059\u308B\uFF08\u30DE\u30FC\u30B8\u306A\u3069\u306B\u4F7F\u3046\uFF09","process the documents of all files together (for merging)",Et,St)}}),dl=y("YAML \u3092 JSON \u306B\u5909\u63DB\u3057\u3066 jq \u3067\u51E6\u7406\u3059\u308B\uFF08kislyuk/yq\u3002\u5F0F\u306F jq \u305D\u306E\u3082\u306E\u3002\u51FA\u529B\u306F\u65E2\u5B9A\u3067 JSON\uFF09","Convert YAML to JSON and process it with jq (kislyuk/yq; the filter is plain jq; output is JSON by default)",[["-y|--yaml-output|--yml-output","\u7D50\u679C\u3092 YAML \u306B\u623B\u3057\u3066\u51FA\u529B\u3059\u308B","convert the result back to YAML"],["-Y|--yaml-roundtrip|--yml-roundtrip","\u30BF\u30B0\u3084\u30B9\u30BF\u30A4\u30EB\u3092\u4FDD\u3063\u305F\u307E\u307E YAML \u3067\u51FA\u529B\u3059\u308B","output YAML keeping tags and styles"],["-i|--in-place","\u7D50\u679C\u3067\u5165\u529B\u30D5\u30A1\u30A4\u30EB\u3092\u4E0A\u66F8\u304D\u3059\u308B","edit the files in place"],["-w|--width","YAML \u51FA\u529B\u306E\u6298\u308A\u8FD4\u3057\u5E45","wrap width of YAML output","arg"],["--indentless-lists|--indentless","YAML \u51FA\u529B\u3067\u30EA\u30B9\u30C8\u3092\u30A4\u30F3\u30C7\u30F3\u30C8\u3057\u306A\u3044","do not indent lists in YAML output"],["--explicit-start","YAML \u51FA\u529B\u306E\u5148\u982D\u306B `---` \u3092\u4ED8\u3051\u308B","start YAML output with `---`"],["-r|--raw-output","\u6587\u5B57\u5217\u3092\u30AF\u30A9\u30FC\u30C8\u306A\u3057\u3067\u51FA\u529B\u3059\u308B\uFF08jq \u306E `-r`\uFF09","print strings without quotes (jq's `-r`)"],["-c|--compact-output","1\u884C\u306B\u8A70\u3081\u3066\u51FA\u529B\u3059\u308B","compact output"],["-e|--exit-status","\u7D50\u679C\u304C null\u30FBfalse \u306A\u3089\u5931\u6557\u306E\u7D42\u4E86\u30B9\u30C6\u30FC\u30BF\u30B9\u306B\u3059\u308B","set the exit status from the result"],["-n|--null-input","\u5165\u529B\u3092\u8AAD\u307E\u306A\u3044","do not read input"],["-s|--slurp","\u5168\u5165\u529B\u30921\u3064\u306E\u914D\u5217\u3068\u3057\u3066\u8AAD\u3080","read all inputs into one array"],["-S|--sort-keys","\u30AD\u30FC\u3092\u30BD\u30FC\u30C8\u3057\u3066\u51FA\u529B\u3059\u308B","sort keys"],["--arg","jq \u306E\u5909\u6570\u306B\u6587\u5B57\u5217\u3092\u6E21\u3059\uFF08`--arg name value`\uFF09","pass a string variable (`--arg name value`)","arg"],["--argjson","jq \u306E\u5909\u6570\u306B JSON \u306E\u5024\u3092\u6E21\u3059","pass a JSON variable","arg"]],{positional:[$("jq \u30D5\u30A3\u30EB\u30BF\uFF08\u4F8B: `.items[].name`\uFF09","jq filter (e.g. `.items[].name`)"),$("\u5165\u529B YAML \u30D5\u30A1\u30A4\u30EB","input YAML file")],positionalLang:["jq"]}),Fe=[["-j|--tojson","JSON \u3067\u51FA\u529B\u3059\u308B","output JSON"],["-P|--prettyPrint","\u6574\u5F62\u3057\u3066\u51FA\u529B\u3059\u308B","pretty print"],["-I|--indent","\u30A4\u30F3\u30C7\u30F3\u30C8\u306E\u5E45","indentation width","arg"],["-C|--colors","\u8272\u4ED8\u304D\u3067\u51FA\u529B\u3059\u308B","colours"],["-v|--verbose","\u8A73\u3057\u3044\u30ED\u30B0\u3092\u51FA\u3059","verbose"]],Nt=["-d|--doc","\u5BFE\u8C61\u306E\u30C9\u30AD\u30E5\u30E1\u30F3\u30C8\u756A\u53F7\uFF080 \u304B\u3089\u3002`*` \u3067\u5168\u90E8\uFF09","document index (from 0; `*` for all)","arg"],hn=["-i|--inplace","\u30D5\u30A1\u30A4\u30EB\u3092\u4E0A\u66F8\u304D\u3059\u308B","update the file in place"],lt=$("\u30D1\u30B9\uFF08`a.b[0].c`\u3001`a.*`\u3001`a.(name==x)` \u306A\u3069\u3002jq \u306E\u5F0F\u3067\u306F\u306A\u3044\uFF09","path (`a.b[0].c`, `a.*`, `a.(name==x)`\u2026; not a jq expression)"),He=$("YAML \u30D5\u30A1\u30A4\u30EB","YAML file"),as=y("YAML \u3092\u30D1\u30B9\u3067\u8AAD\u307F\u66F8\u304D\u3059\u308B\uFF08mikefarah/yq v3\u3002v4 \u3068\u306F\u8A18\u6CD5\u304C\u9055\u3046\uFF09","Read and write YAML by path (mikefarah/yq v3; different syntax from v4)",Fe,{subcommands:{r:y("\u30D1\u30B9\u306E\u5024\u3092\u8AAD\u3080\uFF08read\uFF09","read the value at a path",[...Fe,Nt,["-p|--printMode","\u8868\u793A\u5185\u5BB9\uFF08`v` \u5024\u30FB`p` \u30D1\u30B9\u30FB`pv` \u4E21\u65B9\uFF09","what to print (`v` values, `p` paths, `pv` both)","arg"],["-l|--length","\u9577\u3055\u3092\u8868\u793A\u3059\u308B","print the length"],["-c|--collect","\u7D50\u679C\u3092\u914D\u5217\u306B\u307E\u3068\u3081\u308B","collect results into an array"],["-D|--defaultValue","\u898B\u3064\u304B\u3089\u306A\u3044\u3068\u304D\u306B\u8868\u793A\u3059\u308B\u5024","value printed when nothing matches","arg"],["-X|--explodeAnchors","\u30A2\u30F3\u30AB\u30FC\u3092\u5C55\u958B\u3059\u308B","explode anchors"],["-e|--exitStatus","\u898B\u3064\u304B\u3089\u306A\u3051\u308C\u3070\u5931\u6557\u306E\u7D42\u4E86\u30B9\u30C6\u30FC\u30BF\u30B9","exit with an error if nothing matches"]],{positional:[He,lt],positionalLang:[void 0,"yq3path"]}),w:y("\u30D1\u30B9\u306B\u5024\u3092\u66F8\u304D\u8FBC\u3080\uFF08write\uFF09","write a value at a path",[...Fe,Nt,hn,["-s|--script","\u66F4\u65B0\u5185\u5BB9\u3092\u66F8\u3044\u305F\u30B9\u30AF\u30EA\u30D7\u30C8\u30D5\u30A1\u30A4\u30EB","update script file","arg"],["--tag","YAML \u30BF\u30B0","YAML tag","arg"],["--style","\u66F8\u304D\u65B9\u306E\u30B9\u30BF\u30A4\u30EB","style","arg"]],{positional:[He,lt,$("\u66F8\u304D\u8FBC\u3080\u5024","value to write")],positionalLang:[void 0,"yq3path"]}),d:y("\u30D1\u30B9\u306E\u5024\u3092\u524A\u9664\u3059\u308B\uFF08delete\uFF09","delete the value at a path",[...Fe,Nt,hn],{positional:[He,lt],positionalLang:[void 0,"yq3path"]}),m:y("\u8907\u6570\u306E YAML \u3092\u30DE\u30FC\u30B8\u3059\u308B\uFF08merge\uFF09","merge YAML files",[...Fe,Nt,hn,["-x|--overwrite","\u65E2\u5B58\u306E\u5024\u3092\u4E0A\u66F8\u304D\u3059\u308B","overwrite existing values"],["-a|--arrays","\u914D\u5217\u306E\u30DE\u30FC\u30B8\u65B9\u6CD5\uFF08`update`\u30FB`append`\u30FB`overwrite`\uFF09","array merge strategy (`update`, `append`, `overwrite`)","arg"]],{positional:[$("\u30DE\u30FC\u30B8\u5148\u306E YAML \u30D5\u30A1\u30A4\u30EB","YAML file to merge into"),$("\u30DE\u30FC\u30B8\u3059\u308B YAML \u30D5\u30A1\u30A4\u30EB","YAML file to merge")]}),n:y("\u65B0\u3057\u3044 YAML \u3092\u4F5C\u308B\uFF08new\uFF09","create new YAML",[...Fe,["-s|--script","\u30B9\u30AF\u30EA\u30D7\u30C8\u30D5\u30A1\u30A4\u30EB","script file","arg"]],{positional:[lt,$("\u5024","value")],positionalLang:["yq3path"]}),p:y("\u5168\u4F53\u3092\u30D1\u30B9\u306E\u4E0B\u306B\u5165\u308C\u308B\uFF08prefix\uFF09","nest the document under a path",[...Fe,Nt,hn],{positional:[He,lt],positionalLang:[void 0,"yq3path"]}),x:y("2\u3064\u306E YAML \u3092\u6BD4\u8F03\u3059\u308B\uFF08compare\uFF09","compare two YAML files",Fe,{positional:[He,He,lt],positionalLang:[void 0,void 0,"yq3path"]}),v:y("YAML \u3068\u3057\u3066\u6B63\u3057\u3044\u304B\u691C\u8A3C\u3059\u308B\uFF08validate\uFF09","validate YAML",Fe,{positional:[He]})}});for(let[s,e]of[["r","read"],["w","write"],["d","delete"],["m","merge"],["n","new"],["p","prefix"],["x","compare"],["v","validate"]])as.subcommands[e]=as.subcommands[s];var gi={mikefarah4:hl,kislyuk:dl,mikefarah3:as};function os(s){if(!s||typeof s!="object")return;let e=s;if(typeof e.summary!="string")return;let t=a=>({ja:a,en:a}),n={};for(let[a,o]of Object.entries(e.options??{})){let l=typeof o=="string"?o:o&&typeof o=="object"&&typeof o.description=="string"?o.description:void 0;if(l===void 0)continue;let c={text:t(l),...typeof o=="object"&&o.takesValue?{arg:!0}:{}};for(let u of a.split("|"))n[u.trim()]=c}let r=Array.isArray(e.arguments)?e.arguments.filter(a=>typeof a=="string"):[];return{summary:t(e.summary),options:n,...r.length?{positional:r.map(t)}:{}}}var ls=/(?:#|<!--)\s*bash-explainer\s+(disable|disable-file)=([\w*,-]+)/;function _i(s){let e={file:new Set,lines:new Map},t=(n,r)=>{let a=e.lines.get(n)??new Set;r.forEach(o=>a.add(o)),e.lines.set(n,a)};return s.forEach((n,r)=>{let a=ls.exec(n);if(!a)return;let o=a[2].split(",").filter(Boolean);if(a[1]==="disable-file"){o.forEach(c=>e.file.add(c));return}if(n.slice(0,a.index).trim())return t(r,o);let l=r+1;for(;l<s.length&&(!s[l].trim()||/^\s*(#|<!--)/.test(s[l]));)l++;l<s.length&&t(l,o)}),e}function bi(s,e,t){let n=r=>!!r&&(r.has(t)||r.has("all"));return n(s.file)||n(s.lines.get(e))}function xi(s,e){let t=A(e);if(!/^[+-]?([A-Za-z0-9](::?)?)*$/.test(s)||!s)return;let n=[],r=[],a=0;for(s[0]==="+"?(n.push({start:0,end:1,kind:"operator",children:[],explanation:t("\u5148\u982D\u306E `+`: \u6700\u521D\u306E\u30AA\u30D7\u30B7\u30E7\u30F3\u3067\u306A\u3044\u5F15\u6570\u3067\u30AA\u30D7\u30B7\u30E7\u30F3\u306E\u89E3\u6790\u3092\u3084\u3081\u308B\uFF08\u4EE5\u964D\u306F\u3059\u3079\u3066\u901A\u5E38\u306E\u5F15\u6570\uFF09","Leading `+`: stop at the first non-option argument (everything after it is a plain argument)")}),a=1):s[0]==="-"&&(n.push({start:0,end:1,kind:"operator",children:[],explanation:t("\u5148\u982D\u306E `-`: \u30AA\u30D7\u30B7\u30E7\u30F3\u3067\u306A\u3044\u5F15\u6570\u3092\u5F8C\u308D\u306B\u56DE\u3055\u305A\u3001\u5143\u306E\u4F4D\u7F6E\u306E\u307E\u307E\u51FA\u529B\u3059\u308B","Leading `-`: keep non-option arguments in place instead of moving them after `--`")}),a=1);a<s.length;){let o=s[a],l=s.startsWith("::",a+1)?2:s[a+1]===":"?1:0;n.push({start:a,end:a+1+l,kind:"option",children:[],explanation:l===2?t(`\`${o}::\`: \u30AA\u30D7\u30B7\u30E7\u30F3 -${o} \u306F\u5024\u3092\u7701\u7565\u3067\u304D\u308B\uFF08\u5024\u306F \`-${o}\u5024\` \u306E\u3088\u3046\u306B\u7D9A\u3051\u3066\u66F8\u304F\u3002\u7701\u7565\u3059\u308B\u3068\u7A7A\u6587\u5B57\uFF09`,`\`${o}::\`: option -${o} takes an optional value (written attached, \`-${o}VALUE\`; empty if omitted)`):l===1?t(`\`${o}:\`: \u30AA\u30D7\u30B7\u30E7\u30F3 -${o} \u306F\u5024\u3092\u53D6\u308B\uFF08\`-${o} \u5024\` \u307E\u305F\u306F \`-${o}\u5024\`\uFF09`,`\`${o}:\`: option -${o} takes a value (\`-${o} VALUE\` or \`-${o}VALUE\`)`):t(`\`${o}\`: \u30AA\u30D7\u30B7\u30E7\u30F3 -${o}\uFF08\u5024\u306A\u3057\uFF09`,`\`${o}\`: option -${o} (no value)`)}),r.push(l===2?t(`-${o}[\u5024]`,`-${o}[VALUE]`):l?t(`-${o} \u5024`,`-${o} VALUE`):`-${o}`),a+=1+l}return{tokens:n,note:t(`\u53D7\u3051\u4ED8\u3051\u308B\u77ED\u3044\u30AA\u30D7\u30B7\u30E7\u30F3: ${r.join("\u3001")}`,`short options: ${r.join(", ")}`)}}function wi(s,e){let t=A(e);if(!/^[A-Za-z0-9][\w-]*(::?)?(,[A-Za-z0-9][\w-]*(::?)?)*$/.test(s))return;let n=[],r=[],a=0;for(let o of s.split(",")){a&&n.push({start:a-1,end:a,kind:"operator",children:[],explanation:t("`,`: \u9577\u3044\u30AA\u30D7\u30B7\u30E7\u30F3\u306E\u533A\u5207\u308A","`,` separates long options")});let l=o.replace(/:+$/,""),c=o.length-l.length;n.push({start:a,end:a+o.length,kind:"option",children:[],explanation:c===2?t(`\`${o}\`: \u30AA\u30D7\u30B7\u30E7\u30F3 --${l} \u306F\u5024\u3092\u7701\u7565\u3067\u304D\u308B\uFF08\`--${l}=\u5024\` \u306E\u5F62\u3067\u66F8\u304F\uFF09`,`\`${o}\`: option --${l} takes an optional value (written \`--${l}=VALUE\`)`):c===1?t(`\`${o}\`: \u30AA\u30D7\u30B7\u30E7\u30F3 --${l} \u306F\u5024\u3092\u53D6\u308B\uFF08\`--${l} \u5024\` \u307E\u305F\u306F \`--${l}=\u5024\`\uFF09`,`\`${o}\`: option --${l} takes a value (\`--${l} VALUE\` or \`--${l}=VALUE\`)`):t(`\`${o}\`: \u30AA\u30D7\u30B7\u30E7\u30F3 --${l}\uFF08\u5024\u306A\u3057\uFF09`,`\`${o}\`: option --${l} (no value)`)}),r.push(c===2?t(`--${l}[=\u5024]`,`--${l}[=VALUE]`):c?t(`--${l} \u5024`,`--${l} VALUE`):`--${l}`),a+=o.length+1}return{tokens:n,note:t(`\u53D7\u3051\u4ED8\u3051\u308B\u9577\u3044\u30AA\u30D7\u30B7\u30E7\u30F3: ${r.join("\u3001")}\uFF08\u4E00\u610F\u306B\u6C7A\u307E\u308C\u3070 \`--${s.split(",")[0].replace(/:+$/,"").slice(0,3)}\` \u306E\u3088\u3046\u306B\u7701\u7565\u53EF\uFF09`,`long options: ${r.join(", ")} (unique prefixes such as \`--${s.split(",")[0].replace(/:+$/,"").slice(0,3)}\` also work)`)}}var Ce=class extends Error{};function pl(s,e){let t=s.replace(/^[+-]/,"");for(let n=0;n<t.length;){if(t[n]===":"){n++;continue}let r=t.startsWith("::",n+1)?2:t[n+1]===":"?1:0;if(t[n]===e)return r;n+=1+r}}function yi(s){return s.map(e=>{let t=e.replace(/:+$/,"");return[t,e.length-t.length]})}function ki(s,e){let t=u=>s.legacy?u:`'${u.replace(/'/g,"'\\''")}'`,n=[],r=[],a=s.short.startsWith("-"),o=s.short.startsWith("+"),l=yi(s.long),c=u=>{let h=l.find(([p])=>p===u);if(h)return h;let d=l.filter(([p])=>p.startsWith(u));if(d.length!==1)throw new Ce(`--${u}`);return d[0]};for(let u=0;u<e.length;u++){let h=e[u];if(h==="--"){r.push(...e.slice(u+1).map(t));break}if((h.startsWith("--")||s.alternative&&/^-[^-]/.test(h)&&h.length>2&&l.some(([p])=>p.startsWith(h.slice(1).split("=")[0])))&&h.length>2){let p=h.replace(/^--?/,""),f=p.indexOf("="),[m,g]=c(f<0?p:p.slice(0,f));if(n.push(`--${m}`),g===1)if(f>=0)n.push(t(p.slice(f+1)));else if(u+1<e.length)n.push(t(e[++u]));else throw new Ce("missing value");else if(g===2)n.push(t(f>=0?p.slice(f+1):""));else if(f>=0)throw new Ce("unexpected value");continue}if(h.startsWith("-")&&h.length>1){for(let p=1;p<h.length;p++){let f=pl(s.short,h[p]);if(f===void 0)throw new Ce(`-${h[p]}`);if(n.push(`-${h[p]}`),f===0)continue;let m=h.slice(p+1);if(f===1)if(m)n.push(t(m));else if(u+1<e.length)n.push(t(e[++u]));else throw new Ce("missing value");else n.push(t(m));break}continue}if(o){r.push(...e.slice(u).map(t));break}a?n.push(t(h)):r.push(t(h))}return" "+[...n,"--",...r].join(" ")}function cs(s){return/out|file|path|log|config|conf|input|dir/i.test(s)?/dir/i.test(s)?"build":/out/i.test(s)?"out.txt":"input.txt":/num|count|level|port|size|limit|max|min|jobs|depth|timeout|retr|verbose/i.test(s)?"3":/name|user/i.test(s)?"alice":/colou?r/i.test(s)?"always":"value"}function $i(s){let e=s.short.replace(/^[+-]/,""),t=[];for(let p=0;p<e.length;){let f=e.startsWith("::",p+1)?2:e[p+1]===":"?1:0;t.push([e[p],f]),p+=1+f}let n=yi(s.long),r=p=>n.find(([f])=>f[0]===p)?.[0]??p,a=["file1.txt"],o=t.filter(([,p])=>p===0).slice(0,2).map(([p])=>p);s.short.startsWith("+")&&(a.length=0),o.length&&a.push(`-${o.join("")}`);let l=t.find(([,p])=>p===1);l&&a.push(`-${l[0]}`,cs(r(l[0])));let c=t.find(([,p])=>p===2);c&&a.push(`-${c[0]}`);let u=n.find(([p,f])=>f===1&&!(l&&p[0]===l[0]));u&&a.push(`--${u[0]}=${cs(u[0])}`);let h=n.find(([,p])=>p===2);h&&a.push(`--${h[0]}=${cs(h[0])}`);let d=n.find(([p,f])=>f===0&&!o.includes(p[0]));return d&&a.push(`--${d[0]}`),s.short.startsWith("+")?a.push("file1.txt","-x"):a.push("file2.txt"),a}var us={oneline:["1\u30B3\u30DF\u30C3\u30C81\u884C\uFF08\u30CF\u30C3\u30B7\u30E5\u3068\u4EF6\u540D\uFF09","one line per commit (hash and subject)"],short:["\u30CF\u30C3\u30B7\u30E5\u30FB\u4F5C\u8005\u30FB\u4EF6\u540D","hash, author and subject"],medium:["\u30CF\u30C3\u30B7\u30E5\u30FB\u4F5C\u8005\u30FB\u65E5\u6642\u30FB\u30E1\u30C3\u30BB\u30FC\u30B8\uFF08\u65E2\u5B9A\uFF09","hash, author, date and message (default)"],full:["\u30CF\u30C3\u30B7\u30E5\u30FB\u4F5C\u8005\u30FB\u30B3\u30DF\u30C3\u30BF\u30FC\u30FB\u30E1\u30C3\u30BB\u30FC\u30B8","hash, author, committer and message"],fuller:["full \u306B\u52A0\u3048\u3066\u4E21\u65B9\u306E\u65E5\u6642","full plus both dates"],reference:["\u300C\u30CF\u30C3\u30B7\u30E5 (\u4EF6\u540D, \u65E5\u4ED8)\u300D\u306E\u5F62",'"hash (subject, date)"'],email:["\u30E1\u30FC\u30EB\uFF08\u30D1\u30C3\u30C1\uFF09\u5F62\u5F0F","e-mail (patch) format"],raw:["\u5185\u90E8\u306E\u751F\u306E\u5F62\u5F0F","the raw internal format"]},vi={H:["\u30B3\u30DF\u30C3\u30C8\u30CF\u30C3\u30B7\u30E5\uFF08\u5B8C\u5168\uFF09","commit hash"],h:["\u30B3\u30DF\u30C3\u30C8\u30CF\u30C3\u30B7\u30E5\uFF08\u77ED\u7E2E\uFF09","abbreviated commit hash"],T:["\u30C4\u30EA\u30FC\u30CF\u30C3\u30B7\u30E5","tree hash"],t:["\u30C4\u30EA\u30FC\u30CF\u30C3\u30B7\u30E5\uFF08\u77ED\u7E2E\uFF09","abbreviated tree hash"],P:["\u89AA\u30B3\u30DF\u30C3\u30C8\u306E\u30CF\u30C3\u30B7\u30E5","parent hashes"],p:["\u89AA\u30B3\u30DF\u30C3\u30C8\u306E\u30CF\u30C3\u30B7\u30E5\uFF08\u77ED\u7E2E\uFF09","abbreviated parent hashes"],an:["\u4F5C\u8005\u306E\u540D\u524D","author name"],ae:["\u4F5C\u8005\u306E\u30E1\u30FC\u30EB\u30A2\u30C9\u30EC\u30B9","author email"],al:["\u4F5C\u8005\u306E\u30E1\u30FC\u30EB\u306E\u30ED\u30FC\u30AB\u30EB\u90E8","author email local part"],ad:["\u4F5C\u8005\u306E\u65E5\u6642\uFF08--date \u306E\u5F62\u5F0F\uFF09","author date (as --date says)"],ar:["\u4F5C\u8005\u306E\u65E5\u6642\uFF08\u300C3 days ago\u300D\u306E\u3088\u3046\u306A\u76F8\u5BFE\u8868\u8A18\uFF09",'author date, relative ("3 days ago")'],at:["\u4F5C\u8005\u306E\u65E5\u6642\uFF08UNIX \u6642\u523B\uFF09","author date, UNIX time"],ai:["\u4F5C\u8005\u306E\u65E5\u6642\uFF08ISO 8601 \u98A8\uFF09","author date, ISO 8601-like"],aI:["\u4F5C\u8005\u306E\u65E5\u6642\uFF08\u53B3\u5BC6\u306A ISO 8601\uFF09","author date, strict ISO 8601"],as:["\u4F5C\u8005\u306E\u65E5\u4ED8\uFF08YYYY-MM-DD\uFF09","author date (YYYY-MM-DD)"],cn:["\u30B3\u30DF\u30C3\u30BF\u30FC\u306E\u540D\u524D","committer name"],ce:["\u30B3\u30DF\u30C3\u30BF\u30FC\u306E\u30E1\u30FC\u30EB\u30A2\u30C9\u30EC\u30B9","committer email"],cd:["\u30B3\u30DF\u30C3\u30C8\u65E5\u6642\uFF08--date \u306E\u5F62\u5F0F\uFF09","committer date (as --date says)"],cr:["\u30B3\u30DF\u30C3\u30C8\u65E5\u6642\uFF08\u76F8\u5BFE\u8868\u8A18\uFF09","committer date, relative"],ct:["\u30B3\u30DF\u30C3\u30C8\u65E5\u6642\uFF08UNIX \u6642\u523B\uFF09","committer date, UNIX time"],ci:["\u30B3\u30DF\u30C3\u30C8\u65E5\u6642\uFF08ISO 8601 \u98A8\uFF09","committer date, ISO 8601-like"],cI:["\u30B3\u30DF\u30C3\u30C8\u65E5\u6642\uFF08\u53B3\u5BC6\u306A ISO 8601\uFF09","committer date, strict ISO 8601"],cs:["\u30B3\u30DF\u30C3\u30C8\u65E5\u4ED8\uFF08YYYY-MM-DD\uFF09","committer date (YYYY-MM-DD)"],s:["\u4EF6\u540D\uFF08\u30E1\u30C3\u30BB\u30FC\u30B8\u306E1\u884C\u76EE\uFF09","subject (first line of the message)"],f:["\u4EF6\u540D\u3092\u30D5\u30A1\u30A4\u30EB\u540D\u306B\u4F7F\u3048\u308B\u5F62\u306B\u3057\u305F\u3082\u306E","subject sanitised for a file name"],b:["\u672C\u6587\uFF08\u4EF6\u540D\u3092\u9664\u3044\u305F\u30E1\u30C3\u30BB\u30FC\u30B8\uFF09","body"],B:["\u30E1\u30C3\u30BB\u30FC\u30B8\u5168\u4F53\uFF08\u52A0\u5DE5\u306A\u3057\uFF09","raw message (subject and body)"],d:["\u30D6\u30E9\u30F3\u30C1\u30FB\u30BF\u30B0\u540D\uFF08\u300C (HEAD -> main, tag: v1)\u300D\u306E\u5F62\uFF09",'ref names, like " (HEAD -> main, tag: v1)"'],D:["\u30D6\u30E9\u30F3\u30C1\u30FB\u30BF\u30B0\u540D\uFF08\u62EC\u5F27\u306A\u3057\uFF09","ref names without the wrapping"],N:["\u30CE\u30FC\u30C8","notes"],e:["\u30A8\u30F3\u30B3\u30FC\u30C7\u30A3\u30F3\u30B0","encoding"],GG:["\u7F72\u540D\u306E\u691C\u8A3C\u7D50\u679C","signature verification output"],G:["\u7F72\u540D\u306E\u72B6\u614B\uFF08G/B/U/N \u306A\u3069\uFF09","signature status (G/B/U/N\u2026)"],GS:["\u7F72\u540D\u8005\u306E\u540D\u524D","signer name"],n:["\u6539\u884C","a newline"],"%":["\u6587\u5B57\u300C%\u300D\u305D\u306E\u3082\u306E",'a literal "%"']},fl=["red","green","blue","yellow","reset","normal","black","magenta","cyan","white","bold"];function Ei(s,e){let t=A(e);if(us[s])return{tokens:[],note:t(us[s][0],us[s][1])};let n=[],r=0,a=/^(t?format):/.exec(s);if(a)n.push({start:0,end:a[0].length,kind:"keyword",children:[],explanation:a[1]==="format"?t("`format:`: \u4EE5\u964D\u306E\u66F8\u5F0F\u3067\u5404\u30B3\u30DF\u30C3\u30C8\u3092\u8868\u793A\u3059\u308B\uFF08\u30B3\u30DF\u30C3\u30C8\u306E\u9593\u306B\u533A\u5207\u308A\u306E\u6539\u884C\uFF09","`format:`: show each commit with the following template (newline between commits)"):t("`tformat:`: \u4EE5\u964D\u306E\u66F8\u5F0F\u3067\u5404\u30B3\u30DF\u30C3\u30C8\u3092\u8868\u793A\u3059\u308B\uFF08\u5404\u30B3\u30DF\u30C3\u30C8\u306E\u5F8C\u306B\u6539\u884C\uFF09","`tformat:`: show each commit with the template (newline after each)")}),r=a[0].length;else if(!s.includes("%"))return;let o=r,l=c=>{c>o&&n.push({start:o,end:c,kind:"string",explanation:t(`\u305D\u306E\u307E\u307E\u8868\u793A\u3059\u308B\u6587\u5B57\u5217\u300C${s.slice(o,c)}\u300D`,`Literal text "${s.slice(o,c)}"`),children:[]})};for(;r<s.length;){if(s[r]!=="%"){r++;continue}let c=s.slice(r+1),u,h=0,d="",p="variable";if((u=/^C\((auto|[a-z ]+)\)/.exec(c))||(u=new RegExp(`^C(${fl.join("|")})`).exec(c)))h=u[0].length,p="operator",d=u[1]==="reset"?t("\u8272\u3092\u5143\u306B\u623B\u3059","reset the colour"):u[1]==="auto"?t("\u4EE5\u964D\u3092 git \u306E\u65E2\u5B9A\u306E\u8272\u306B\u3059\u308B\uFF08\u7AEF\u672B\u306E\u3068\u304D\u3060\u3051\uFF09","use git's default colours from here (only on a terminal)"):t(`\u4EE5\u964D\u306E\u6587\u5B57\u3092 ${u[1]} \u3067\u8272\u4ED8\u3051\u3059\u308B`,`colour what follows ${u[1]}`);else if(u=/^([<>]{1,2}|><)\((\d+)(?:,(trunc|ltrunc|mtrunc))?\)/.exec(c)){h=u[0].length,p="operator";let f=u[1]==="<"?t("\u5DE6\u5BC4\u305B","left-aligned"):u[1]===">"||u[1]===">>"?t("\u53F3\u5BC4\u305B","right-aligned"):t("\u4E2D\u592E\u5BC4\u305B","centred");d=t(`\u6B21\u306E\u9805\u76EE\u3092\u5E45 ${u[2]} \u3067${f}${u[3]?"\uFF08\u9577\u3051\u308C\u3070\u5207\u308A\u8A70\u3081\u308B\uFF09":""}`,`the next item ${f} in ${u[2]} columns${u[3]?" (truncated if longer)":""}`)}else(u=/^x([0-9a-fA-F]{2})/.exec(c))?(h=u[0].length,p="operator",d=t(`16\u9032\u6570 ${u[1]} \u306E\u6587\u5B57`,`the byte 0x${u[1]}`)):(u=/^(GG|GS|an|ae|al|ad|ar|at|ai|aI|as|cn|ce|cd|cr|ct|ci|cI|cs|[HhTtPpsfbBdDNeGn%])/.exec(c))&&(h=u[0].length,d=t(vi[u[1]][0],vi[u[1]][1]));if(!h){r++;continue}l(r),n.push({start:r,end:r+1+h,kind:p,explanation:`\`%${c.slice(0,h)}\`: ${d}`,children:[]}),r+=1+h,o=r}return l(s.length),{tokens:n}}var hs={relative:["\u300C3 days ago\u300D\u306E\u3088\u3046\u306A\u76F8\u5BFE\u8868\u8A18",'relative ("3 days ago")'],local:["\u30ED\u30FC\u30AB\u30EB\u6642\u523B","local time"],iso:["ISO 8601 \u98A8\uFF082026-10-16 09:30:00 +0900\uFF09","ISO 8601-like (2026-10-16 09:30:00 +0900)"],"iso-strict":["\u53B3\u5BC6\u306A ISO 8601","strict ISO 8601"],rfc:["RFC 2822 \u5F62\u5F0F\uFF08\u30E1\u30FC\u30EB\u306E\u65E5\u4ED8\uFF09","RFC 2822 (e-mail style)"],short:["\u65E5\u4ED8\u3060\u3051\uFF082026-10-16\uFF09","date only (2026-10-16)"],raw:["UNIX \u6642\u523B\u3068\u30BF\u30A4\u30E0\u30BE\u30FC\u30F3","UNIX time and zone"],unix:["UNIX \u6642\u523B","UNIX time"],human:["\u4EBA\u9593\u306B\u8AAD\u307F\u3084\u3059\u3044\u5F62","human-friendly"],default:["\u65E2\u5B9A\u306E\u5F62\u5F0F","the default format"]};function Si(s,e){let t=A(e),n=s.replace(/-local$/,"");if(hs[n])return{tokens:[],note:t(hs[n][0],hs[n][1])+(n!==s?t("\uFF08\u30ED\u30FC\u30AB\u30EB\u6642\u523B\u3067\uFF09"," (in local time)"):"")};let r=/^format(-local)?:/.exec(s);if(r)return{tokens:[{start:0,end:r[0].length,kind:"keyword",children:[],explanation:t("`format:`: \u4EE5\u964D\u306E strftime \u66F8\u5F0F\u3067\u65E5\u6642\u3092\u8868\u793A\u3059\u308B","`format:`: show dates with the following strftime format")},...ye(zt(s.slice(r[0].length),e),r[0].length)]}}var Ue=class extends Error{};function Ti(s=Date.now()){let e=Math.floor(s/1e3),t=["3f2a9c1d8e7b6a5f4c3d2e1f0a9b8c7d6e5f4a3b","b81e44a2c9d7f3e6a5b4c3d2e1f0a9b8c7d6e5f4","9d0c7e3b2a1f6e5d4c3b2a1f0e9d8c7b6a5f4e3d"],n=["e1d2c3b4a5f6e7d8c9b0a1f2e3d4c5b6a7f8e9d0","a7b8c9d0e1f2a3b4c5d6e7f8a9b0c1d2e3f4a5b6","5c6d7e8f9a0b1c2d3e4f5a6b7c8d9e0f1a2b3c4d"],r={name:"Alice Smith",email:"alice@example.com"},a={name:"Bob Lee",email:"bob@example.com"};return[{hash:t[0],tree:n[0],parents:[t[1]],author:r,time:e-2*3600,subject:"Fix login timeout",body:`Raise the timeout to 30 seconds.
76
- `,refs:"HEAD -> main, origin/main"},{hash:t[1],tree:n[1],parents:[t[2]],author:a,time:e-3*86400-5*3600,subject:"Add user search",body:"",refs:"tag: v1.2.0"},{hash:t[2],tree:n[2],parents:[],author:r,time:e-23*86400,subject:"Initial commit",body:"",refs:""}]}var ml=["Sun","Mon","Tue","Wed","Thu","Fri","Sat"],gl=["Sunday","Monday","Tuesday","Wednesday","Thursday","Friday","Saturday"],Ni=["Jan","Feb","Mar","Apr","May","Jun","Jul","Aug","Sep","Oct","Nov","Dec"],_l=["January","February","March","April","May","June","July","August","September","October","November","December"],ve=(s,e=2)=>String(s).padStart(e,"0");function Ge(s,e=!1){let t=-s.getTimezoneOffset(),n=t<0?"-":"+",r=Math.abs(t);return`${n}${ve(Math.floor(r/60))}${e?":":""}${ve(r%60)}`}function bl(s,e){return s.replace(/%([-_0^#]?)([a-zA-Z%+])/g,(t,n,r)=>{let a=new Date(e.getFullYear(),0,1),o={Y:String(e.getFullYear()),y:ve(e.getFullYear()%100),C:ve(Math.floor(e.getFullYear()/100)),m:ve(e.getMonth()+1),d:ve(e.getDate()),e:String(e.getDate()).padStart(2," "),H:ve(e.getHours()),I:ve(e.getHours()%12||12),M:ve(e.getMinutes()),S:ve(e.getSeconds()),k:String(e.getHours()).padStart(2," "),l:String(e.getHours()%12||12).padStart(2," "),p:e.getHours()<12?"AM":"PM",P:e.getHours()<12?"am":"pm",a:ml[e.getDay()],A:gl[e.getDay()],b:Ni[e.getMonth()],h:Ni[e.getMonth()],B:_l[e.getMonth()],j:ve(Math.round((new Date(e.getFullYear(),e.getMonth(),e.getDate()).getTime()-a.getTime())/864e5)+1,3),u:String(e.getDay()||7),w:String(e.getDay()),s:String(Math.floor(e.getTime()/1e3)),z:Ge(e),n:`
77
- `,t:" ","%":"%"};o.F=`${o.Y}-${o.m}-${o.d}`,o.T=`${o.H}:${o.M}:${o.S}`,o.R=`${o.H}:${o.M}`,o.D=`${o.m}/${o.d}/${o.y}`,o.r=`${o.I}:${o.M}:${o.S} ${o.p}`;let l=o[r];if(l===void 0)throw new Ue(`%${r}`);return n==="-"?l.replace(/^[0 ]+(?=.)/,""):n==="^"?l.toUpperCase():l})}function Mi(s,e){let t=Math.floor(e/1e3)-s,n=(c,u)=>`${c} ${u}${c===1?"":"s"} ago`;if(t<0)return"in the future";if(t<90)return n(t,"second");let r=Math.floor((t+30)/60);if(r<90)return n(r,"minute");let a=Math.floor((r+30)/60);if(a<36)return n(a,"hour");let o=Math.floor((a+12)/24);if(o<14)return n(o,"day");if(o<70)return n(Math.floor((o+3)/7),"week");if(o<365)return n(Math.floor((o+15)/30),"month");let l=Math.floor((o*12+180)/365/12);return n(l,"year")}function Ye(s,e,t){let n=new Date(s*1e3),r=e.endsWith("-local")||e==="local",a=e.replace(/-local$/,""),o=l=>bl(l,n);if(a.startsWith("format:"))return o(a.slice(7));switch(a){case"default":case"local":return o("%a %b %-d %H:%M:%S %Y")+(r?"":` ${Ge(n)}`);case"iso":case"iso8601":return o("%Y-%m-%d %H:%M:%S ")+Ge(n);case"iso-strict":case"iso8601-strict":return o("%Y-%m-%dT%H:%M:%S")+(Ge(n)==="+0000"?"Z":Ge(n,!0));case"rfc":case"rfc2822":return o("%a, %-d %b %Y %H:%M:%S ")+Ge(n);case"short":return o("%Y-%m-%d");case"raw":return`${s} ${Ge(n)}`;case"unix":return String(s);case"relative":return Mi(s,t);default:throw new Ue(e)}}function Ri(s,e,t="default",n=Date.now()){let r=h=>Ye(h.time,t,n),a=h=>["",` ${h.subject}`,...h.body?[" ",...h.body.replace(/\n$/,"").split(`
78
- `).map(d=>` ${d}`)]:[]],o={oneline:h=>[`${h.hash} ${h.subject}`],short:h=>[`commit ${h.hash}`,`Author: ${h.author.name} <${h.author.email}>`,"",` ${h.subject}`],medium:h=>[`commit ${h.hash}`,`Author: ${h.author.name} <${h.author.email}>`,`Date: ${r(h)}`,...a(h)],full:h=>[`commit ${h.hash}`,`Author: ${h.author.name} <${h.author.email}>`,`Commit: ${h.author.name} <${h.author.email}>`,...a(h)],fuller:h=>[`commit ${h.hash}`,`Author: ${h.author.name} <${h.author.email}>`,`AuthorDate: ${r(h)}`,`Commit: ${h.author.name} <${h.author.email}>`,`CommitDate: ${r(h)}`,...a(h)],reference:h=>[`${h.hash.slice(0,7)} (${h.subject}, ${Ye(h.time,"short",n)})`]},l=e??"medium";if(o[l])return s.flatMap((h,d)=>[...d&&l!=="oneline"&&l!=="reference"?[""]:[],...o[l](h)]);let c=/^(t?format):([\s\S]*)$/.exec(l);if(!c&&!l.includes("%"))throw new Ue(l);let u=c?c[2]:l;return s.map(h=>xl(u,h,r,n)).join(`
74
+ `)?[`- ${n[0]}`,...n.slice(1).map(r=>` ${r}`)]:[`- ${n[0]}`,...n.slice(1).map(r=>` ${r}`)]}):["[]"];if(xi(s)){let t=Object.keys(s);return t.length?t.flatMap(n=>{let r=bi(n,e),a=s[n];if(Array.isArray(a)&&a.length||xi(a)&&Object.keys(a).length)return[`${r}:`,...Je(a,e).map(l=>` ${l}`)];let o=Je(a,e);return[`${r}: ${o[0]}`,...o.slice(1)]}):["{}"]}return[bi(s,e)]}function ki(s,e){if(e==="mikefarah")return s.flatMap(r=>typeof r=="string"&&!r.includes(`
75
+ `)?[r]:Je(r,e));let t=[];s.forEach((r,a)=>{a&&t.push("---"),t.push(...Je(r,e))});let n=s[s.length-1];return s.length&&(n===null||typeof n!="object")&&!/^['"]/.test(t[t.length-1])&&t.push("..."),t}var $i=s=>({json:{ja:"JSON",en:"JSON"},j:{ja:"JSON",en:"JSON"},yaml:{ja:"YAML",en:"YAML"},y:{ja:"YAML",en:"YAML"},props:{ja:"Java \u306E properties \u5F62\u5F0F",en:"Java properties"},p:{ja:"Java \u306E properties \u5F62\u5F0F",en:"Java properties"},xml:{ja:"XML",en:"XML"},x:{ja:"XML",en:"XML"},csv:{ja:"CSV",en:"CSV"},c:{ja:"CSV",en:"CSV"},tsv:{ja:"TSV",en:"TSV"},t:{ja:"TSV",en:"TSV"},toml:{ja:"TOML",en:"TOML"},lua:{ja:"Lua",en:"Lua"},l:{ja:"Lua",en:"Lua"},ini:{ja:"INI",en:"INI"},i:{ja:"INI",en:"INI"},...s==="output"?{shell:{ja:"\u30B7\u30A7\u30EB\u306E\u5909\u6570\u4EE3\u5165\uFF08`a_b=1`\uFF09",en:"shell variable assignments (`a_b=1`)"},s:{ja:"\u30B7\u30A7\u30EB\u306E\u5909\u6570\u4EE3\u5165",en:"shell assignments"}}:{}}),St=[["-o|--output-format","\u51FA\u529B\u5F62\u5F0F\uFF08`json`\u30FB`yaml`\u30FB`xml`\u30FB`props`\u30FB`csv`\u30FB`tsv`\u30FB`toml`\u30FB`shell`\u30FB`lua` \u306A\u3069\u3002\u65E2\u5B9A\u306F\u5165\u529B\u3068\u540C\u3058\uFF09","output format (`json`, `yaml`, `xml`, `props`, `csv`, `tsv`, `toml`, `shell`, `lua`\u2026; defaults to the input format)","arg",$i("output")],["-p|--input-format","\u5165\u529B\u5F62\u5F0F\uFF08`json`\u30FB`xml`\u30FB`csv`\u30FB`toml`\u30FB`props`\u30FB`ini` \u306A\u3069\u3002\u65E2\u5B9A\u306F\u62E1\u5F35\u5B50\u304B\u3089\u5224\u65AD\uFF09","input format (`json`, `xml`, `csv`, `toml`, `props`, `ini`\u2026; guessed from the file extension)","arg",$i("input")],["-i|--inplace","\u7D50\u679C\u3067\u6700\u521D\u306E\u30D5\u30A1\u30A4\u30EB\u3092\u4E0A\u66F8\u304D\u3059\u308B","update the first file in place"],["-n|--null-input","\u5165\u529B\u3092\u8AAD\u307E\u305A\u306B\u5F0F\u3060\u3051\u3067\u6587\u66F8\u3092\u4F5C\u308B","read no input; build a document from the expression"],["-P|--prettyPrint","`{a: 1}` \u306E\u3088\u3046\u306A\u66F8\u304D\u65B9\u3082\u901A\u5E38\u306E\u30D6\u30ED\u30C3\u30AF\u5F62\u5F0F\u306B\u6574\u3048\u308B","pretty print (turn flow style like `{a: 1}` into block style)"],["-I|--indent","\u30A4\u30F3\u30C7\u30F3\u30C8\u306E\u5E45\uFF08\u65E2\u5B9A 2\uFF09","indentation width (default 2)","arg"],["-r|--unwrapScalar","\u6587\u5B57\u5217\u306A\u3069\u3092\u30AF\u30A9\u30FC\u30C8\u306A\u3057\u3067\u51FA\u529B\u3059\u308B\uFF08YAML \u3067\u306F\u65E2\u5B9A\uFF09","print scalars without quotes (the default for YAML)"],["-e|--exit-status","\u7D50\u679C\u304C null\u30FBfalse\u30FB\u306A\u3057\u306A\u3089\u5931\u6557\u306E\u7D42\u4E86\u30B9\u30C6\u30FC\u30BF\u30B9\u306B\u3059\u308B","exit with an error if the result is null, false or nothing"],["-f|--front-matter","Markdown \u306A\u3069\u306E\u5148\u982D\u306E YAML\uFF08\u30D5\u30ED\u30F3\u30C8\u30DE\u30BF\u30FC\uFF09\u3060\u3051\u3092\u51E6\u7406\u3059\u308B\uFF08`extract`\u30FB`process`\uFF09","process only the YAML front matter (`extract` or `process`)","arg"],["-0|--nul-output","\u7D50\u679C\u3092 NUL \u6587\u5B57\u533A\u5207\u308A\u3067\u51FA\u529B\u3059\u308B\uFF08`xargs -0` \u5411\u3051\uFF09","separate results with NUL (for `xargs -0`)"],["-N|--no-doc","\u30C9\u30AD\u30E5\u30E1\u30F3\u30C8\u533A\u5207\u308A `---` \u3092\u51FA\u529B\u3057\u306A\u3044","do not print the `---` document separators"],["-s|--split-exp","\u7D50\u679C\u3054\u3068\u306B\u3001\u3053\u306E\u5F0F\u306E\u540D\u524D\u306E\u30D5\u30A1\u30A4\u30EB\u306B\u66F8\u304D\u51FA\u3059","write each result to a file named by this expression","arg"],["-C|--colors","\u8272\u4ED8\u304D\u3067\u51FA\u529B\u3059\u308B","force colours"],["-M|--no-colors","\u8272\u3092\u4ED8\u3051\u306A\u3044","no colours"],["-v|--verbose","\u8A73\u3057\u3044\u30ED\u30B0\u3092\u51FA\u3059","verbose logging"],["--expression","\u5F0F\u3092\u660E\u793A\u3059\u308B\uFF08\u30D5\u30A1\u30A4\u30EB\u540D\u3068\u533A\u5225\u3067\u304D\u306A\u3044\u3068\u304D\uFF09","give the expression explicitly (when it looks like a file)","arg"],["--from-file","\u5F0F\u3092\u30D5\u30A1\u30A4\u30EB\u304B\u3089\u8AAD\u3080","read the expression from a file","arg"]],Nt={positional:[S("yq \u306E\u5F0F\uFF08jq \u306B\u4F3C\u305F\u8A18\u6CD5\uFF09","yq expression (jq-like)"),S("\u5165\u529B\u30D5\u30A1\u30A4\u30EB\uFF08\u7701\u7565\u3059\u308B\u3068\u6A19\u6E96\u5165\u529B\uFF09","input file (stdin if omitted)")],positionalLang:["yq4"]},fl=k("YAML\uFF08JSON\u30FBXML\u30FBTOML \u306A\u3069\u3082\uFF09\u3092 jq \u306B\u4F3C\u305F\u5F0F\u3067\u62BD\u51FA\u30FB\u5909\u63DB\u3059\u308B\uFF08mikefarah/yq v4\uFF09","Query and edit YAML (also JSON, XML, TOML\u2026) with jq-like expressions (mikefarah/yq v4)",St,{...Nt,subcommands:{e:k("\u5F0F\u3092\u5404\u30C9\u30AD\u30E5\u30E1\u30F3\u30C8\u306B\u9806\u306B\u9069\u7528\u3059\u308B\uFF08`eval`\uFF09","apply the expression to each document (`eval`)",St,Nt),eval:k("\u5F0F\u3092\u5404\u30C9\u30AD\u30E5\u30E1\u30F3\u30C8\u306B\u9806\u306B\u9069\u7528\u3059\u308B","apply the expression to each document",St,Nt),ea:k("\u5168\u30D5\u30A1\u30A4\u30EB\u306E\u30C9\u30AD\u30E5\u30E1\u30F3\u30C8\u3092\u307E\u3068\u3081\u30661\u56DE\u3067\u51E6\u7406\u3059\u308B\uFF08`eval-all`\u3002\u30DE\u30FC\u30B8\u306A\u3069\u306B\u4F7F\u3046\uFF09","process the documents of all files together (`eval-all`; for merging)",St,Nt),"eval-all":k("\u5168\u30D5\u30A1\u30A4\u30EB\u306E\u30C9\u30AD\u30E5\u30E1\u30F3\u30C8\u3092\u307E\u3068\u3081\u30661\u56DE\u3067\u51E6\u7406\u3059\u308B\uFF08\u30DE\u30FC\u30B8\u306A\u3069\u306B\u4F7F\u3046\uFF09","process the documents of all files together (for merging)",St,Nt)}}),ml=k("YAML \u3092 JSON \u306B\u5909\u63DB\u3057\u3066 jq \u3067\u51E6\u7406\u3059\u308B\uFF08kislyuk/yq\u3002\u5F0F\u306F jq \u305D\u306E\u3082\u306E\u3002\u51FA\u529B\u306F\u65E2\u5B9A\u3067 JSON\uFF09","Convert YAML to JSON and process it with jq (kislyuk/yq; the filter is plain jq; output is JSON by default)",[["-y|--yaml-output|--yml-output","\u7D50\u679C\u3092 YAML \u306B\u623B\u3057\u3066\u51FA\u529B\u3059\u308B","convert the result back to YAML"],["-Y|--yaml-roundtrip|--yml-roundtrip","\u30BF\u30B0\u3084\u30B9\u30BF\u30A4\u30EB\u3092\u4FDD\u3063\u305F\u307E\u307E YAML \u3067\u51FA\u529B\u3059\u308B","output YAML keeping tags and styles"],["-i|--in-place","\u7D50\u679C\u3067\u5165\u529B\u30D5\u30A1\u30A4\u30EB\u3092\u4E0A\u66F8\u304D\u3059\u308B","edit the files in place"],["-w|--width","YAML \u51FA\u529B\u306E\u6298\u308A\u8FD4\u3057\u5E45","wrap width of YAML output","arg"],["--indentless-lists|--indentless","YAML \u51FA\u529B\u3067\u30EA\u30B9\u30C8\u3092\u30A4\u30F3\u30C7\u30F3\u30C8\u3057\u306A\u3044","do not indent lists in YAML output"],["--explicit-start","YAML \u51FA\u529B\u306E\u5148\u982D\u306B `---` \u3092\u4ED8\u3051\u308B","start YAML output with `---`"],["-r|--raw-output","\u6587\u5B57\u5217\u3092\u30AF\u30A9\u30FC\u30C8\u306A\u3057\u3067\u51FA\u529B\u3059\u308B\uFF08jq \u306E `-r`\uFF09","print strings without quotes (jq's `-r`)"],["-c|--compact-output","1\u884C\u306B\u8A70\u3081\u3066\u51FA\u529B\u3059\u308B","compact output"],["-e|--exit-status","\u7D50\u679C\u304C null\u30FBfalse \u306A\u3089\u5931\u6557\u306E\u7D42\u4E86\u30B9\u30C6\u30FC\u30BF\u30B9\u306B\u3059\u308B","set the exit status from the result"],["-n|--null-input","\u5165\u529B\u3092\u8AAD\u307E\u306A\u3044","do not read input"],["-s|--slurp","\u5168\u5165\u529B\u30921\u3064\u306E\u914D\u5217\u3068\u3057\u3066\u8AAD\u3080","read all inputs into one array"],["-S|--sort-keys","\u30AD\u30FC\u3092\u30BD\u30FC\u30C8\u3057\u3066\u51FA\u529B\u3059\u308B","sort keys"],["--arg","jq \u306E\u5909\u6570\u306B\u6587\u5B57\u5217\u3092\u6E21\u3059\uFF08`--arg name value`\uFF09","pass a string variable (`--arg name value`)","arg"],["--argjson","jq \u306E\u5909\u6570\u306B JSON \u306E\u5024\u3092\u6E21\u3059","pass a JSON variable","arg"]],{positional:[S("jq \u30D5\u30A3\u30EB\u30BF\uFF08\u4F8B: `.items[].name`\uFF09","jq filter (e.g. `.items[].name`)"),S("\u5165\u529B YAML \u30D5\u30A1\u30A4\u30EB","input YAML file")],positionalLang:["jq"]}),Ce=[["-j|--tojson","JSON \u3067\u51FA\u529B\u3059\u308B","output JSON"],["-P|--prettyPrint","\u6574\u5F62\u3057\u3066\u51FA\u529B\u3059\u308B","pretty print"],["-I|--indent","\u30A4\u30F3\u30C7\u30F3\u30C8\u306E\u5E45","indentation width","arg"],["-C|--colors","\u8272\u4ED8\u304D\u3067\u51FA\u529B\u3059\u308B","colours"],["-v|--verbose","\u8A73\u3057\u3044\u30ED\u30B0\u3092\u51FA\u3059","verbose"]],Tt=["-d|--doc","\u5BFE\u8C61\u306E\u30C9\u30AD\u30E5\u30E1\u30F3\u30C8\u756A\u53F7\uFF080 \u304B\u3089\u3002`*` \u3067\u5168\u90E8\uFF09","document index (from 0; `*` for all)","arg"],dn=["-i|--inplace","\u30D5\u30A1\u30A4\u30EB\u3092\u4E0A\u66F8\u304D\u3059\u308B","update the file in place"],lt=S("\u30D1\u30B9\uFF08`a.b[0].c`\u3001`a.*`\u3001`a.(name==x)` \u306A\u3069\u3002jq \u306E\u5F0F\u3067\u306F\u306A\u3044\uFF09","path (`a.b[0].c`, `a.*`, `a.(name==x)`\u2026; not a jq expression)"),He=S("YAML \u30D5\u30A1\u30A4\u30EB","YAML file"),ms=k("YAML \u3092\u30D1\u30B9\u3067\u8AAD\u307F\u66F8\u304D\u3059\u308B\uFF08mikefarah/yq v3\u3002v4 \u3068\u306F\u8A18\u6CD5\u304C\u9055\u3046\uFF09","Read and write YAML by path (mikefarah/yq v3; different syntax from v4)",Ce,{subcommands:{r:k("\u30D1\u30B9\u306E\u5024\u3092\u8AAD\u3080\uFF08read\uFF09","read the value at a path",[...Ce,Tt,["-p|--printMode","\u8868\u793A\u5185\u5BB9\uFF08`v` \u5024\u30FB`p` \u30D1\u30B9\u30FB`pv` \u4E21\u65B9\uFF09","what to print (`v` values, `p` paths, `pv` both)","arg"],["-l|--length","\u9577\u3055\u3092\u8868\u793A\u3059\u308B","print the length"],["-c|--collect","\u7D50\u679C\u3092\u914D\u5217\u306B\u307E\u3068\u3081\u308B","collect results into an array"],["-D|--defaultValue","\u898B\u3064\u304B\u3089\u306A\u3044\u3068\u304D\u306B\u8868\u793A\u3059\u308B\u5024","value printed when nothing matches","arg"],["-X|--explodeAnchors","\u30A2\u30F3\u30AB\u30FC\u3092\u5C55\u958B\u3059\u308B","explode anchors"],["-e|--exitStatus","\u898B\u3064\u304B\u3089\u306A\u3051\u308C\u3070\u5931\u6557\u306E\u7D42\u4E86\u30B9\u30C6\u30FC\u30BF\u30B9","exit with an error if nothing matches"]],{positional:[He,lt],positionalLang:[void 0,"yq3path"]}),w:k("\u30D1\u30B9\u306B\u5024\u3092\u66F8\u304D\u8FBC\u3080\uFF08write\uFF09","write a value at a path",[...Ce,Tt,dn,["-s|--script","\u66F4\u65B0\u5185\u5BB9\u3092\u66F8\u3044\u305F\u30B9\u30AF\u30EA\u30D7\u30C8\u30D5\u30A1\u30A4\u30EB","update script file","arg"],["--tag","YAML \u30BF\u30B0","YAML tag","arg"],["--style","\u66F8\u304D\u65B9\u306E\u30B9\u30BF\u30A4\u30EB","style","arg"]],{positional:[He,lt,S("\u66F8\u304D\u8FBC\u3080\u5024","value to write")],positionalLang:[void 0,"yq3path"]}),d:k("\u30D1\u30B9\u306E\u5024\u3092\u524A\u9664\u3059\u308B\uFF08delete\uFF09","delete the value at a path",[...Ce,Tt,dn],{positional:[He,lt],positionalLang:[void 0,"yq3path"]}),m:k("\u8907\u6570\u306E YAML \u3092\u30DE\u30FC\u30B8\u3059\u308B\uFF08merge\uFF09","merge YAML files",[...Ce,Tt,dn,["-x|--overwrite","\u65E2\u5B58\u306E\u5024\u3092\u4E0A\u66F8\u304D\u3059\u308B","overwrite existing values"],["-a|--arrays","\u914D\u5217\u306E\u30DE\u30FC\u30B8\u65B9\u6CD5\uFF08`update`\u30FB`append`\u30FB`overwrite`\uFF09","array merge strategy (`update`, `append`, `overwrite`)","arg"]],{positional:[S("\u30DE\u30FC\u30B8\u5148\u306E YAML \u30D5\u30A1\u30A4\u30EB","YAML file to merge into"),S("\u30DE\u30FC\u30B8\u3059\u308B YAML \u30D5\u30A1\u30A4\u30EB","YAML file to merge")]}),n:k("\u65B0\u3057\u3044 YAML \u3092\u4F5C\u308B\uFF08new\uFF09","create new YAML",[...Ce,["-s|--script","\u30B9\u30AF\u30EA\u30D7\u30C8\u30D5\u30A1\u30A4\u30EB","script file","arg"]],{positional:[lt,S("\u5024","value")],positionalLang:["yq3path"]}),p:k("\u5168\u4F53\u3092\u30D1\u30B9\u306E\u4E0B\u306B\u5165\u308C\u308B\uFF08prefix\uFF09","nest the document under a path",[...Ce,Tt,dn],{positional:[He,lt],positionalLang:[void 0,"yq3path"]}),x:k("2\u3064\u306E YAML \u3092\u6BD4\u8F03\u3059\u308B\uFF08compare\uFF09","compare two YAML files",Ce,{positional:[He,He,lt],positionalLang:[void 0,void 0,"yq3path"]}),v:k("YAML \u3068\u3057\u3066\u6B63\u3057\u3044\u304B\u691C\u8A3C\u3059\u308B\uFF08validate\uFF09","validate YAML",Ce,{positional:[He]})}});for(let[s,e]of[["r","read"],["w","write"],["d","delete"],["m","merge"],["n","new"],["p","prefix"],["x","compare"],["v","validate"]])ms.subcommands[e]=ms.subcommands[s];var vi={mikefarah4:fl,kislyuk:ml,mikefarah3:ms};function gs(s){if(!s||typeof s!="object")return;let e=s;if(typeof e.summary!="string")return;let t=a=>({ja:a,en:a}),n={};for(let[a,o]of Object.entries(e.options??{})){let l=typeof o=="string"?o:o&&typeof o=="object"&&typeof o.description=="string"?o.description:void 0;if(l===void 0)continue;let c={text:t(l),...typeof o=="object"&&o.takesValue?{arg:!0}:{}};for(let u of a.split("|"))n[u.trim()]=c}let r=Array.isArray(e.arguments)?e.arguments.filter(a=>typeof a=="string"):[];return{summary:t(e.summary),options:n,...r.length?{positional:r.map(t)}:{}}}var _s=/(?:#|<!--)\s*bash-explainer\s+(disable|disable-file)=([\w*,-]+)/;function Ei(s){let e={file:new Set,lines:new Map},t=(n,r)=>{let a=e.lines.get(n)??new Set;r.forEach(o=>a.add(o)),e.lines.set(n,a)};return s.forEach((n,r)=>{let a=_s.exec(n);if(!a)return;let o=a[2].split(",").filter(Boolean);if(a[1]==="disable-file"){o.forEach(c=>e.file.add(c));return}if(n.slice(0,a.index).trim())return t(r,o);let l=r+1;for(;l<s.length&&(!s[l].trim()||/^\s*(#|<!--)/.test(s[l]));)l++;l<s.length&&t(l,o)}),e}function Si(s,e,t){let n=r=>!!r&&(r.has(t)||r.has("all"));return n(s.file)||n(s.lines.get(e))}function Ni(s,e){let t=O(e);if(!/^[+-]?([A-Za-z0-9](::?)?)*$/.test(s)||!s)return;let n=[],r=[],a=0;for(s[0]==="+"?(n.push({start:0,end:1,kind:"operator",children:[],explanation:t("\u5148\u982D\u306E `+`: \u6700\u521D\u306E\u30AA\u30D7\u30B7\u30E7\u30F3\u3067\u306A\u3044\u5F15\u6570\u3067\u30AA\u30D7\u30B7\u30E7\u30F3\u306E\u89E3\u6790\u3092\u3084\u3081\u308B\uFF08\u4EE5\u964D\u306F\u3059\u3079\u3066\u901A\u5E38\u306E\u5F15\u6570\uFF09","Leading `+`: stop at the first non-option argument (everything after it is a plain argument)")}),a=1):s[0]==="-"&&(n.push({start:0,end:1,kind:"operator",children:[],explanation:t("\u5148\u982D\u306E `-`: \u30AA\u30D7\u30B7\u30E7\u30F3\u3067\u306A\u3044\u5F15\u6570\u3092\u5F8C\u308D\u306B\u56DE\u3055\u305A\u3001\u5143\u306E\u4F4D\u7F6E\u306E\u307E\u307E\u51FA\u529B\u3059\u308B","Leading `-`: keep non-option arguments in place instead of moving them after `--`")}),a=1);a<s.length;){let o=s[a],l=s.startsWith("::",a+1)?2:s[a+1]===":"?1:0;n.push({start:a,end:a+1+l,kind:"option",children:[],explanation:l===2?t(`\`${o}::\`: \u30AA\u30D7\u30B7\u30E7\u30F3 -${o} \u306F\u5024\u3092\u7701\u7565\u3067\u304D\u308B\uFF08\u5024\u306F \`-${o}\u5024\` \u306E\u3088\u3046\u306B\u7D9A\u3051\u3066\u66F8\u304F\u3002\u7701\u7565\u3059\u308B\u3068\u7A7A\u6587\u5B57\uFF09`,`\`${o}::\`: option -${o} takes an optional value (written attached, \`-${o}VALUE\`; empty if omitted)`):l===1?t(`\`${o}:\`: \u30AA\u30D7\u30B7\u30E7\u30F3 -${o} \u306F\u5024\u3092\u53D6\u308B\uFF08\`-${o} \u5024\` \u307E\u305F\u306F \`-${o}\u5024\`\uFF09`,`\`${o}:\`: option -${o} takes a value (\`-${o} VALUE\` or \`-${o}VALUE\`)`):t(`\`${o}\`: \u30AA\u30D7\u30B7\u30E7\u30F3 -${o}\uFF08\u5024\u306A\u3057\uFF09`,`\`${o}\`: option -${o} (no value)`)}),r.push(l===2?t(`-${o}[\u5024]`,`-${o}[VALUE]`):l?t(`-${o} \u5024`,`-${o} VALUE`):`-${o}`),a+=1+l}return{tokens:n,note:t(`\u53D7\u3051\u4ED8\u3051\u308B\u77ED\u3044\u30AA\u30D7\u30B7\u30E7\u30F3: ${r.join("\u3001")}`,`short options: ${r.join(", ")}`)}}function Ti(s,e){let t=O(e);if(!/^[A-Za-z0-9][\w-]*(::?)?(,[A-Za-z0-9][\w-]*(::?)?)*$/.test(s))return;let n=[],r=[],a=0;for(let o of s.split(",")){a&&n.push({start:a-1,end:a,kind:"operator",children:[],explanation:t("`,`: \u9577\u3044\u30AA\u30D7\u30B7\u30E7\u30F3\u306E\u533A\u5207\u308A","`,` separates long options")});let l=o.replace(/:+$/,""),c=o.length-l.length;n.push({start:a,end:a+o.length,kind:"option",children:[],explanation:c===2?t(`\`${o}\`: \u30AA\u30D7\u30B7\u30E7\u30F3 --${l} \u306F\u5024\u3092\u7701\u7565\u3067\u304D\u308B\uFF08\`--${l}=\u5024\` \u306E\u5F62\u3067\u66F8\u304F\uFF09`,`\`${o}\`: option --${l} takes an optional value (written \`--${l}=VALUE\`)`):c===1?t(`\`${o}\`: \u30AA\u30D7\u30B7\u30E7\u30F3 --${l} \u306F\u5024\u3092\u53D6\u308B\uFF08\`--${l} \u5024\` \u307E\u305F\u306F \`--${l}=\u5024\`\uFF09`,`\`${o}\`: option --${l} takes a value (\`--${l} VALUE\` or \`--${l}=VALUE\`)`):t(`\`${o}\`: \u30AA\u30D7\u30B7\u30E7\u30F3 --${l}\uFF08\u5024\u306A\u3057\uFF09`,`\`${o}\`: option --${l} (no value)`)}),r.push(c===2?t(`--${l}[=\u5024]`,`--${l}[=VALUE]`):c?t(`--${l} \u5024`,`--${l} VALUE`):`--${l}`),a+=o.length+1}return{tokens:n,note:t(`\u53D7\u3051\u4ED8\u3051\u308B\u9577\u3044\u30AA\u30D7\u30B7\u30E7\u30F3: ${r.join("\u3001")}\uFF08\u4E00\u610F\u306B\u6C7A\u307E\u308C\u3070 \`--${s.split(",")[0].replace(/:+$/,"").slice(0,3)}\` \u306E\u3088\u3046\u306B\u7701\u7565\u53EF\uFF09`,`long options: ${r.join(", ")} (unique prefixes such as \`--${s.split(",")[0].replace(/:+$/,"").slice(0,3)}\` also work)`)}}var Ie=class extends Error{};function gl(s,e){let t=s.replace(/^[+-]/,"");for(let n=0;n<t.length;){if(t[n]===":"){n++;continue}let r=t.startsWith("::",n+1)?2:t[n+1]===":"?1:0;if(t[n]===e)return r;n+=1+r}}function Mi(s){return s.map(e=>{let t=e.replace(/:+$/,"");return[t,e.length-t.length]})}function Ri(s,e){let t=u=>s.legacy?u:`'${u.replace(/'/g,"'\\''")}'`,n=[],r=[],a=s.short.startsWith("-"),o=s.short.startsWith("+"),l=Mi(s.long),c=u=>{let h=l.find(([p])=>p===u);if(h)return h;let d=l.filter(([p])=>p.startsWith(u));if(d.length!==1)throw new Ie(`--${u}`);return d[0]};for(let u=0;u<e.length;u++){let h=e[u];if(h==="--"){r.push(...e.slice(u+1).map(t));break}if((h.startsWith("--")||s.alternative&&/^-[^-]/.test(h)&&h.length>2&&l.some(([p])=>p.startsWith(h.slice(1).split("=")[0])))&&h.length>2){let p=h.replace(/^--?/,""),f=p.indexOf("="),[m,g]=c(f<0?p:p.slice(0,f));if(n.push(`--${m}`),g===1)if(f>=0)n.push(t(p.slice(f+1)));else if(u+1<e.length)n.push(t(e[++u]));else throw new Ie("missing value");else if(g===2)n.push(t(f>=0?p.slice(f+1):""));else if(f>=0)throw new Ie("unexpected value");continue}if(h.startsWith("-")&&h.length>1){for(let p=1;p<h.length;p++){let f=gl(s.short,h[p]);if(f===void 0)throw new Ie(`-${h[p]}`);if(n.push(`-${h[p]}`),f===0)continue;let m=h.slice(p+1);if(f===1)if(m)n.push(t(m));else if(u+1<e.length)n.push(t(e[++u]));else throw new Ie("missing value");else n.push(t(m));break}continue}if(o){r.push(...e.slice(u).map(t));break}a?n.push(t(h)):r.push(t(h))}return" "+[...n,"--",...r].join(" ")}function bs(s){return/out|file|path|log|config|conf|input|dir/i.test(s)?/dir/i.test(s)?"build":/out/i.test(s)?"out.txt":"input.txt":/num|count|level|port|size|limit|max|min|jobs|depth|timeout|retr|verbose/i.test(s)?"3":/name|user/i.test(s)?"alice":/colou?r/i.test(s)?"always":"value"}function Ai(s){let e=s.short.replace(/^[+-]/,""),t=[];for(let p=0;p<e.length;){let f=e.startsWith("::",p+1)?2:e[p+1]===":"?1:0;t.push([e[p],f]),p+=1+f}let n=Mi(s.long),r=p=>n.find(([f])=>f[0]===p)?.[0]??p,a=["file1.txt"],o=t.filter(([,p])=>p===0).slice(0,2).map(([p])=>p);s.short.startsWith("+")&&(a.length=0),o.length&&a.push(`-${o.join("")}`);let l=t.find(([,p])=>p===1);l&&a.push(`-${l[0]}`,bs(r(l[0])));let c=t.find(([,p])=>p===2);c&&a.push(`-${c[0]}`);let u=n.find(([p,f])=>f===1&&!(l&&p[0]===l[0]));u&&a.push(`--${u[0]}=${bs(u[0])}`);let h=n.find(([,p])=>p===2);h&&a.push(`--${h[0]}=${bs(h[0])}`);let d=n.find(([p,f])=>f===0&&!o.includes(p[0]));return d&&a.push(`--${d[0]}`),s.short.startsWith("+")?a.push("file1.txt","-x"):a.push("file2.txt"),a}var xs={oneline:["1\u30B3\u30DF\u30C3\u30C81\u884C\uFF08\u30CF\u30C3\u30B7\u30E5\u3068\u4EF6\u540D\uFF09","one line per commit (hash and subject)"],short:["\u30CF\u30C3\u30B7\u30E5\u30FB\u4F5C\u8005\u30FB\u4EF6\u540D","hash, author and subject"],medium:["\u30CF\u30C3\u30B7\u30E5\u30FB\u4F5C\u8005\u30FB\u65E5\u6642\u30FB\u30E1\u30C3\u30BB\u30FC\u30B8\uFF08\u65E2\u5B9A\uFF09","hash, author, date and message (default)"],full:["\u30CF\u30C3\u30B7\u30E5\u30FB\u4F5C\u8005\u30FB\u30B3\u30DF\u30C3\u30BF\u30FC\u30FB\u30E1\u30C3\u30BB\u30FC\u30B8","hash, author, committer and message"],fuller:["full \u306B\u52A0\u3048\u3066\u4E21\u65B9\u306E\u65E5\u6642","full plus both dates"],reference:["\u300C\u30CF\u30C3\u30B7\u30E5 (\u4EF6\u540D, \u65E5\u4ED8)\u300D\u306E\u5F62",'"hash (subject, date)"'],email:["\u30E1\u30FC\u30EB\uFF08\u30D1\u30C3\u30C1\uFF09\u5F62\u5F0F","e-mail (patch) format"],raw:["\u5185\u90E8\u306E\u751F\u306E\u5F62\u5F0F","the raw internal format"]},Ci={H:["\u30B3\u30DF\u30C3\u30C8\u30CF\u30C3\u30B7\u30E5\uFF08\u5B8C\u5168\uFF09","commit hash"],h:["\u30B3\u30DF\u30C3\u30C8\u30CF\u30C3\u30B7\u30E5\uFF08\u77ED\u7E2E\uFF09","abbreviated commit hash"],T:["\u30C4\u30EA\u30FC\u30CF\u30C3\u30B7\u30E5","tree hash"],t:["\u30C4\u30EA\u30FC\u30CF\u30C3\u30B7\u30E5\uFF08\u77ED\u7E2E\uFF09","abbreviated tree hash"],P:["\u89AA\u30B3\u30DF\u30C3\u30C8\u306E\u30CF\u30C3\u30B7\u30E5","parent hashes"],p:["\u89AA\u30B3\u30DF\u30C3\u30C8\u306E\u30CF\u30C3\u30B7\u30E5\uFF08\u77ED\u7E2E\uFF09","abbreviated parent hashes"],an:["\u4F5C\u8005\u306E\u540D\u524D","author name"],ae:["\u4F5C\u8005\u306E\u30E1\u30FC\u30EB\u30A2\u30C9\u30EC\u30B9","author email"],al:["\u4F5C\u8005\u306E\u30E1\u30FC\u30EB\u306E\u30ED\u30FC\u30AB\u30EB\u90E8","author email local part"],ad:["\u4F5C\u8005\u306E\u65E5\u6642\uFF08--date \u306E\u5F62\u5F0F\uFF09","author date (as --date says)"],ar:["\u4F5C\u8005\u306E\u65E5\u6642\uFF08\u300C3 days ago\u300D\u306E\u3088\u3046\u306A\u76F8\u5BFE\u8868\u8A18\uFF09",'author date, relative ("3 days ago")'],at:["\u4F5C\u8005\u306E\u65E5\u6642\uFF08UNIX \u6642\u523B\uFF09","author date, UNIX time"],ai:["\u4F5C\u8005\u306E\u65E5\u6642\uFF08ISO 8601 \u98A8\uFF09","author date, ISO 8601-like"],aI:["\u4F5C\u8005\u306E\u65E5\u6642\uFF08\u53B3\u5BC6\u306A ISO 8601\uFF09","author date, strict ISO 8601"],as:["\u4F5C\u8005\u306E\u65E5\u4ED8\uFF08YYYY-MM-DD\uFF09","author date (YYYY-MM-DD)"],cn:["\u30B3\u30DF\u30C3\u30BF\u30FC\u306E\u540D\u524D","committer name"],ce:["\u30B3\u30DF\u30C3\u30BF\u30FC\u306E\u30E1\u30FC\u30EB\u30A2\u30C9\u30EC\u30B9","committer email"],cd:["\u30B3\u30DF\u30C3\u30C8\u65E5\u6642\uFF08--date \u306E\u5F62\u5F0F\uFF09","committer date (as --date says)"],cr:["\u30B3\u30DF\u30C3\u30C8\u65E5\u6642\uFF08\u76F8\u5BFE\u8868\u8A18\uFF09","committer date, relative"],ct:["\u30B3\u30DF\u30C3\u30C8\u65E5\u6642\uFF08UNIX \u6642\u523B\uFF09","committer date, UNIX time"],ci:["\u30B3\u30DF\u30C3\u30C8\u65E5\u6642\uFF08ISO 8601 \u98A8\uFF09","committer date, ISO 8601-like"],cI:["\u30B3\u30DF\u30C3\u30C8\u65E5\u6642\uFF08\u53B3\u5BC6\u306A ISO 8601\uFF09","committer date, strict ISO 8601"],cs:["\u30B3\u30DF\u30C3\u30C8\u65E5\u4ED8\uFF08YYYY-MM-DD\uFF09","committer date (YYYY-MM-DD)"],s:["\u4EF6\u540D\uFF08\u30E1\u30C3\u30BB\u30FC\u30B8\u306E1\u884C\u76EE\uFF09","subject (first line of the message)"],f:["\u4EF6\u540D\u3092\u30D5\u30A1\u30A4\u30EB\u540D\u306B\u4F7F\u3048\u308B\u5F62\u306B\u3057\u305F\u3082\u306E","subject sanitised for a file name"],b:["\u672C\u6587\uFF08\u4EF6\u540D\u3092\u9664\u3044\u305F\u30E1\u30C3\u30BB\u30FC\u30B8\uFF09","body"],B:["\u30E1\u30C3\u30BB\u30FC\u30B8\u5168\u4F53\uFF08\u52A0\u5DE5\u306A\u3057\uFF09","raw message (subject and body)"],d:["\u30D6\u30E9\u30F3\u30C1\u30FB\u30BF\u30B0\u540D\uFF08\u300C (HEAD -> main, tag: v1)\u300D\u306E\u5F62\uFF09",'ref names, like " (HEAD -> main, tag: v1)"'],D:["\u30D6\u30E9\u30F3\u30C1\u30FB\u30BF\u30B0\u540D\uFF08\u62EC\u5F27\u306A\u3057\uFF09","ref names without the wrapping"],N:["\u30CE\u30FC\u30C8","notes"],e:["\u30A8\u30F3\u30B3\u30FC\u30C7\u30A3\u30F3\u30B0","encoding"],GG:["\u7F72\u540D\u306E\u691C\u8A3C\u7D50\u679C","signature verification output"],G:["\u7F72\u540D\u306E\u72B6\u614B\uFF08G/B/U/N \u306A\u3069\uFF09","signature status (G/B/U/N\u2026)"],GS:["\u7F72\u540D\u8005\u306E\u540D\u524D","signer name"],n:["\u6539\u884C","a newline"],"%":["\u6587\u5B57\u300C%\u300D\u305D\u306E\u3082\u306E",'a literal "%"']},_l=["red","green","blue","yellow","reset","normal","black","magenta","cyan","white","bold"];function Ii(s,e){let t=O(e);if(xs[s])return{tokens:[],note:t(xs[s][0],xs[s][1])};let n=[],r=0,a=/^(t?format):/.exec(s);if(a)n.push({start:0,end:a[0].length,kind:"keyword",children:[],explanation:a[1]==="format"?t("`format:`: \u4EE5\u964D\u306E\u66F8\u5F0F\u3067\u5404\u30B3\u30DF\u30C3\u30C8\u3092\u8868\u793A\u3059\u308B\uFF08\u30B3\u30DF\u30C3\u30C8\u306E\u9593\u306B\u533A\u5207\u308A\u306E\u6539\u884C\uFF09","`format:`: show each commit with the following template (newline between commits)"):t("`tformat:`: \u4EE5\u964D\u306E\u66F8\u5F0F\u3067\u5404\u30B3\u30DF\u30C3\u30C8\u3092\u8868\u793A\u3059\u308B\uFF08\u5404\u30B3\u30DF\u30C3\u30C8\u306E\u5F8C\u306B\u6539\u884C\uFF09","`tformat:`: show each commit with the template (newline after each)")}),r=a[0].length;else if(!s.includes("%"))return;let o=r,l=c=>{c>o&&n.push({start:o,end:c,kind:"string",explanation:t(`\u305D\u306E\u307E\u307E\u8868\u793A\u3059\u308B\u6587\u5B57\u5217\u300C${s.slice(o,c)}\u300D`,`Literal text "${s.slice(o,c)}"`),children:[]})};for(;r<s.length;){if(s[r]!=="%"){r++;continue}let c=s.slice(r+1),u,h=0,d="",p="variable";if((u=/^C\((auto|[a-z ]+)\)/.exec(c))||(u=new RegExp(`^C(${_l.join("|")})`).exec(c)))h=u[0].length,p="operator",d=u[1]==="reset"?t("\u8272\u3092\u5143\u306B\u623B\u3059","reset the colour"):u[1]==="auto"?t("\u4EE5\u964D\u3092 git \u306E\u65E2\u5B9A\u306E\u8272\u306B\u3059\u308B\uFF08\u7AEF\u672B\u306E\u3068\u304D\u3060\u3051\uFF09","use git's default colours from here (only on a terminal)"):t(`\u4EE5\u964D\u306E\u6587\u5B57\u3092 ${u[1]} \u3067\u8272\u4ED8\u3051\u3059\u308B`,`colour what follows ${u[1]}`);else if(u=/^([<>]{1,2}|><)\((\d+)(?:,(trunc|ltrunc|mtrunc))?\)/.exec(c)){h=u[0].length,p="operator";let f=u[1]==="<"?t("\u5DE6\u5BC4\u305B","left-aligned"):u[1]===">"||u[1]===">>"?t("\u53F3\u5BC4\u305B","right-aligned"):t("\u4E2D\u592E\u5BC4\u305B","centred");d=t(`\u6B21\u306E\u9805\u76EE\u3092\u5E45 ${u[2]} \u3067${f}${u[3]?"\uFF08\u9577\u3051\u308C\u3070\u5207\u308A\u8A70\u3081\u308B\uFF09":""}`,`the next item ${f} in ${u[2]} columns${u[3]?" (truncated if longer)":""}`)}else(u=/^x([0-9a-fA-F]{2})/.exec(c))?(h=u[0].length,p="operator",d=t(`16\u9032\u6570 ${u[1]} \u306E\u6587\u5B57`,`the byte 0x${u[1]}`)):(u=/^(GG|GS|an|ae|al|ad|ar|at|ai|aI|as|cn|ce|cd|cr|ct|ci|cI|cs|[HhTtPpsfbBdDNeGn%])/.exec(c))&&(h=u[0].length,d=t(Ci[u[1]][0],Ci[u[1]][1]));if(!h){r++;continue}l(r),n.push({start:r,end:r+1+h,kind:p,explanation:`\`%${c.slice(0,h)}\`: ${d}`,children:[]}),r+=1+h,o=r}return l(s.length),{tokens:n}}var ws={relative:["\u300C3 days ago\u300D\u306E\u3088\u3046\u306A\u76F8\u5BFE\u8868\u8A18",'relative ("3 days ago")'],local:["\u30ED\u30FC\u30AB\u30EB\u6642\u523B","local time"],iso:["ISO 8601 \u98A8\uFF082026-10-16 09:30:00 +0900\uFF09","ISO 8601-like (2026-10-16 09:30:00 +0900)"],"iso-strict":["\u53B3\u5BC6\u306A ISO 8601","strict ISO 8601"],rfc:["RFC 2822 \u5F62\u5F0F\uFF08\u30E1\u30FC\u30EB\u306E\u65E5\u4ED8\uFF09","RFC 2822 (e-mail style)"],short:["\u65E5\u4ED8\u3060\u3051\uFF082026-10-16\uFF09","date only (2026-10-16)"],raw:["UNIX \u6642\u523B\u3068\u30BF\u30A4\u30E0\u30BE\u30FC\u30F3","UNIX time and zone"],unix:["UNIX \u6642\u523B","UNIX time"],human:["\u4EBA\u9593\u306B\u8AAD\u307F\u3084\u3059\u3044\u5F62","human-friendly"],default:["\u65E2\u5B9A\u306E\u5F62\u5F0F","the default format"]};function Fi(s,e){let t=O(e),n=s.replace(/-local$/,"");if(ws[n])return{tokens:[],note:t(ws[n][0],ws[n][1])+(n!==s?t("\uFF08\u30ED\u30FC\u30AB\u30EB\u6642\u523B\u3067\uFF09"," (in local time)"):"")};let r=/^format(-local)?:/.exec(s);if(r)return{tokens:[{start:0,end:r[0].length,kind:"keyword",children:[],explanation:t("`format:`: \u4EE5\u964D\u306E strftime \u66F8\u5F0F\u3067\u65E5\u6642\u3092\u8868\u793A\u3059\u308B","`format:`: show dates with the following strftime format")},...ke(Wt(s.slice(r[0].length),e),r[0].length)]}}var De=class extends Error{};function Li(s=Date.now()){let e=Math.floor(s/1e3),t=["3f2a9c1d8e7b6a5f4c3d2e1f0a9b8c7d6e5f4a3b","b81e44a2c9d7f3e6a5b4c3d2e1f0a9b8c7d6e5f4","9d0c7e3b2a1f6e5d4c3b2a1f0e9d8c7b6a5f4e3d"],n=["e1d2c3b4a5f6e7d8c9b0a1f2e3d4c5b6a7f8e9d0","a7b8c9d0e1f2a3b4c5d6e7f8a9b0c1d2e3f4a5b6","5c6d7e8f9a0b1c2d3e4f5a6b7c8d9e0f1a2b3c4d"],r={name:"Alice Smith",email:"alice@example.com"},a={name:"Bob Lee",email:"bob@example.com"};return[{hash:t[0],tree:n[0],parents:[t[1]],author:r,time:e-2*3600,subject:"Fix login timeout",body:`Raise the timeout to 30 seconds.
76
+ `,refs:"HEAD -> main, origin/main"},{hash:t[1],tree:n[1],parents:[t[2]],author:a,time:e-3*86400-5*3600,subject:"Add user search",body:"",refs:"tag: v1.2.0"},{hash:t[2],tree:n[2],parents:[],author:r,time:e-23*86400,subject:"Initial commit",body:"",refs:""}]}var bl=["Sun","Mon","Tue","Wed","Thu","Fri","Sat"],xl=["Sunday","Monday","Tuesday","Wednesday","Thursday","Friday","Saturday"],Oi=["Jan","Feb","Mar","Apr","May","Jun","Jul","Aug","Sep","Oct","Nov","Dec"],wl=["January","February","March","April","May","June","July","August","September","October","November","December"],Ee=(s,e=2)=>String(s).padStart(e,"0");function Ge(s,e=!1){let t=-s.getTimezoneOffset(),n=t<0?"-":"+",r=Math.abs(t);return`${n}${Ee(Math.floor(r/60))}${e?":":""}${Ee(r%60)}`}function yl(s,e){return s.replace(/%([-_0^#]?)([a-zA-Z%+])/g,(t,n,r)=>{let a=new Date(e.getFullYear(),0,1),o={Y:String(e.getFullYear()),y:Ee(e.getFullYear()%100),C:Ee(Math.floor(e.getFullYear()/100)),m:Ee(e.getMonth()+1),d:Ee(e.getDate()),e:String(e.getDate()).padStart(2," "),H:Ee(e.getHours()),I:Ee(e.getHours()%12||12),M:Ee(e.getMinutes()),S:Ee(e.getSeconds()),k:String(e.getHours()).padStart(2," "),l:String(e.getHours()%12||12).padStart(2," "),p:e.getHours()<12?"AM":"PM",P:e.getHours()<12?"am":"pm",a:bl[e.getDay()],A:xl[e.getDay()],b:Oi[e.getMonth()],h:Oi[e.getMonth()],B:wl[e.getMonth()],j:Ee(Math.round((new Date(e.getFullYear(),e.getMonth(),e.getDate()).getTime()-a.getTime())/864e5)+1,3),u:String(e.getDay()||7),w:String(e.getDay()),s:String(Math.floor(e.getTime()/1e3)),z:Ge(e),n:`
77
+ `,t:" ","%":"%"};o.F=`${o.Y}-${o.m}-${o.d}`,o.T=`${o.H}:${o.M}:${o.S}`,o.R=`${o.H}:${o.M}`,o.D=`${o.m}/${o.d}/${o.y}`,o.r=`${o.I}:${o.M}:${o.S} ${o.p}`;let l=o[r];if(l===void 0)throw new De(`%${r}`);return n==="-"?l.replace(/^[0 ]+(?=.)/,""):n==="^"?l.toUpperCase():l})}function Pi(s,e){let t=Math.floor(e/1e3)-s,n=(c,u)=>`${c} ${u}${c===1?"":"s"} ago`;if(t<0)return"in the future";if(t<90)return n(t,"second");let r=Math.floor((t+30)/60);if(r<90)return n(r,"minute");let a=Math.floor((r+30)/60);if(a<36)return n(a,"hour");let o=Math.floor((a+12)/24);if(o<14)return n(o,"day");if(o<70)return n(Math.floor((o+3)/7),"week");if(o<365)return n(Math.floor((o+15)/30),"month");let l=Math.floor((o*12+180)/365/12);return n(l,"year")}function Ye(s,e,t){let n=new Date(s*1e3),r=e.endsWith("-local")||e==="local",a=e.replace(/-local$/,""),o=l=>yl(l,n);if(a.startsWith("format:"))return o(a.slice(7));switch(a){case"default":case"local":return o("%a %b %-d %H:%M:%S %Y")+(r?"":` ${Ge(n)}`);case"iso":case"iso8601":return o("%Y-%m-%d %H:%M:%S ")+Ge(n);case"iso-strict":case"iso8601-strict":return o("%Y-%m-%dT%H:%M:%S")+(Ge(n)==="+0000"?"Z":Ge(n,!0));case"rfc":case"rfc2822":return o("%a, %-d %b %Y %H:%M:%S ")+Ge(n);case"short":return o("%Y-%m-%d");case"raw":return`${s} ${Ge(n)}`;case"unix":return String(s);case"relative":return Pi(s,t);default:throw new De(e)}}function ji(s,e,t="default",n=Date.now()){let r=h=>Ye(h.time,t,n),a=h=>["",` ${h.subject}`,...h.body?[" ",...h.body.replace(/\n$/,"").split(`
78
+ `).map(d=>` ${d}`)]:[]],o={oneline:h=>[`${h.hash} ${h.subject}`],short:h=>[`commit ${h.hash}`,`Author: ${h.author.name} <${h.author.email}>`,"",` ${h.subject}`],medium:h=>[`commit ${h.hash}`,`Author: ${h.author.name} <${h.author.email}>`,`Date: ${r(h)}`,...a(h)],full:h=>[`commit ${h.hash}`,`Author: ${h.author.name} <${h.author.email}>`,`Commit: ${h.author.name} <${h.author.email}>`,...a(h)],fuller:h=>[`commit ${h.hash}`,`Author: ${h.author.name} <${h.author.email}>`,`AuthorDate: ${r(h)}`,`Commit: ${h.author.name} <${h.author.email}>`,`CommitDate: ${r(h)}`,...a(h)],reference:h=>[`${h.hash.slice(0,7)} (${h.subject}, ${Ye(h.time,"short",n)})`]},l=e??"medium";if(o[l])return s.flatMap((h,d)=>[...d&&l!=="oneline"&&l!=="reference"?[""]:[],...o[l](h)]);let c=/^(t?format):([\s\S]*)$/.exec(l);if(!c&&!l.includes("%"))throw new De(l);let u=c?c[2]:l;return s.map(h=>kl(u,h,r,n)).join(`
79
79
  `).split(`
80
- `)}function xl(s,e,t,n){let r=l=>{let c=l[0]==="a"||l[0]==="c"?e.author:void 0;switch(l){case"H":return e.hash;case"h":return e.hash.slice(0,7);case"T":return e.tree;case"t":return e.tree.slice(0,7);case"P":return e.parents.join(" ");case"p":return e.parents.map(u=>u.slice(0,7)).join(" ");case"an":case"cn":return c.name;case"ae":case"ce":return c.email;case"al":case"cl":return c.email.replace(/@.*/,"");case"ad":case"cd":return t(e);case"ar":case"cr":return Mi(e.time,n);case"at":case"ct":return String(e.time);case"ai":case"ci":return Ye(e.time,"iso",n);case"aI":case"cI":return Ye(e.time,"iso-strict",n);case"as":case"cs":return Ye(e.time,"short",n);case"s":return e.subject;case"f":return e.subject.replace(/[^A-Za-z0-9.]+/g,"-").replace(/^-|-$/g,"");case"b":return e.body;case"B":return`${e.subject}
80
+ `)}function kl(s,e,t,n){let r=l=>{let c=l[0]==="a"||l[0]==="c"?e.author:void 0;switch(l){case"H":return e.hash;case"h":return e.hash.slice(0,7);case"T":return e.tree;case"t":return e.tree.slice(0,7);case"P":return e.parents.join(" ");case"p":return e.parents.map(u=>u.slice(0,7)).join(" ");case"an":case"cn":return c.name;case"ae":case"ce":return c.email;case"al":case"cl":return c.email.replace(/@.*/,"");case"ad":case"cd":return t(e);case"ar":case"cr":return Pi(e.time,n);case"at":case"ct":return String(e.time);case"ai":case"ci":return Ye(e.time,"iso",n);case"aI":case"cI":return Ye(e.time,"iso-strict",n);case"as":case"cs":return Ye(e.time,"short",n);case"s":return e.subject;case"f":return e.subject.replace(/[^A-Za-z0-9.]+/g,"-").replace(/^-|-$/g,"");case"b":return e.body;case"B":return`${e.subject}
81
81
  ${e.body?`
82
82
  ${e.body}`:""}`;case"d":return e.refs?` (${e.refs})`:"";case"D":return e.refs;case"n":return`
83
- `;case"%":return"%";case"N":case"e":return""}},a="",o;for(let l=0;l<s.length;){if(s[l]!=="%"){a+=s[l++];continue}let c=s.slice(l+1),u;if(u=/^C\([^)]*\)|^C(red|green|blue|yellow|reset)/.exec(c)){l+=1+u[0].length;continue}if(u=/^(<|>|>>|><)\((\d+)(?:,(trunc|ltrunc|mtrunc))?\)/.exec(c)){o={dir:u[1],width:Number(u[2]),trunc:u[3]},l+=1+u[0].length;continue}if(u=/^x([0-9a-fA-F]{2})/.exec(c)){a+=String.fromCharCode(parseInt(u[1],16)),l+=1+u[0].length;continue}if(u=/^(an|ae|al|ad|ar|at|ai|aI|as|cn|ce|cl|cd|cr|ct|ci|cI|cs|[HhTtPpsfbBdDnN%e])/.exec(c),!u)throw new Ue(`%${c.slice(0,2)}`);let h=r(u[1]);o&&(h=wl(h,o.dir,o.width,o.trunc),o=void 0),a+=h,l+=1+u[0].length}return a}function wl(s,e,t,n){if(s.length>t&&n){if(t<2)return s.slice(0,t);if(n==="trunc")return s.slice(0,t-2)+"..";if(n==="ltrunc")return".."+s.slice(s.length-(t-2));let a=t-2,o=Math.floor(a/2);return s.slice(0,o)+".."+s.slice(s.length-(a-o))}if(s.length>=t)return s;let r=t-s.length;return e==="<"?s+" ".repeat(r):e==="><"?" ".repeat(Math.floor(r/2))+s+" ".repeat(r-Math.floor(r/2)):" ".repeat(r)+s}var Tt={"{":"}","(":")","[":"]","<":">"},ds={$_:["\u73FE\u5728\u306E\u884C\uFF08\u307E\u305F\u306F\u30EB\u30FC\u30D7\u4E2D\u306E\u5024\uFF09","the current line (or loop value)"],"$.":["\u73FE\u5728\u306E\u884C\u756A\u53F7","the current line number"],"@F":["`-a` \u3067\u5206\u5272\u3057\u305F\u5404\u5217\u306E\u914D\u5217","the fields split by `-a`"],"$&":["\u6B63\u898F\u8868\u73FE\u306B\u4E00\u81F4\u3057\u305F\u90E8\u5206\u5168\u4F53","the whole regex match"],$0:["\u30B9\u30AF\u30EA\u30D7\u30C8\u540D","the script name"],"@ARGV":["\u30B3\u30DE\u30F3\u30C9\u30E9\u30A4\u30F3\u5F15\u6570\u306E\u914D\u5217","the command-line arguments"],$ARGV:["\u73FE\u5728\u8AAD\u3093\u3067\u3044\u308B\u30D5\u30A1\u30A4\u30EB\u540D","the current input file name"],"%ENV":["\u74B0\u5883\u5909\u6570\u306E\u30CF\u30C3\u30B7\u30E5\uFF08`$ENV{HOME}` \u306A\u3069\uFF09","the environment (`$ENV{HOME}`)"],"$,":["print \u306E\u5F15\u6570\u306E\u9593\u306B\u5165\u308B\u533A\u5207\u308A","separator printed between print arguments"],"$\\":["print \u306E\u6700\u5F8C\u306B\u4ED8\u304F\u6587\u5B57\u5217","appended after each print"],"$/":["\u5165\u529B\u306E\u884C\u533A\u5207\u308A","the input record separator"]},ct={print:["\u51FA\u529B\u3059\u308B\uFF08\u5F15\u6570\u304C\u306A\u3051\u308C\u3070 `$_`\uFF09","print (`$_` if no arguments)"],say:["\u6539\u884C\u4ED8\u304D\u3067\u51FA\u529B\u3059\u308B\uFF08\u5F15\u6570\u304C\u306A\u3051\u308C\u3070 `$_`\uFF09","print with a newline (`$_` if no arguments)"],printf:["\u66F8\u5F0F\u3092\u6307\u5B9A\u3057\u3066\u51FA\u529B\u3059\u308B","print with a format"],chomp:["\u672B\u5C3E\u306E\u6539\u884C\u3092\u53D6\u308A\u9664\u304F","remove the trailing newline"],chop:["\u672B\u5C3E\u306E1\u6587\u5B57\u3092\u53D6\u308A\u9664\u304F","remove the last character"],lc:["\u5C0F\u6587\u5B57\u306B\u3059\u308B","lowercase"],uc:["\u5927\u6587\u5B57\u306B\u3059\u308B","uppercase"],lcfirst:["\u5148\u982D\u3092\u5C0F\u6587\u5B57\u306B\u3059\u308B","lowercase the first character"],ucfirst:["\u5148\u982D\u3092\u5927\u6587\u5B57\u306B\u3059\u308B","uppercase the first character"],length:["\u6587\u5B57\u6570","the length"],substr:["\u90E8\u5206\u6587\u5B57\u5217","a substring"],index:["\u6587\u5B57\u5217\u306E\u4F4D\u7F6E\uFF080\u59CB\u307E\u308A\uFF09","position of a substring (0-based)"],split:["\u533A\u5207\u308A\u3067\u5206\u5272\u3057\u3066\u914D\u5217\u306B\u3059\u308B","split into a list"],join:["\u533A\u5207\u308A\u3067\u3064\u306A\u3044\u3067\u6587\u5B57\u5217\u306B\u3059\u308B","join a list into a string"],sprintf:["\u66F8\u5F0F\u3092\u6307\u5B9A\u3057\u3066\u6587\u5B57\u5217\u3092\u4F5C\u308B","format a string"],push:["\u914D\u5217\u306E\u672B\u5C3E\u306B\u8FFD\u52A0\u3059\u308B","append to an array"],sort:["\u4E26\u3079\u66FF\u3048\u308B","sort"],reverse:["\u9006\u9806\u306B\u3059\u308B","reverse"],keys:["\u30CF\u30C3\u30B7\u30E5\u306E\u30AD\u30FC\u4E00\u89A7","the keys of a hash"],values:["\u30CF\u30C3\u30B7\u30E5\u306E\u5024\u4E00\u89A7","the values of a hash"],exists:["\u30AD\u30FC\u304C\u3042\u308B\u304B","whether a key exists"],defined:["\u5024\u304C\u5B9A\u7FA9\u3055\u308C\u3066\u3044\u308B\u304B","whether a value is defined"],delete:["\u8981\u7D20\u3092\u524A\u9664\u3059\u308B","delete an element"],die:["\u30A8\u30E9\u30FC\u30E1\u30C3\u30BB\u30FC\u30B8\u3092\u51FA\u3057\u3066\u7D42\u4E86\u3059\u308B","exit with an error message"],warn:["\u8B66\u544A\u3092\u8868\u793A\u3059\u308B","print a warning"],exit:["\u7D42\u4E86\u3059\u308B","exit"],map:["\u5404\u8981\u7D20\u306B\u5F0F\u3092\u9069\u7528\u3057\u305F\u30EA\u30B9\u30C8\u3092\u4F5C\u308B","apply an expression to each element"],grep:["\u6761\u4EF6\u306B\u5408\u3046\u8981\u7D20\u3060\u3051\u3092\u6B8B\u3059","keep the elements that match"],int:["\u6574\u6570\u90E8\u5206","the integer part"],abs:["\u7D76\u5BFE\u5024","the absolute value"],time:["\u73FE\u5728\u306E UNIX \u6642\u523B","the current UNIX time"],localtime:["\u65E5\u6642\u306B\u5909\u63DB\u3059\u308B","convert to local time"]};function Fi(s,e){let t=s.slice(e),n=/^(s|tr|y|m|qr|q|qq|qw)\s*([^\w\s])/.exec(t),r="",a,o;if(n&&!/\w/.test(s[e-1]??""))r=n[1],a=n[2],o=e+n[0].length;else if(/^[/'"]/.test(t))a=t[0],o=e+1;else return e;let l=c=>{let u=Tt[c]??c,h=1;for(;o<s.length;){let d=s[o];if(d==="\\"){o+=2;continue}if(c!==u&&d===c)h++;else if(d===u&&--h===0)return o++,!0;o++}return!1};if(!l(a))return s.length;if(r==="s"||r==="tr"||r==="y"){if(Tt[a]){for(;/\s/.test(s[o]??"");)o++;let c=s[o++];if(!c||!l(c))return s.length}else if(!l(a))return s.length}if(r||a==="/")for(;/[a-z]/.test(s[o]??"");)o++;return o}function yl(s,e){let t=s.slice(0,e).trimEnd();return t===""||/[(,;{=~!&|?:]$|\b(if|unless|and|or|not|split|grep|return|print|say)$/.test(t)}function Ai(s,e,t,n){let r=[],a=0,o=e;for(let l=e;l<t;){let c=s[l];if(c==="/"&&yl(s,l)||c==="'"||c==='"'||/[a-z]/.test(c)&&!/\w/.test(s[l-1]??"")){let u=Fi(s,l);if(u>l){l=u;continue}}if("({[".includes(c))a++;else if(")}]".includes(c))a--;else if(a===0){let u=n.exec(s.slice(l,t));if(u&&u.index===0){r.push([o,l]),l+=u[0].length,o=l;continue}}l++}return r.push([o,t]),r}var ps=class{constructor(e,t){this.src=e;this.lang=t;this.s=A(t)}src;lang;s;statements(e,t){return Ai(this.src,e,t,/^;/).map(([n,r])=>this.trim(n,r)).filter(([n,r])=>r>n).map(([n,r])=>this.statement(n,r))}trim(e,t){for(;e<t&&/\s/.test(this.src[e]);)e++;for(;t>e&&/\s/.test(this.src[t-1]);)t--;return[e,t]}tok(e,t,n,r,a=[]){return{start:e,end:t,kind:n,explanation:r,children:a}}statement(e,t){let{s:n,src:r}=this,a=r.slice(e,t),o=/^(BEGIN|END)\s*\{/.exec(a);if(o&&a.endsWith("}")){let f=e+a.indexOf("{"),m=this.statements(f+1,t-1);return this.tok(e,t,"block",o[1]==="BEGIN"?n("`BEGIN { }`: \u5165\u529B\u3092\u8AAD\u3080\u524D\u306B1\u56DE\u3060\u3051\u5B9F\u884C\u3059\u308B","`BEGIN { }`: runs once before any input"):n("`END { }`: \u3059\u3079\u3066\u306E\u5165\u529B\u3092\u8AAD\u3093\u3060\u5F8C\u306B1\u56DE\u3060\u3051\u5B9F\u884C\u3059\u308B","`END { }`: runs once after all input"),m)}let l=Ai(r,e,t,/^\s+(if|unless)\s+/);if(l.length===2){let f=/\s+(if|unless)\s+/.exec(r.slice(l[0][1],l[1][0]))[1],m=this.statement(...this.trim(l[0][0],l[0][1])),[g,_]=this.trim(l[1][0],l[1][1]),b=this.condition(g,_),w=r.slice(g,_),k=/^\/.*\/[a-z]*$/.test(w)?n(`\u73FE\u5728\u306E\u884C\u304C \`${w}\` \u306B\u4E00\u81F4\u3059\u308B`,`the line matches \`${w}\``):`\`${w}\``;return this.tok(e,t,"keyword",f==="if"?n(`${k}\u306A\u3089: ${m.explanation}`,`if ${k}: ${m.explanation}`):n(`${k}\u3067\u306A\u3051\u308C\u3070: ${m.explanation}`,`unless ${k}: ${m.explanation}`),[m,b])}let c=/^(?:(\$\w+)\s*=~\s*)?s\b\s*[^\w\s]/.exec(a);if(c)return this.substitution(e,t,e+c[0].length-1,c[1]);if(/^(?:(\$\w+)\s*=~\s*)?(tr|y)\s*([^\w\s])/.exec(a))return this.transliteration(e,t);if(/^\/.*\/[a-z]*$/.test(a)||/^m\W/.test(a))return this.condition(e,t);let h=/^[a-z]+/.exec(a)?.[0]??"",d=this.atoms(e,t);if(["next","last","redo"].includes(h)){let f={next:["\u3053\u306E\u884C\u306E\u51E6\u7406\u3092\u7D42\u3048\u3066\u6B21\u306E\u884C\u3078\u9032\u3080","skip to the next line"],last:["\u30EB\u30FC\u30D7\u3092\u629C\u3051\u308B","leave the loop"],redo:["\u540C\u3058\u884C\u3092\u3084\u308A\u76F4\u3059","redo this line"]}[h];return this.tok(e,t,"keyword",n(f[0],f[1]),d)}if(ct[h]){d.splice(0,d.length,...d.filter(g=>g.start!==e));let f=a.slice(h.length).trim(),m=n(ct[h][0],ct[h][1]);return this.tok(e,t,"command",f?n(`\`${h}\`: ${m}\uFF08\`${f}\`\uFF09`,`\`${h}\`: ${m} (\`${f}\`)`):`\`${h}\`: ${m}`,d)}let p=/^(.+?)\s*(\.=|\+=|-=|\*=|\/=|\|\|=|\/\/=|=)(?!=|~)\s*(.+)$/s.exec(a);if(p){let[,f,m,g]=p,_={"=":[`\`${f}\` \u306B \`${g}\` \u3092\u4EE3\u5165\u3059\u308B`,`set \`${f}\` to \`${g}\``],".=":[`\`${f}\` \u306E\u672B\u5C3E\u306B \`${g}\` \u3092\u3064\u306A\u3052\u308B`,`append \`${g}\` to \`${f}\``],"+=":[`\`${f}\` \u306B \`${g}\` \u3092\u8DB3\u3059`,`add \`${g}\` to \`${f}\``],"-=":[`\`${f}\` \u304B\u3089 \`${g}\` \u3092\u5F15\u304F`,`subtract \`${g}\` from \`${f}\``],"*=":[`\`${f}\` \u306B \`${g}\` \u3092\u639B\u3051\u308B`,`multiply \`${f}\` by \`${g}\``],"/=":[`\`${f}\` \u3092 \`${g}\` \u3067\u5272\u308B`,`divide \`${f}\` by \`${g}\``],"||=":[`\`${f}\` \u304C\u507D\u306A\u3089 \`${g}\` \u3092\u4EE3\u5165\u3059\u308B`,`set \`${f}\` to \`${g}\` if it is false`],"//=":[`\`${f}\` \u304C\u672A\u5B9A\u7FA9\u306A\u3089 \`${g}\` \u3092\u4EE3\u5165\u3059\u308B`,`set \`${f}\` to \`${g}\` if undefined`]};return this.tok(e,t,"assignment",n(_[m][0],_[m][1]),d)}if(/\+\+$|^\+\+/.test(a)){let f=a.replace(/\+\+/g,"").trim();return this.tok(e,t,"assignment",n(`\`${f}\` \u30921\u5897\u3084\u3059\uFF08\u51FA\u73FE\u56DE\u6570\u3092\u6570\u3048\u308B\u5B9A\u756A\uFF09`,`increment \`${f}\` (the usual way to count)`),d)}return this.tok(e,t,"command",n(`\u5F0F \`${a}\` \u3092\u8A55\u4FA1\u3059\u308B`,`evaluate \`${a}\``),d)}condition(e,t){let{s:n,src:r}=this,a=r.slice(e,t),o=/^(m\s*)?([^\w\s])/.exec(a);if(o&&(o[1]||o[2]==="/")&&Fi(r,e)===t){let l=o[2],c=Tt[l]??l,u=e+o[0].length,h=e+a.lastIndexOf(c),p=a.slice(a.lastIndexOf(c)+1).includes("i")?n("\uFF08\u5927\u6587\u5B57\u30FB\u5C0F\u6587\u5B57\u3092\u533A\u5225\u3057\u306A\u3044\uFF09"," (case-insensitive)"):"";return this.tok(e,t,"pattern",n(`\u73FE\u5728\u306E\u884C\uFF08\`$_\`\uFF09\u304C\u6B63\u898F\u8868\u73FE \`${r.slice(u,h)}\` \u306B\u4E00\u81F4\u3059\u308B\u304B${p}`,`whether the line (\`$_\`) matches \`${r.slice(u,h)}\`${p}`),ye(Se(r.slice(u,h),"pcre",this.lang),u))}return this.tok(e,t,"test",n(`\u6761\u4EF6 \`${a}\``,`condition \`${a}\``),this.atoms(e,t))}substitution(e,t,n,r){let{s:a,src:o}=this,l=o[n],c=Tt[l]??l,u=n+1,h=u;for(;h<t&&o[h]!==c;)h+=o[h]==="\\"?2:1;let d=h,p;if(l!==c){for(h++;h<t&&/\s/.test(o[h]);)h++;p=h+1;let R=Tt[o[h]]??o[h];for(h=p;h<t&&o[h]!==R;)h+=o[h]==="\\"?2:1}else for(p=d+1,h=p;h<t&&o[h]!==c;)h+=o[h]==="\\"?2:1;let f=h,m=o.slice(f+1,t),g=o.slice(u,d),_=o.slice(p,f),b=[this.tok(u,d,"pattern",a(`\u691C\u7D22\u30D1\u30BF\u30FC\u30F3\uFF08Perl \u306E\u6B63\u898F\u8868\u73FE\uFF09\`${g}\``,`Pattern (Perl regex) \`${g}\``),ye(Se(g,"pcre",this.lang),u)),this.tok(p,f,"string",_?a(`\u7F6E\u63DB\u5F8C\u306E\u6587\u5B57\u5217 \`${_}\`\uFF08\`$1\` \u306A\u3069\u306F\u30B0\u30EB\u30FC\u30D7\u306E\u5185\u5BB9\uFF09`,`Replacement \`${_}\` (\`$1\`\u2026 are the groups)`):a("\u7F6E\u63DB\u5F8C\u306E\u6587\u5B57\u5217: \u7A7A\uFF08\u4E00\u81F4\u3057\u305F\u90E8\u5206\u3092\u524A\u9664\u3059\u308B\uFF09","Replacement: empty (deletes the match)"),this.atoms(p,f))].filter(R=>R.end>R.start),w={g:["\u3059\u3079\u3066\u7F6E\u63DB\u3059\u308B\uFF08\u4ED8\u3051\u306A\u3044\u3068\u6700\u521D\u306E1\u3064\u3060\u3051\uFF09","replace every match (otherwise only the first)"],i:["\u5927\u6587\u5B57\u30FB\u5C0F\u6587\u5B57\u3092\u533A\u5225\u3057\u306A\u3044","case-insensitive"],m:["`^` `$` \u3092\u5404\u884C\u306B\u4E00\u81F4\u3055\u305B\u308B","`^`/`$` match at each line"],s:["`.` \u304C\u6539\u884C\u306B\u3082\u4E00\u81F4\u3059\u308B","`.` also matches newlines"],x:["\u30D1\u30BF\u30FC\u30F3\u4E2D\u306E\u7A7A\u767D\u3068\u30B3\u30E1\u30F3\u30C8\u3092\u7121\u8996\u3059\u308B","ignore whitespace and comments in the pattern"],e:["\u7F6E\u63DB\u5F8C\u306E\u6587\u5B57\u5217\u3092 Perl \u306E\u5F0F\u3068\u3057\u3066\u8A55\u4FA1\u3059\u308B","evaluate the replacement as Perl code"],r:["\u5143\u306E\u5024\u3092\u5909\u3048\u305A\u3001\u7F6E\u63DB\u3057\u305F\u7D50\u679C\u3092\u8FD4\u3059","return the result instead of changing the value"]};for(let R=0;R<m.length;R++){let W=m[R];w[W]&&b.push(this.tok(f+1+R,f+2+R,"option",`\`${W}\`: ${a(w[W][0],w[W][1])}`))}let k=r?`\`${r}\``:a("\u73FE\u5728\u306E\u884C\uFF08`$_`\uFF09","the line (`$_`)"),v=m.includes("g")?a("\u3059\u3079\u3066","every match"):a("\u6700\u521D\u306E1\u3064","the first match");return this.tok(e,t,"command",a(`\u7F6E\u63DB: ${k}\u306E\u4E2D\u3067 \`${g}\` \u306B\u4E00\u81F4\u3057\u305F\u90E8\u5206\uFF08${v}\uFF09\u3092 \`${_}\` \u306B\u7F6E\u304D\u63DB\u3048\u308B`,`Substitute in ${k}: replace ${v} of \`${g}\` with \`${_}\``),b)}transliteration(e,t){let{s:n,src:r}=this,a=/(tr|y)\s*([^\w\s])(.*?)\2(.*?)\2([a-z]*)$/s.exec(r.slice(e,t));return a?this.tok(e,t,"command",n(`\u6587\u5B57\u306E\u5909\u63DB: \`${a[3]}\` \u306E\u5404\u6587\u5B57\u3092 \`${a[4]}\` \u306E\u540C\u3058\u4F4D\u7F6E\u306E\u6587\u5B57\u306B\u7F6E\u304D\u63DB\u3048\u308B\uFF08\u30B7\u30A7\u30EB\u306E tr \u3068\u540C\u3058\uFF09`,`Transliterate: each character of \`${a[3]}\` becomes the one at the same position in \`${a[4]}\` (like the tr command)`)):this.tok(e,t,"command",n("\u6587\u5B57\u306E\u5909\u63DB\uFF08tr\uFF09","Transliterate (tr)"))}atoms(e,t){let{s:n,src:r}=this,a=[],o=/\$F\[(-?\d+)\]|\$(\d)\b|\$_\b|\$\.|\$&|\$ARGV\b|@ARGV\b|@F\b|\$ENV\{\w+\}|<STDIN>|<>|\b([a-z]+)\s*(?=\(|\s|$)/g;o.lastIndex=0;let l=r.slice(e,t),c;for(;c=o.exec(l);){let u=e+c.index,h=c[0];if(c[1]!==void 0){let d=Number(c[1]);a.push(this.tok(u,u+h.length,"variable",d<0?n(`\`${h}\`: \u5F8C\u308D\u304B\u3089 ${-d} \u756A\u76EE\u306E\u5217`,`\`${h}\`: the ${-d}th field from the end`):n(`\`${h}\`: ${d+1} \u5217\u76EE\uFF08\`-a\` \u3067\u5206\u5272\u3057\u305F\u5217\u30020\u59CB\u307E\u308A\uFF09`,`\`${h}\`: field ${d+1} (split by \`-a\`, 0-based index)`)))}else c[2]!==void 0?a.push(this.tok(u,u+h.length,"variable",n(`\`${h}\`: \u76F4\u524D\u306E\u4E00\u81F4\u3067\u30B0\u30EB\u30FC\u30D7 ${c[2]} \u306B\u4E00\u81F4\u3057\u305F\u90E8\u5206`,`\`${h}\`: what group ${c[2]} matched`))):h==="<>"||h==="<STDIN>"?a.push(this.tok(u,u+h.length,"variable",n(`\`${h}\`: \u5165\u529B\u304B\u30891\u884C\u8AAD\u3080`,`\`${h}\`: read a line of input`))):h.startsWith("$ENV")?a.push(this.tok(u,u+h.length,"variable",n(`\`${h}\`: \u74B0\u5883\u5909\u6570`,`\`${h}\`: an environment variable`))):ds[h]?a.push(this.tok(u,u+h.length,"variable",`\`${h}\`: ${n(ds[h][0],ds[h][1])}`)):c[3]&&ct[c[3]]&&a.push(this.tok(u,u+c[3].length,"function",`\`${c[3]}\`: ${n(ct[c[3]][0],ct[c[3]][1])}`))}return a}};function Ci(s,e){try{return new ps(s,e).statements(0,s.length)}catch{return[{start:0,end:s.length,kind:"error",explanation:A(e)("Perl \u306E\u30B3\u30FC\u30C9\u3092\u89E3\u6790\u3067\u304D\u307E\u305B\u3093\u3067\u3057\u305F","Could not parse the Perl code"),children:[]}]}}function Ii(s,e){let t=A(e),n=[];return s.has("p")?n.push(t("\u5165\u529B\u306E\u5404\u884C\u306B\u3064\u3044\u3066\u3053\u306E\u30B3\u30FC\u30C9\u3092\u5B9F\u884C\u3057\u3001\u6700\u5F8C\u306B `$_` \u3092\u51FA\u529B\u3059\u308B\uFF08sed \u306E\u3088\u3046\u306B\u4F7F\u3048\u308B\uFF09","runs this code for each input line and then prints `$_` (sed-like)")):s.has("n")&&n.push(t("\u5165\u529B\u306E\u5404\u884C\u306B\u3064\u3044\u3066\u3053\u306E\u30B3\u30FC\u30C9\u3092\u5B9F\u884C\u3059\u308B\uFF08\u81EA\u52D5\u3067\u306F\u51FA\u529B\u3057\u306A\u3044\uFF09","runs this code for each input line (nothing is printed automatically)")),s.has("a")&&n.push(t("\u5404\u884C\u306F\u7A7A\u767D\u3067\u5206\u5272\u3055\u308C\u3066 `@F` \u306B\u5165\u308B","each line is split on whitespace into `@F`")),s.has("l")&&n.push(t("\u5404\u884C\u672B\u306E\u6539\u884C\u306F\u53D6\u308A\u9664\u304B\u308C\u3001`print` \u3067\u6539\u884C\u304C\u4ED8\u304F","line endings are removed and `print` adds one")),s.has("i")&&n.push(t("\u30D5\u30A1\u30A4\u30EB\u306F\u76F4\u63A5\u66F8\u304D\u63DB\u3048\u3089\u308C\u308B","files are edited in place")),s.has("0")&&n.push(t("`-0777` \u306A\u3089\u30D5\u30A1\u30A4\u30EB\u5168\u4F53\u30921\u3064\u306E\u6587\u5B57\u5217\u3068\u3057\u3066\u8AAD\u3080","with `-0777` the whole file is read as one string")),n.length?n.join(t("\u3002","; ")):void 0}var dn={u:["\u6240\u6709\u8005","the owner"],g:["\u30B0\u30EB\u30FC\u30D7","the group"],o:["\u305D\u306E\u4ED6\u306E\u30E6\u30FC\u30B6\u30FC","others"],a:["\u5168\u54E1","everyone"]};function pn(s,e){let t=[s&4&&e("\u8AAD\u307F","read"),s&2&&e("\u66F8\u304D","write"),s&1&&e("\u5B9F\u884C","execute")].filter(Boolean);return t.length?t.join(e("\u30FB","/")):e("\u306A\u3057","none")}function Mt(s){let e="rwxrwxrwx",t="";for(let n=0;n<9;n++)t+=s&1<<8-n?e[n]:"-";return t}function kl(s){let e=Mt(s).split("");return s&2048&&(e[2]=e[2]==="x"?"s":"S"),s&1024&&(e[5]=e[5]==="x"?"s":"S"),s&512&&(e[8]=e[8]==="x"?"t":"T"),e.join("")}function Oi(s,e){let t=A(e);return/^[0-7]{1,4}$/.test(s)?Li(s,t,!1):ji(s,t)}function Pi(s,e){let t=A(e);if(/^[0-7]{1,4}$/.test(s))return Li(s,t,!0);let n=ji(s,t);return n&&(n.note=t("\u8A18\u53F7\u3067\u6307\u5B9A\u3057\u305F\u5834\u5408\u306F\u300C\u65B0\u898F\u4F5C\u6210\u6642\u306B\u8A31\u53EF\u3059\u308B\u6A29\u9650\u300D\u3092\u8868\u3059","in symbolic form it sets the permissions that new files may have")),n}function Li(s,e,t){let n=s.padStart(3,"0").split("").map(Number),r=s.length-n.length,a=[],o=n.length===4?n[0]:0,l=n.slice(-3),c=[e("\u6240\u6709\u8005","owner"),e("\u30B0\u30EB\u30FC\u30D7","group"),e("\u305D\u306E\u4ED6","others")];if(n.length===4&&r>=0){let h=[o&4&&e("setuid\uFF084: \u5B9F\u884C\u6642\u306B\u6240\u6709\u8005\u306E\u6A29\u9650\u3067\u52D5\u304F\uFF09","setuid (4: runs with the owner's privileges)"),o&2&&e("setgid\uFF082: \u30B0\u30EB\u30FC\u30D7\u306E\u6A29\u9650\u3067\u52D5\u304F\u3002\u30C7\u30A3\u30EC\u30AF\u30C8\u30EA\u306A\u3089\u4E2D\u306E\u30D5\u30A1\u30A4\u30EB\u304C\u30B0\u30EB\u30FC\u30D7\u3092\u7D99\u627F\uFF09","setgid (2: runs with the group's privileges; in a directory, new files inherit the group)"),o&1&&e("\u30B9\u30C6\u30A3\u30C3\u30AD\u30FC\u30D3\u30C3\u30C8\uFF081: \u30C7\u30A3\u30EC\u30AF\u30C8\u30EA\u5185\u306E\u30D5\u30A1\u30A4\u30EB\u306F\u6240\u6709\u8005\u3057\u304B\u6D88\u305B\u306A\u3044\u3002/tmp \u306A\u3069\uFF09","sticky bit (1: in a directory, only owners can delete files, as in /tmp)")].filter(Boolean);a.push({start:0,end:1,kind:"number",children:[],explanation:o?e(`\`${o}\`: \u7279\u6B8A\u30D3\u30C3\u30C8 ${h.join("\u3001")}`,`\`${o}\`: special bits ${h.join(", ")}`):e("`0`: \u7279\u6B8A\u30D3\u30C3\u30C8\uFF08setuid / setgid / \u30B9\u30C6\u30A3\u30C3\u30AD\u30FC\uFF09\u306A\u3057","`0`: no special bits (setuid/setgid/sticky)")})}l.forEach((h,d)=>{let p=s.length-3+d;p<0||a.push({start:p,end:p+1,kind:"number",children:[],explanation:t?e(`\`${h}\`: ${c[d]}\u304B\u3089\u5916\u3059\u6A29\u9650: ${pn(h,e)}`,`\`${h}\`: removed from ${c[d]}: ${pn(h,e)}`):e(`\`${h}\`: ${c[d]}\u306E\u6A29\u9650: ${pn(h,e)}${d===0?"\uFF084=\u8AAD\u307F\u30012=\u66F8\u304D\u30011=\u5B9F\u884C \u306E\u5408\u8A08\uFF09":""}`,`\`${h}\`: ${c[d]} may ${pn(h,e)}${d===0?" (4=read, 2=write, 1=execute, added up)":""}`)})});let u=parseInt(s,8);if(t){let h=438&~u,d=511&~u,p=f=>f.toString(8).padStart(3,"0");return{tokens:a,note:e(`\u65B0\u3057\u3044\u30D5\u30A1\u30A4\u30EB\u306F ${p(h)} (${Mt(h)})\u3001\u30C7\u30A3\u30EC\u30AF\u30C8\u30EA\u306F ${p(d)} (${Mt(d)}) \u306B\u306A\u308B`,`new files get ${p(h)} (${Mt(h)}), directories ${p(d)} (${Mt(d)})`)}}return{tokens:a,note:`${kl(u)}`}}function ji(s,e){let t=[],n=0;for(let r of s.split(",")){let a=/^([ugoa]*)((?:[-+=](?:[ugo](?![rwxXst])|[rwxXst]*))+)$/.exec(r);if(!a)return;let o=a[1]?a[1].split("").map(c=>e(dn[c][0],dn[c][1])).join(e("\u3068"," and ")):e("\u5168\u54E1\uFF08umask \u3067\u5916\u3055\u308C\u308B\u5206\u3092\u9664\u304F\uFF09","everyone (minus what umask removes)"),l=[];for(let[,c,u]of a[2].matchAll(/([-+=])([ugo](?![rwxXst])|[rwxXst]*)/g)){let d=(/^[ugo]$/.test(u)?[e(`${dn[u][0]}\u3068\u540C\u3058\u6A29\u9650`,`the same permissions as ${dn[u][1]}`)]:u.split("").map(p=>({r:e("\u8AAD\u307F\u53D6\u308A","read"),w:e("\u66F8\u304D\u8FBC\u307F","write"),x:e("\u5B9F\u884C","execute"),X:e("\u5B9F\u884C\uFF08\u30C7\u30A3\u30EC\u30AF\u30C8\u30EA\u304B\u3001\u65E2\u306B\u8AB0\u304B\u304C\u5B9F\u884C\u53EF\u80FD\u306A\u30D5\u30A1\u30A4\u30EB\u306E\u307F\uFF09","execute (directories, or files already executable by someone)"),s:e("setuid/setgid","setuid/setgid"),t:e("\u30B9\u30C6\u30A3\u30C3\u30AD\u30FC\u30D3\u30C3\u30C8","the sticky bit")})[p])).join(e("\u30FB",", "));l.push(c==="+"?e(`${d}\u6A29\u9650\u3092\u8FFD\u52A0\u3059\u308B`,`add ${d}`):c==="-"?e(`${d}\u6A29\u9650\u3092\u5916\u3059`,`remove ${d}`):/^[ugo]$/.test(u)?e(`\u6A29\u9650\u3092${d}\u306B\u3059\u308B`,`set ${d}`):u?e(`\u6A29\u9650\u3092${d}\u3060\u3051\u306B\u3059\u308B`,`set exactly ${d}`):e("\u6A29\u9650\u3092\u3059\u3079\u3066\u5916\u3059","remove all permissions"))}t.push({start:n,end:n+r.length,kind:"operator",children:[],explanation:e(`\`${r}\`: ${o}\u306B\u5BFE\u3057\u3066${l.join("\u3001")}`,`\`${r}\`: for ${o}, ${l.join(", then ")}`)}),n+=r.length+1}return{tokens:t}}var fn={n:["\u6570\u5024\u3068\u3057\u3066\u6BD4\u8F03","compare as numbers"],g:["\u4E00\u822C\u7684\u306A\u6570\u5024\uFF08\u6307\u6570\u8868\u8A18\u3082\uFF09\u3068\u3057\u3066\u6BD4\u8F03","compare as general numbers (incl. exponents)"],h:["\u5358\u4F4D\u4ED8\u304D\u306E\u6570\u5024\uFF082K, 1G\uFF09\u3068\u3057\u3066\u6BD4\u8F03","compare human-readable sizes (2K, 1G)"],r:["\u9006\u9806\uFF08\u964D\u9806\uFF09","reverse (descending)"],b:["\u5148\u982D\u306E\u7A7A\u767D\u3092\u7121\u8996","ignore leading blanks"],f:["\u5927\u6587\u5B57\u30FB\u5C0F\u6587\u5B57\u3092\u533A\u5225\u3057\u306A\u3044","ignore case"],d:["\u82F1\u6570\u5B57\u3068\u7A7A\u767D\u3060\u3051\u3067\u6BD4\u8F03","dictionary order"],i:["\u8868\u793A\u3067\u304D\u306A\u3044\u6587\u5B57\u3092\u7121\u8996","ignore non-printable characters"],M:["\u6708\u540D\uFF08JAN\u301CDEC\uFF09\u3068\u3057\u3066\u6BD4\u8F03","compare as month names"],V:["\u30D0\u30FC\u30B8\u30E7\u30F3\u756A\u53F7\u3068\u3057\u3066\u6BD4\u8F03","compare as version numbers"],R:["\u30E9\u30F3\u30C0\u30E0\u306B\u4E26\u3079\u308B","random order"]};function qi(s,e){let t=A(e),n=/^(\d+)(?:\.(\d+))?([bdfgiMhnRrV]*)(?:(,)(\d+)(?:\.(\d+))?([bdfgiMhnRrV]*))?$/.exec(s);if(!n)return;let[,r,a,o,l,c,u,h]=n,d=[],p=0,f=(k,v,R)=>{d.push({start:p,end:p+k,kind:v,explanation:R,children:[]}),p+=k},m=(k,v,R)=>{f(k.length,"number",R?t(`\`${k}\`: \u30AD\u30FC\u306E\u958B\u59CB\u306F ${k} \u5217\u76EE`,`\`${k}\`: the key starts at field ${k}`):t(`\`${k}\`: \u30AD\u30FC\u306E\u7D42\u308F\u308A\u306F ${k} \u5217\u76EE`,`\`${k}\`: the key ends at field ${k}`)),v&&f(v.length+1,"number",t(`\`.${v}\`: \u305D\u306E\u5217\u306E ${v} \u6587\u5B57\u76EE`,`\`.${v}\`: character ${v} of that field`))},g=k=>{for(let v of k)f(1,"option",`\`${v}\`: ${t(fn[v][0],fn[v][1])}`)};m(r,a,!0),g(o),l&&(f(1,"operator",t("`,`: \u30AD\u30FC\u306E\u958B\u59CB\u3068\u7D42\u308F\u308A\u306E\u533A\u5207\u308A","`,`: separates the start and end of the key")),m(c,u,!1),g(h));let _=[...new Set((o+(h??"")).split(""))].filter(Boolean).map(k=>t(fn[k][0],fn[k][1])).join(t("\u3001",", ")),b=l?r===c?t(`${r} \u5217\u76EE\u3060\u3051`,`field ${r} only`):t(`${r}\u301C${c} \u5217\u76EE`,`fields ${r} to ${c}`):t(`${r} \u5217\u76EE\u304B\u3089\u884C\u672B\u307E\u3067`,`field ${r} through the end of the line`),w=t(`${b}\u3092\u30AD\u30FC\u306B\u3059\u308B${_?`\uFF08${_}\uFF09`:""}`,`sort by ${b}${_?` (${_})`:""}`);return l||(w+=t(`\u3002\u6CE8\u610F: \u7D42\u308F\u308A\u3092\u6307\u5B9A\u3057\u306A\u3044\u3068\u884C\u672B\u307E\u3067\u304C\u30AD\u30FC\u306B\u306A\u308B\uFF08${r} \u5217\u76EE\u3060\u3051\u306A\u3089 \`-k${r},${r}\`\uFF09`,`. Note: without an end the key runs to the end of the line (use \`-k${r},${r}\` for one field)`)),{tokens:d,note:w}}function Ui(s,e,t){let n=A(t);if(!/^(\d+|\d+-\d*|-\d+)(,(\d+|\d+-\d*|-\d+))*$/.test(s))return;let[r,a]=e==="field"?["\u5217\u76EE","field"]:["\u6587\u5B57\u76EE","character"],o=[],l=[],c=0;for(let u of s.split(",")){let[h,d]=u.split("-"),p;u.includes("-")?h&&d?p=n(`${h}\u301C${d} ${r}`,`${a}s ${h} to ${d}`):h?p=n(`${h} ${r}\u4EE5\u964D\u3059\u3079\u3066`,`${a} ${h} onwards`):p=n(`\u5148\u982D\u304B\u3089 ${d} ${r}\u307E\u3067`,`${a}s 1 to ${d}`):p=n(`${h} ${r}`,`${a} ${h}`),o.push({start:c,end:c+u.length,kind:"number",explanation:`\`${u}\`: ${p}`,children:[]}),l.push(p),c+=u.length+1}return{tokens:o,note:n(`\u53D6\u308A\u51FA\u3059\u306E\u306F ${l.join("\u3001")}\uFF08\u756A\u53F7\u306F1\u59CB\u307E\u308A\uFF09`,`selects ${l.join(", ")} (numbered from 1)`)}}var ms={upper:["\u5927\u6587\u5B57","uppercase letters"],lower:["\u5C0F\u6587\u5B57","lowercase letters"],alpha:["\u82F1\u5B57","letters"],digit:["\u6570\u5B57","digits"],alnum:["\u82F1\u6570\u5B57","letters and digits"],space:["\u7A7A\u767D\u6587\u5B57\uFF08\u6539\u884C\u30FB\u30BF\u30D6\u3092\u542B\u3080\uFF09","whitespace (incl. newline and tab)"],blank:["\u30B9\u30DA\u30FC\u30B9\u3068\u30BF\u30D6","spaces and tabs"],punct:["\u8A18\u53F7","punctuation"],cntrl:["\u5236\u5FA1\u6587\u5B57","control characters"],print:["\u8868\u793A\u53EF\u80FD\u306A\u6587\u5B57","printable characters"],graph:["\u7A7A\u767D\u4EE5\u5916\u306E\u8868\u793A\u53EF\u80FD\u306A\u6587\u5B57","visible characters"],xdigit:["16\u9032\u6570\u5B57","hex digits"]},gs={n:["\u6539\u884C","newline"],t:["\u30BF\u30D6","tab"],r:["\u5FA9\u5E30\u6587\u5B57(CR\u3002Windows \u306E\u6539\u884C CRLF \u306E CR)","carriage return (the CR of Windows CRLF)"],"\\":["\u30D0\u30C3\u30AF\u30B9\u30E9\u30C3\u30B7\u30E5","backslash"],a:["\u30D9\u30EB","bell"],b:["\u30D0\u30C3\u30AF\u30B9\u30DA\u30FC\u30B9","backspace"],f:["\u6539\u30DA\u30FC\u30B8","form feed"],v:["\u5782\u76F4\u30BF\u30D6","vertical tab"]};function Di(s,e,t){let n=A(t),r=[],a=[],o=0;for(;o<s.length;){let u=s.slice(o),h,d,p;if((h=/^\[:(\w+):\]/.exec(u))&&ms[h[1]])d=h[0].length,p=n(ms[h[1]][0],ms[h[1]][1]);else if(h=/^\[(.)\*(\d*)\]/.exec(u))d=h[0].length,p=h[2]?n(`\u300C${h[1]}\u300D\u3092 ${h[2]} \u500B`,`"${h[1]}" ${h[2]} times`):n(`\u300C${h[1]}\u300D\u3092\u5FC5\u8981\u306A\u3060\u3051\u7E70\u308A\u8FD4\u3059`,`"${h[1]}" repeated as needed`);else if(h=/^\\([0-7]{1,3})/.exec(u))d=h[0].length,p=n(`8\u9032\u6570 ${h[1]} \u306E\u6587\u5B57`,`the character with octal code ${h[1]}`);else if(u[0]==="\\"&&gs[u[1]])d=2,p=n(gs[u[1]][0],gs[u[1]][1]);else if(u.length>=3&&u[1]==="-")d=3,p=n(`${u[0]}\u301C${u[2]}`,`${u[0]}-${u[2]}`);else{d=u[0]==="\\"&&u.length>1?2:1;let f=u[d-1];p=f===" "?n("\u30B9\u30DA\u30FC\u30B9","space"):n(`\u300C${f}\u300D`,`"${f}"`)}r.push({start:o,end:o+d,kind:"pattern",explanation:`\`${s.slice(o,o+d)}\`: ${p}`,children:[]}),a.push(p),o+=d}if(!r.length)return;let l=a.join(n("\u3001",", ")),c=e==="delete"?n(`\u524A\u9664\u3059\u308B\u6587\u5B57: ${l}`,`characters to delete: ${l}`):e==="squeeze"?n(`\u9023\u7D9A\u3057\u305F\u30891\u3064\u306B\u307E\u3068\u3081\u308B\u6587\u5B57: ${l}`,`characters whose repeats are squeezed: ${l}`):e==="from"?n(`\u5909\u63DB\u5143\u306E\u6587\u5B57: ${l}`,`characters to replace: ${l}`):n(`\u5909\u63DB\u5148\u306E\u6587\u5B57: ${l}\uFF081\u3064\u76EE\u306E\u96C6\u5408\u306E\u5404\u6587\u5B57\u304C\u3001\u540C\u3058\u4F4D\u7F6E\u306E\u3053\u306E\u6587\u5B57\u306B\u7F6E\u304D\u63DB\u308F\u308B\uFF09`,`replacement characters: ${l} (each character of the first set becomes the one at the same position here)`);return{tokens:r,note:c}}function zi(s,e,t){let n=A(t),r=l=>/^\[:(\w+):\]$/.exec(l)?.[1]??(l==="a-z"?"lower":l==="A-Z"?"upper":void 0);if(e===void 0)return;let a=r(s),o=r(e);if(a==="upper"&&o==="lower")return n("\u5927\u6587\u5B57\u3092\u5C0F\u6587\u5B57\u306B\u5909\u63DB\u3059\u308B","converts uppercase to lowercase");if(a==="lower"&&o==="upper")return n("\u5C0F\u6587\u5B57\u3092\u5927\u6587\u5B57\u306B\u5909\u63DB\u3059\u308B","converts lowercase to uppercase")}var Wi={d:["\u884C\u3092\u524A\u9664\u3059\u308B\uFF08\u51FA\u529B\u305B\u305A\u3001\u6B21\u306E\u884C\u306E\u51E6\u7406\u306B\u9032\u3080\uFF09","delete the line (print nothing and start the next cycle)"],D:["\u30D1\u30BF\u30FC\u30F3\u30B9\u30DA\u30FC\u30B9\u306E\u6700\u521D\u306E\u884C\u3092\u524A\u9664\u3059\u308B","delete the first line of the pattern space"],p:["\u884C\u3092\u51FA\u529B\u3059\u308B\uFF08`-n` \u3068\u7D44\u307F\u5408\u308F\u305B\u3066\u3001\u9078\u3093\u3060\u884C\u3060\u3051\u3092\u51FA\u529B\u3059\u308B\u306E\u306B\u4F7F\u3046\uFF09","print the line (with `-n`, prints only the selected lines)"],P:["\u30D1\u30BF\u30FC\u30F3\u30B9\u30DA\u30FC\u30B9\u306E\u6700\u521D\u306E\u884C\u3092\u51FA\u529B\u3059\u308B","print the first line of the pattern space"],n:["\u73FE\u5728\u306E\u884C\u3092\u51FA\u529B\u3057\u3066\u3001\u6B21\u306E\u884C\u3092\u8AAD\u307F\u8FBC\u3080","print the line and read the next one"],N:["\u6B21\u306E\u884C\u3092\u8AAD\u307F\u8FBC\u3093\u3067\u3001\u6539\u884C\u3067\u3064\u306A\u3044\u3067\u8FFD\u52A0\u3059\u308B","append the next line, joined with a newline"],"=":["\u884C\u756A\u53F7\u3092\u51FA\u529B\u3059\u308B","print the line number"],l:["\u884C\u3092\u5236\u5FA1\u6587\u5B57\u304C\u898B\u3048\u308B\u5F62\u3067\u51FA\u529B\u3059\u308B","print the line with control characters made visible"],h:["\u30D1\u30BF\u30FC\u30F3\u30B9\u30DA\u30FC\u30B9\u3092\u30DB\u30FC\u30EB\u30C9\u30B9\u30DA\u30FC\u30B9\u306B\u30B3\u30D4\u30FC\u3059\u308B","copy the pattern space to the hold space"],H:["\u30D1\u30BF\u30FC\u30F3\u30B9\u30DA\u30FC\u30B9\u3092\u30DB\u30FC\u30EB\u30C9\u30B9\u30DA\u30FC\u30B9\u306E\u672B\u5C3E\u306B\u8FFD\u52A0\u3059\u308B","append the pattern space to the hold space"],g:["\u30DB\u30FC\u30EB\u30C9\u30B9\u30DA\u30FC\u30B9\u3092\u30D1\u30BF\u30FC\u30F3\u30B9\u30DA\u30FC\u30B9\u306B\u30B3\u30D4\u30FC\u3059\u308B","copy the hold space to the pattern space"],G:["\u30DB\u30FC\u30EB\u30C9\u30B9\u30DA\u30FC\u30B9\u3092\u30D1\u30BF\u30FC\u30F3\u30B9\u30DA\u30FC\u30B9\u306E\u672B\u5C3E\u306B\u8FFD\u52A0\u3059\u308B","append the hold space to the pattern space"],x:["\u30D1\u30BF\u30FC\u30F3\u30B9\u30DA\u30FC\u30B9\u3068\u30DB\u30FC\u30EB\u30C9\u30B9\u30DA\u30FC\u30B9\u3092\u5165\u308C\u66FF\u3048\u308B","exchange the pattern and hold spaces"],z:["\u30D1\u30BF\u30FC\u30F3\u30B9\u30DA\u30FC\u30B9\u3092\u7A7A\u306B\u3059\u308B","empty the pattern space"],F:["\u5165\u529B\u30D5\u30A1\u30A4\u30EB\u540D\u3092\u51FA\u529B\u3059\u308B","print the input file name"]},_s=class{constructor(e,t,n){this.src=e;this.flavor=t;this.lang=n;this.s=A(n)}src;flavor;lang;i=0;s;parse(){let e=[],{src:t}=this;for(;this.i<t.length;){let n=t[this.i];if(/[\s;]/.test(n)){this.i++;continue}if(n==="#"){let r=this.lineEnd();e.push(this.tok(this.i,r,"comment",this.s("\u30B3\u30E1\u30F3\u30C8","Comment"))),this.i=r;continue}if(n==="}"){e.push(this.tok(this.i,this.i+1,"keyword",this.s("`}`: \u30B3\u30DE\u30F3\u30C9\u306E\u307E\u3068\u307E\u308A\u306E\u7D42\u308F\u308A","`}`: end of the command group"))),this.i++;continue}e.push(this.command())}return e}tok(e,t,n,r,a=[]){return{start:e,end:t,kind:n,explanation:r,children:a}}lineEnd(){let e=this.src.indexOf(`
83
+ `;case"%":return"%";case"N":case"e":return""}},a="",o;for(let l=0;l<s.length;){if(s[l]!=="%"){a+=s[l++];continue}let c=s.slice(l+1),u;if(u=/^C\([^)]*\)|^C(red|green|blue|yellow|reset)/.exec(c)){l+=1+u[0].length;continue}if(u=/^(<|>|>>|><)\((\d+)(?:,(trunc|ltrunc|mtrunc))?\)/.exec(c)){o={dir:u[1],width:Number(u[2]),trunc:u[3]},l+=1+u[0].length;continue}if(u=/^x([0-9a-fA-F]{2})/.exec(c)){a+=String.fromCharCode(parseInt(u[1],16)),l+=1+u[0].length;continue}if(u=/^(an|ae|al|ad|ar|at|ai|aI|as|cn|ce|cl|cd|cr|ct|ci|cI|cs|[HhTtPpsfbBdDnN%e])/.exec(c),!u)throw new De(`%${c.slice(0,2)}`);let h=r(u[1]);o&&(h=$l(h,o.dir,o.width,o.trunc),o=void 0),a+=h,l+=1+u[0].length}return a}function $l(s,e,t,n){if(s.length>t&&n){if(t<2)return s.slice(0,t);if(n==="trunc")return s.slice(0,t-2)+"..";if(n==="ltrunc")return".."+s.slice(s.length-(t-2));let a=t-2,o=Math.floor(a/2);return s.slice(0,o)+".."+s.slice(s.length-(a-o))}if(s.length>=t)return s;let r=t-s.length;return e==="<"?s+" ".repeat(r):e==="><"?" ".repeat(Math.floor(r/2))+s+" ".repeat(r-Math.floor(r/2)):" ".repeat(r)+s}var Mt={"{":"}","(":")","[":"]","<":">"},ys={$_:["\u73FE\u5728\u306E\u884C\uFF08\u307E\u305F\u306F\u30EB\u30FC\u30D7\u4E2D\u306E\u5024\uFF09","the current line (or loop value)"],"$.":["\u73FE\u5728\u306E\u884C\u756A\u53F7","the current line number"],"@F":["`-a` \u3067\u5206\u5272\u3057\u305F\u5404\u5217\u306E\u914D\u5217","the fields split by `-a`"],"$&":["\u6B63\u898F\u8868\u73FE\u306B\u4E00\u81F4\u3057\u305F\u90E8\u5206\u5168\u4F53","the whole regex match"],$0:["\u30B9\u30AF\u30EA\u30D7\u30C8\u540D","the script name"],"@ARGV":["\u30B3\u30DE\u30F3\u30C9\u30E9\u30A4\u30F3\u5F15\u6570\u306E\u914D\u5217","the command-line arguments"],$ARGV:["\u73FE\u5728\u8AAD\u3093\u3067\u3044\u308B\u30D5\u30A1\u30A4\u30EB\u540D","the current input file name"],"%ENV":["\u74B0\u5883\u5909\u6570\u306E\u30CF\u30C3\u30B7\u30E5\uFF08`$ENV{HOME}` \u306A\u3069\uFF09","the environment (`$ENV{HOME}`)"],"$,":["print \u306E\u5F15\u6570\u306E\u9593\u306B\u5165\u308B\u533A\u5207\u308A","separator printed between print arguments"],"$\\":["print \u306E\u6700\u5F8C\u306B\u4ED8\u304F\u6587\u5B57\u5217","appended after each print"],"$/":["\u5165\u529B\u306E\u884C\u533A\u5207\u308A","the input record separator"]},ct={print:["\u51FA\u529B\u3059\u308B\uFF08\u5F15\u6570\u304C\u306A\u3051\u308C\u3070 `$_`\uFF09","print (`$_` if no arguments)"],say:["\u6539\u884C\u4ED8\u304D\u3067\u51FA\u529B\u3059\u308B\uFF08\u5F15\u6570\u304C\u306A\u3051\u308C\u3070 `$_`\uFF09","print with a newline (`$_` if no arguments)"],printf:["\u66F8\u5F0F\u3092\u6307\u5B9A\u3057\u3066\u51FA\u529B\u3059\u308B","print with a format"],chomp:["\u672B\u5C3E\u306E\u6539\u884C\u3092\u53D6\u308A\u9664\u304F","remove the trailing newline"],chop:["\u672B\u5C3E\u306E1\u6587\u5B57\u3092\u53D6\u308A\u9664\u304F","remove the last character"],lc:["\u5C0F\u6587\u5B57\u306B\u3059\u308B","lowercase"],uc:["\u5927\u6587\u5B57\u306B\u3059\u308B","uppercase"],lcfirst:["\u5148\u982D\u3092\u5C0F\u6587\u5B57\u306B\u3059\u308B","lowercase the first character"],ucfirst:["\u5148\u982D\u3092\u5927\u6587\u5B57\u306B\u3059\u308B","uppercase the first character"],length:["\u6587\u5B57\u6570","the length"],substr:["\u90E8\u5206\u6587\u5B57\u5217","a substring"],index:["\u6587\u5B57\u5217\u306E\u4F4D\u7F6E\uFF080\u59CB\u307E\u308A\uFF09","position of a substring (0-based)"],split:["\u533A\u5207\u308A\u3067\u5206\u5272\u3057\u3066\u914D\u5217\u306B\u3059\u308B","split into a list"],join:["\u533A\u5207\u308A\u3067\u3064\u306A\u3044\u3067\u6587\u5B57\u5217\u306B\u3059\u308B","join a list into a string"],sprintf:["\u66F8\u5F0F\u3092\u6307\u5B9A\u3057\u3066\u6587\u5B57\u5217\u3092\u4F5C\u308B","format a string"],push:["\u914D\u5217\u306E\u672B\u5C3E\u306B\u8FFD\u52A0\u3059\u308B","append to an array"],sort:["\u4E26\u3079\u66FF\u3048\u308B","sort"],reverse:["\u9006\u9806\u306B\u3059\u308B","reverse"],keys:["\u30CF\u30C3\u30B7\u30E5\u306E\u30AD\u30FC\u4E00\u89A7","the keys of a hash"],values:["\u30CF\u30C3\u30B7\u30E5\u306E\u5024\u4E00\u89A7","the values of a hash"],exists:["\u30AD\u30FC\u304C\u3042\u308B\u304B","whether a key exists"],defined:["\u5024\u304C\u5B9A\u7FA9\u3055\u308C\u3066\u3044\u308B\u304B","whether a value is defined"],delete:["\u8981\u7D20\u3092\u524A\u9664\u3059\u308B","delete an element"],die:["\u30A8\u30E9\u30FC\u30E1\u30C3\u30BB\u30FC\u30B8\u3092\u51FA\u3057\u3066\u7D42\u4E86\u3059\u308B","exit with an error message"],warn:["\u8B66\u544A\u3092\u8868\u793A\u3059\u308B","print a warning"],exit:["\u7D42\u4E86\u3059\u308B","exit"],map:["\u5404\u8981\u7D20\u306B\u5F0F\u3092\u9069\u7528\u3057\u305F\u30EA\u30B9\u30C8\u3092\u4F5C\u308B","apply an expression to each element"],grep:["\u6761\u4EF6\u306B\u5408\u3046\u8981\u7D20\u3060\u3051\u3092\u6B8B\u3059","keep the elements that match"],int:["\u6574\u6570\u90E8\u5206","the integer part"],abs:["\u7D76\u5BFE\u5024","the absolute value"],time:["\u73FE\u5728\u306E UNIX \u6642\u523B","the current UNIX time"],localtime:["\u65E5\u6642\u306B\u5909\u63DB\u3059\u308B","convert to local time"]};function Di(s,e){let t=s.slice(e),n=/^(s|tr|y|m|qr|q|qq|qw)\s*([^\w\s])/.exec(t),r="",a,o;if(n&&!/\w/.test(s[e-1]??""))r=n[1],a=n[2],o=e+n[0].length;else if(/^[/'"]/.test(t))a=t[0],o=e+1;else return e;let l=c=>{let u=Mt[c]??c,h=1;for(;o<s.length;){let d=s[o];if(d==="\\"){o+=2;continue}if(c!==u&&d===c)h++;else if(d===u&&--h===0)return o++,!0;o++}return!1};if(!l(a))return s.length;if(r==="s"||r==="tr"||r==="y"){if(Mt[a]){for(;/\s/.test(s[o]??"");)o++;let c=s[o++];if(!c||!l(c))return s.length}else if(!l(a))return s.length}if(r||a==="/")for(;/[a-z]/.test(s[o]??"");)o++;return o}function vl(s,e){let t=s.slice(0,e).trimEnd();return t===""||/[(,;{=~!&|?:]$|\b(if|unless|and|or|not|split|grep|return|print|say)$/.test(t)}function qi(s,e,t,n){let r=[],a=0,o=e;for(let l=e;l<t;){let c=s[l];if(c==="/"&&vl(s,l)||c==="'"||c==='"'||/[a-z]/.test(c)&&!/\w/.test(s[l-1]??"")){let u=Di(s,l);if(u>l){l=u;continue}}if("({[".includes(c))a++;else if(")}]".includes(c))a--;else if(a===0){let u=n.exec(s.slice(l,t));if(u&&u.index===0){r.push([o,l]),l+=u[0].length,o=l;continue}}l++}return r.push([o,t]),r}var ks=class{constructor(e,t){this.src=e;this.lang=t;this.s=O(t)}src;lang;s;statements(e,t){return qi(this.src,e,t,/^;/).map(([n,r])=>this.trim(n,r)).filter(([n,r])=>r>n).map(([n,r])=>this.statement(n,r))}trim(e,t){for(;e<t&&/\s/.test(this.src[e]);)e++;for(;t>e&&/\s/.test(this.src[t-1]);)t--;return[e,t]}tok(e,t,n,r,a=[]){return{start:e,end:t,kind:n,explanation:r,children:a}}statement(e,t){let{s:n,src:r}=this,a=r.slice(e,t),o=/^(BEGIN|END)\s*\{/.exec(a);if(o&&a.endsWith("}")){let f=e+a.indexOf("{"),m=this.statements(f+1,t-1);return this.tok(e,t,"block",o[1]==="BEGIN"?n("`BEGIN { }`: \u5165\u529B\u3092\u8AAD\u3080\u524D\u306B1\u56DE\u3060\u3051\u5B9F\u884C\u3059\u308B","`BEGIN { }`: runs once before any input"):n("`END { }`: \u3059\u3079\u3066\u306E\u5165\u529B\u3092\u8AAD\u3093\u3060\u5F8C\u306B1\u56DE\u3060\u3051\u5B9F\u884C\u3059\u308B","`END { }`: runs once after all input"),m)}let l=qi(r,e,t,/^\s+(if|unless)\s+/);if(l.length===2){let f=/\s+(if|unless)\s+/.exec(r.slice(l[0][1],l[1][0]))[1],m=this.statement(...this.trim(l[0][0],l[0][1])),[g,_]=this.trim(l[1][0],l[1][1]),b=this.condition(g,_),w=r.slice(g,_),y=/^\/.*\/[a-z]*$/.test(w)?n(`\u73FE\u5728\u306E\u884C\u304C \`${w}\` \u306B\u4E00\u81F4\u3059\u308B`,`the line matches \`${w}\``):`\`${w}\``;return this.tok(e,t,"keyword",f==="if"?n(`${y}\u306A\u3089: ${m.explanation}`,`if ${y}: ${m.explanation}`):n(`${y}\u3067\u306A\u3051\u308C\u3070: ${m.explanation}`,`unless ${y}: ${m.explanation}`),[m,b])}let c=/^(?:(\$\w+)\s*=~\s*)?s\b\s*[^\w\s]/.exec(a);if(c)return this.substitution(e,t,e+c[0].length-1,c[1]);if(/^(?:(\$\w+)\s*=~\s*)?(tr|y)\s*([^\w\s])/.exec(a))return this.transliteration(e,t);if(/^\/.*\/[a-z]*$/.test(a)||/^m\W/.test(a))return this.condition(e,t);let h=/^[a-z]+/.exec(a)?.[0]??"",d=this.atoms(e,t);if(["next","last","redo"].includes(h)){let f={next:["\u3053\u306E\u884C\u306E\u51E6\u7406\u3092\u7D42\u3048\u3066\u6B21\u306E\u884C\u3078\u9032\u3080","skip to the next line"],last:["\u30EB\u30FC\u30D7\u3092\u629C\u3051\u308B","leave the loop"],redo:["\u540C\u3058\u884C\u3092\u3084\u308A\u76F4\u3059","redo this line"]}[h];return this.tok(e,t,"keyword",n(f[0],f[1]),d)}if(ct[h]){d.splice(0,d.length,...d.filter(g=>g.start!==e));let f=a.slice(h.length).trim(),m=n(ct[h][0],ct[h][1]);return this.tok(e,t,"command",f?n(`\`${h}\`: ${m}\uFF08\`${f}\`\uFF09`,`\`${h}\`: ${m} (\`${f}\`)`):`\`${h}\`: ${m}`,d)}let p=/^(.+?)\s*(\.=|\+=|-=|\*=|\/=|\|\|=|\/\/=|=)(?!=|~)\s*(.+)$/s.exec(a);if(p){let[,f,m,g]=p,_={"=":[`\`${f}\` \u306B \`${g}\` \u3092\u4EE3\u5165\u3059\u308B`,`set \`${f}\` to \`${g}\``],".=":[`\`${f}\` \u306E\u672B\u5C3E\u306B \`${g}\` \u3092\u3064\u306A\u3052\u308B`,`append \`${g}\` to \`${f}\``],"+=":[`\`${f}\` \u306B \`${g}\` \u3092\u8DB3\u3059`,`add \`${g}\` to \`${f}\``],"-=":[`\`${f}\` \u304B\u3089 \`${g}\` \u3092\u5F15\u304F`,`subtract \`${g}\` from \`${f}\``],"*=":[`\`${f}\` \u306B \`${g}\` \u3092\u639B\u3051\u308B`,`multiply \`${f}\` by \`${g}\``],"/=":[`\`${f}\` \u3092 \`${g}\` \u3067\u5272\u308B`,`divide \`${f}\` by \`${g}\``],"||=":[`\`${f}\` \u304C\u507D\u306A\u3089 \`${g}\` \u3092\u4EE3\u5165\u3059\u308B`,`set \`${f}\` to \`${g}\` if it is false`],"//=":[`\`${f}\` \u304C\u672A\u5B9A\u7FA9\u306A\u3089 \`${g}\` \u3092\u4EE3\u5165\u3059\u308B`,`set \`${f}\` to \`${g}\` if undefined`]};return this.tok(e,t,"assignment",n(_[m][0],_[m][1]),d)}if(/\+\+$|^\+\+/.test(a)){let f=a.replace(/\+\+/g,"").trim();return this.tok(e,t,"assignment",n(`\`${f}\` \u30921\u5897\u3084\u3059\uFF08\u51FA\u73FE\u56DE\u6570\u3092\u6570\u3048\u308B\u5B9A\u756A\uFF09`,`increment \`${f}\` (the usual way to count)`),d)}return this.tok(e,t,"command",n(`\u5F0F \`${a}\` \u3092\u8A55\u4FA1\u3059\u308B`,`evaluate \`${a}\``),d)}condition(e,t){let{s:n,src:r}=this,a=r.slice(e,t),o=/^(m\s*)?([^\w\s])/.exec(a);if(o&&(o[1]||o[2]==="/")&&Di(r,e)===t){let l=o[2],c=Mt[l]??l,u=e+o[0].length,h=e+a.lastIndexOf(c),p=a.slice(a.lastIndexOf(c)+1).includes("i")?n("\uFF08\u5927\u6587\u5B57\u30FB\u5C0F\u6587\u5B57\u3092\u533A\u5225\u3057\u306A\u3044\uFF09"," (case-insensitive)"):"";return this.tok(e,t,"pattern",n(`\u73FE\u5728\u306E\u884C\uFF08\`$_\`\uFF09\u304C\u6B63\u898F\u8868\u73FE \`${r.slice(u,h)}\` \u306B\u4E00\u81F4\u3059\u308B\u304B${p}`,`whether the line (\`$_\`) matches \`${r.slice(u,h)}\`${p}`),ke(Ne(r.slice(u,h),"pcre",this.lang),u))}return this.tok(e,t,"test",n(`\u6761\u4EF6 \`${a}\``,`condition \`${a}\``),this.atoms(e,t))}substitution(e,t,n,r){let{s:a,src:o}=this,l=o[n],c=Mt[l]??l,u=n+1,h=u;for(;h<t&&o[h]!==c;)h+=o[h]==="\\"?2:1;let d=h,p;if(l!==c){for(h++;h<t&&/\s/.test(o[h]);)h++;p=h+1;let R=Mt[o[h]]??o[h];for(h=p;h<t&&o[h]!==R;)h+=o[h]==="\\"?2:1}else for(p=d+1,h=p;h<t&&o[h]!==c;)h+=o[h]==="\\"?2:1;let f=h,m=o.slice(f+1,t),g=o.slice(u,d),_=o.slice(p,f),b=[this.tok(u,d,"pattern",a(`\u691C\u7D22\u30D1\u30BF\u30FC\u30F3\uFF08Perl \u306E\u6B63\u898F\u8868\u73FE\uFF09\`${g}\``,`Pattern (Perl regex) \`${g}\``),ke(Ne(g,"pcre",this.lang),u)),this.tok(p,f,"string",_?a(`\u7F6E\u63DB\u5F8C\u306E\u6587\u5B57\u5217 \`${_}\`\uFF08\`$1\` \u306A\u3069\u306F\u30B0\u30EB\u30FC\u30D7\u306E\u5185\u5BB9\uFF09`,`Replacement \`${_}\` (\`$1\`\u2026 are the groups)`):a("\u7F6E\u63DB\u5F8C\u306E\u6587\u5B57\u5217: \u7A7A\uFF08\u4E00\u81F4\u3057\u305F\u90E8\u5206\u3092\u524A\u9664\u3059\u308B\uFF09","Replacement: empty (deletes the match)"),this.atoms(p,f))].filter(R=>R.end>R.start),w={g:["\u3059\u3079\u3066\u7F6E\u63DB\u3059\u308B\uFF08\u4ED8\u3051\u306A\u3044\u3068\u6700\u521D\u306E1\u3064\u3060\u3051\uFF09","replace every match (otherwise only the first)"],i:["\u5927\u6587\u5B57\u30FB\u5C0F\u6587\u5B57\u3092\u533A\u5225\u3057\u306A\u3044","case-insensitive"],m:["`^` `$` \u3092\u5404\u884C\u306B\u4E00\u81F4\u3055\u305B\u308B","`^`/`$` match at each line"],s:["`.` \u304C\u6539\u884C\u306B\u3082\u4E00\u81F4\u3059\u308B","`.` also matches newlines"],x:["\u30D1\u30BF\u30FC\u30F3\u4E2D\u306E\u7A7A\u767D\u3068\u30B3\u30E1\u30F3\u30C8\u3092\u7121\u8996\u3059\u308B","ignore whitespace and comments in the pattern"],e:["\u7F6E\u63DB\u5F8C\u306E\u6587\u5B57\u5217\u3092 Perl \u306E\u5F0F\u3068\u3057\u3066\u8A55\u4FA1\u3059\u308B","evaluate the replacement as Perl code"],r:["\u5143\u306E\u5024\u3092\u5909\u3048\u305A\u3001\u7F6E\u63DB\u3057\u305F\u7D50\u679C\u3092\u8FD4\u3059","return the result instead of changing the value"]};for(let R=0;R<m.length;R++){let v=m[R];w[v]&&b.push(this.tok(f+1+R,f+2+R,"option",`\`${v}\`: ${a(w[v][0],w[v][1])}`))}let y=r?`\`${r}\``:a("\u73FE\u5728\u306E\u884C\uFF08`$_`\uFF09","the line (`$_`)"),N=m.includes("g")?a("\u3059\u3079\u3066","every match"):a("\u6700\u521D\u306E1\u3064","the first match");return this.tok(e,t,"command",a(`\u7F6E\u63DB: ${y}\u306E\u4E2D\u3067 \`${g}\` \u306B\u4E00\u81F4\u3057\u305F\u90E8\u5206\uFF08${N}\uFF09\u3092 \`${_}\` \u306B\u7F6E\u304D\u63DB\u3048\u308B`,`Substitute in ${y}: replace ${N} of \`${g}\` with \`${_}\``),b)}transliteration(e,t){let{s:n,src:r}=this,a=/(tr|y)\s*([^\w\s])(.*?)\2(.*?)\2([a-z]*)$/s.exec(r.slice(e,t));return a?this.tok(e,t,"command",n(`\u6587\u5B57\u306E\u5909\u63DB: \`${a[3]}\` \u306E\u5404\u6587\u5B57\u3092 \`${a[4]}\` \u306E\u540C\u3058\u4F4D\u7F6E\u306E\u6587\u5B57\u306B\u7F6E\u304D\u63DB\u3048\u308B\uFF08\u30B7\u30A7\u30EB\u306E tr \u3068\u540C\u3058\uFF09`,`Transliterate: each character of \`${a[3]}\` becomes the one at the same position in \`${a[4]}\` (like the tr command)`)):this.tok(e,t,"command",n("\u6587\u5B57\u306E\u5909\u63DB\uFF08tr\uFF09","Transliterate (tr)"))}atoms(e,t){let{s:n,src:r}=this,a=[],o=/\$F\[(-?\d+)\]|\$(\d)\b|\$_\b|\$\.|\$&|\$ARGV\b|@ARGV\b|@F\b|\$ENV\{\w+\}|<STDIN>|<>|\b([a-z]+)\s*(?=\(|\s|$)/g;o.lastIndex=0;let l=r.slice(e,t),c;for(;c=o.exec(l);){let u=e+c.index,h=c[0];if(c[1]!==void 0){let d=Number(c[1]);a.push(this.tok(u,u+h.length,"variable",d<0?n(`\`${h}\`: \u5F8C\u308D\u304B\u3089 ${-d} \u756A\u76EE\u306E\u5217`,`\`${h}\`: the ${-d}th field from the end`):n(`\`${h}\`: ${d+1} \u5217\u76EE\uFF08\`-a\` \u3067\u5206\u5272\u3057\u305F\u5217\u30020\u59CB\u307E\u308A\uFF09`,`\`${h}\`: field ${d+1} (split by \`-a\`, 0-based index)`)))}else c[2]!==void 0?a.push(this.tok(u,u+h.length,"variable",n(`\`${h}\`: \u76F4\u524D\u306E\u4E00\u81F4\u3067\u30B0\u30EB\u30FC\u30D7 ${c[2]} \u306B\u4E00\u81F4\u3057\u305F\u90E8\u5206`,`\`${h}\`: what group ${c[2]} matched`))):h==="<>"||h==="<STDIN>"?a.push(this.tok(u,u+h.length,"variable",n(`\`${h}\`: \u5165\u529B\u304B\u30891\u884C\u8AAD\u3080`,`\`${h}\`: read a line of input`))):h.startsWith("$ENV")?a.push(this.tok(u,u+h.length,"variable",n(`\`${h}\`: \u74B0\u5883\u5909\u6570`,`\`${h}\`: an environment variable`))):ys[h]?a.push(this.tok(u,u+h.length,"variable",`\`${h}\`: ${n(ys[h][0],ys[h][1])}`)):c[3]&&ct[c[3]]&&a.push(this.tok(u,u+c[3].length,"function",`\`${c[3]}\`: ${n(ct[c[3]][0],ct[c[3]][1])}`))}return a}};function Ui(s,e){try{return new ks(s,e).statements(0,s.length)}catch{return[{start:0,end:s.length,kind:"error",explanation:O(e)("Perl \u306E\u30B3\u30FC\u30C9\u3092\u89E3\u6790\u3067\u304D\u307E\u305B\u3093\u3067\u3057\u305F","Could not parse the Perl code"),children:[]}]}}function zi(s,e){let t=O(e),n=[];return s.has("p")?n.push(t("\u5165\u529B\u306E\u5404\u884C\u306B\u3064\u3044\u3066\u3053\u306E\u30B3\u30FC\u30C9\u3092\u5B9F\u884C\u3057\u3001\u6700\u5F8C\u306B `$_` \u3092\u51FA\u529B\u3059\u308B\uFF08sed \u306E\u3088\u3046\u306B\u4F7F\u3048\u308B\uFF09","runs this code for each input line and then prints `$_` (sed-like)")):s.has("n")&&n.push(t("\u5165\u529B\u306E\u5404\u884C\u306B\u3064\u3044\u3066\u3053\u306E\u30B3\u30FC\u30C9\u3092\u5B9F\u884C\u3059\u308B\uFF08\u81EA\u52D5\u3067\u306F\u51FA\u529B\u3057\u306A\u3044\uFF09","runs this code for each input line (nothing is printed automatically)")),s.has("a")&&n.push(t("\u5404\u884C\u306F\u7A7A\u767D\u3067\u5206\u5272\u3055\u308C\u3066 `@F` \u306B\u5165\u308B","each line is split on whitespace into `@F`")),s.has("l")&&n.push(t("\u5404\u884C\u672B\u306E\u6539\u884C\u306F\u53D6\u308A\u9664\u304B\u308C\u3001`print` \u3067\u6539\u884C\u304C\u4ED8\u304F","line endings are removed and `print` adds one")),s.has("i")&&n.push(t("\u30D5\u30A1\u30A4\u30EB\u306F\u76F4\u63A5\u66F8\u304D\u63DB\u3048\u3089\u308C\u308B","files are edited in place")),s.has("0")&&n.push(t("`-0777` \u306A\u3089\u30D5\u30A1\u30A4\u30EB\u5168\u4F53\u30921\u3064\u306E\u6587\u5B57\u5217\u3068\u3057\u3066\u8AAD\u3080","with `-0777` the whole file is read as one string")),n.length?n.join(t("\u3002","; ")):void 0}var pn={u:["\u6240\u6709\u8005","the owner"],g:["\u30B0\u30EB\u30FC\u30D7","the group"],o:["\u305D\u306E\u4ED6\u306E\u30E6\u30FC\u30B6\u30FC","others"],a:["\u5168\u54E1","everyone"]};function fn(s,e){let t=[s&4&&e("\u8AAD\u307F","read"),s&2&&e("\u66F8\u304D","write"),s&1&&e("\u5B9F\u884C","execute")].filter(Boolean);return t.length?t.join(e("\u30FB","/")):e("\u306A\u3057","none")}function Rt(s){let e="rwxrwxrwx",t="";for(let n=0;n<9;n++)t+=s&1<<8-n?e[n]:"-";return t}function El(s){let e=Rt(s).split("");return s&2048&&(e[2]=e[2]==="x"?"s":"S"),s&1024&&(e[5]=e[5]==="x"?"s":"S"),s&512&&(e[8]=e[8]==="x"?"t":"T"),e.join("")}function Wi(s,e){let t=O(e);return/^[0-7]{1,4}$/.test(s)?Ji(s,t,!1):Bi(s,t)}function Vi(s,e){let t=O(e);if(/^[0-7]{1,4}$/.test(s))return Ji(s,t,!0);let n=Bi(s,t);return n&&(n.note=t("\u8A18\u53F7\u3067\u6307\u5B9A\u3057\u305F\u5834\u5408\u306F\u300C\u65B0\u898F\u4F5C\u6210\u6642\u306B\u8A31\u53EF\u3059\u308B\u6A29\u9650\u300D\u3092\u8868\u3059","in symbolic form it sets the permissions that new files may have")),n}function Ji(s,e,t){let n=s.padStart(3,"0").split("").map(Number),r=s.length-n.length,a=[],o=n.length===4?n[0]:0,l=n.slice(-3),c=[e("\u6240\u6709\u8005","owner"),e("\u30B0\u30EB\u30FC\u30D7","group"),e("\u305D\u306E\u4ED6","others")];if(n.length===4&&r>=0){let h=[o&4&&e("setuid\uFF084: \u5B9F\u884C\u6642\u306B\u6240\u6709\u8005\u306E\u6A29\u9650\u3067\u52D5\u304F\uFF09","setuid (4: runs with the owner's privileges)"),o&2&&e("setgid\uFF082: \u30B0\u30EB\u30FC\u30D7\u306E\u6A29\u9650\u3067\u52D5\u304F\u3002\u30C7\u30A3\u30EC\u30AF\u30C8\u30EA\u306A\u3089\u4E2D\u306E\u30D5\u30A1\u30A4\u30EB\u304C\u30B0\u30EB\u30FC\u30D7\u3092\u7D99\u627F\uFF09","setgid (2: runs with the group's privileges; in a directory, new files inherit the group)"),o&1&&e("\u30B9\u30C6\u30A3\u30C3\u30AD\u30FC\u30D3\u30C3\u30C8\uFF081: \u30C7\u30A3\u30EC\u30AF\u30C8\u30EA\u5185\u306E\u30D5\u30A1\u30A4\u30EB\u306F\u6240\u6709\u8005\u3057\u304B\u6D88\u305B\u306A\u3044\u3002/tmp \u306A\u3069\uFF09","sticky bit (1: in a directory, only owners can delete files, as in /tmp)")].filter(Boolean);a.push({start:0,end:1,kind:"number",children:[],explanation:o?e(`\`${o}\`: \u7279\u6B8A\u30D3\u30C3\u30C8 ${h.join("\u3001")}`,`\`${o}\`: special bits ${h.join(", ")}`):e("`0`: \u7279\u6B8A\u30D3\u30C3\u30C8\uFF08setuid / setgid / \u30B9\u30C6\u30A3\u30C3\u30AD\u30FC\uFF09\u306A\u3057","`0`: no special bits (setuid/setgid/sticky)")})}l.forEach((h,d)=>{let p=s.length-3+d;p<0||a.push({start:p,end:p+1,kind:"number",children:[],explanation:t?e(`\`${h}\`: ${c[d]}\u304B\u3089\u5916\u3059\u6A29\u9650: ${fn(h,e)}`,`\`${h}\`: removed from ${c[d]}: ${fn(h,e)}`):e(`\`${h}\`: ${c[d]}\u306E\u6A29\u9650: ${fn(h,e)}${d===0?"\uFF084=\u8AAD\u307F\u30012=\u66F8\u304D\u30011=\u5B9F\u884C \u306E\u5408\u8A08\uFF09":""}`,`\`${h}\`: ${c[d]} may ${fn(h,e)}${d===0?" (4=read, 2=write, 1=execute, added up)":""}`)})});let u=parseInt(s,8);if(t){let h=438&~u,d=511&~u,p=f=>f.toString(8).padStart(3,"0");return{tokens:a,note:e(`\u65B0\u3057\u3044\u30D5\u30A1\u30A4\u30EB\u306F ${p(h)} (${Rt(h)})\u3001\u30C7\u30A3\u30EC\u30AF\u30C8\u30EA\u306F ${p(d)} (${Rt(d)}) \u306B\u306A\u308B`,`new files get ${p(h)} (${Rt(h)}), directories ${p(d)} (${Rt(d)})`)}}return{tokens:a,note:`${El(u)}`}}function Bi(s,e){let t=[],n=0;for(let r of s.split(",")){let a=/^([ugoa]*)((?:[-+=](?:[ugo](?![rwxXst])|[rwxXst]*))+)$/.exec(r);if(!a)return;let o=a[1]?a[1].split("").map(c=>e(pn[c][0],pn[c][1])).join(e("\u3068"," and ")):e("\u5168\u54E1\uFF08umask \u3067\u5916\u3055\u308C\u308B\u5206\u3092\u9664\u304F\uFF09","everyone (minus what umask removes)"),l=[];for(let[,c,u]of a[2].matchAll(/([-+=])([ugo](?![rwxXst])|[rwxXst]*)/g)){let d=(/^[ugo]$/.test(u)?[e(`${pn[u][0]}\u3068\u540C\u3058\u6A29\u9650`,`the same permissions as ${pn[u][1]}`)]:u.split("").map(p=>({r:e("\u8AAD\u307F\u53D6\u308A","read"),w:e("\u66F8\u304D\u8FBC\u307F","write"),x:e("\u5B9F\u884C","execute"),X:e("\u5B9F\u884C\uFF08\u30C7\u30A3\u30EC\u30AF\u30C8\u30EA\u304B\u3001\u65E2\u306B\u8AB0\u304B\u304C\u5B9F\u884C\u53EF\u80FD\u306A\u30D5\u30A1\u30A4\u30EB\u306E\u307F\uFF09","execute (directories, or files already executable by someone)"),s:e("setuid/setgid","setuid/setgid"),t:e("\u30B9\u30C6\u30A3\u30C3\u30AD\u30FC\u30D3\u30C3\u30C8","the sticky bit")})[p])).join(e("\u30FB",", "));l.push(c==="+"?e(`${d}\u6A29\u9650\u3092\u8FFD\u52A0\u3059\u308B`,`add ${d}`):c==="-"?e(`${d}\u6A29\u9650\u3092\u5916\u3059`,`remove ${d}`):/^[ugo]$/.test(u)?e(`\u6A29\u9650\u3092${d}\u306B\u3059\u308B`,`set ${d}`):u?e(`\u6A29\u9650\u3092${d}\u3060\u3051\u306B\u3059\u308B`,`set exactly ${d}`):e("\u6A29\u9650\u3092\u3059\u3079\u3066\u5916\u3059","remove all permissions"))}t.push({start:n,end:n+r.length,kind:"operator",children:[],explanation:e(`\`${r}\`: ${o}\u306B\u5BFE\u3057\u3066${l.join("\u3001")}`,`\`${r}\`: for ${o}, ${l.join(", then ")}`)}),n+=r.length+1}return{tokens:t}}var mn={n:["\u6570\u5024\u3068\u3057\u3066\u6BD4\u8F03","compare as numbers"],g:["\u4E00\u822C\u7684\u306A\u6570\u5024\uFF08\u6307\u6570\u8868\u8A18\u3082\uFF09\u3068\u3057\u3066\u6BD4\u8F03","compare as general numbers (incl. exponents)"],h:["\u5358\u4F4D\u4ED8\u304D\u306E\u6570\u5024\uFF082K, 1G\uFF09\u3068\u3057\u3066\u6BD4\u8F03","compare human-readable sizes (2K, 1G)"],r:["\u9006\u9806\uFF08\u964D\u9806\uFF09","reverse (descending)"],b:["\u5148\u982D\u306E\u7A7A\u767D\u3092\u7121\u8996","ignore leading blanks"],f:["\u5927\u6587\u5B57\u30FB\u5C0F\u6587\u5B57\u3092\u533A\u5225\u3057\u306A\u3044","ignore case"],d:["\u82F1\u6570\u5B57\u3068\u7A7A\u767D\u3060\u3051\u3067\u6BD4\u8F03","dictionary order"],i:["\u8868\u793A\u3067\u304D\u306A\u3044\u6587\u5B57\u3092\u7121\u8996","ignore non-printable characters"],M:["\u6708\u540D\uFF08JAN\u301CDEC\uFF09\u3068\u3057\u3066\u6BD4\u8F03","compare as month names"],V:["\u30D0\u30FC\u30B8\u30E7\u30F3\u756A\u53F7\u3068\u3057\u3066\u6BD4\u8F03","compare as version numbers"],R:["\u30E9\u30F3\u30C0\u30E0\u306B\u4E26\u3079\u308B","random order"]};function Hi(s,e){let t=O(e),n=/^(\d+)(?:\.(\d+))?([bdfgiMhnRrV]*)(?:(,)(\d+)(?:\.(\d+))?([bdfgiMhnRrV]*))?$/.exec(s);if(!n)return;let[,r,a,o,l,c,u,h]=n,d=[],p=0,f=(y,N,R)=>{d.push({start:p,end:p+y,kind:N,explanation:R,children:[]}),p+=y},m=(y,N,R)=>{f(y.length,"number",R?t(`\`${y}\`: \u30AD\u30FC\u306E\u958B\u59CB\u306F ${y} \u5217\u76EE`,`\`${y}\`: the key starts at field ${y}`):t(`\`${y}\`: \u30AD\u30FC\u306E\u7D42\u308F\u308A\u306F ${y} \u5217\u76EE`,`\`${y}\`: the key ends at field ${y}`)),N&&f(N.length+1,"number",t(`\`.${N}\`: \u305D\u306E\u5217\u306E ${N} \u6587\u5B57\u76EE`,`\`.${N}\`: character ${N} of that field`))},g=y=>{for(let N of y)f(1,"option",`\`${N}\`: ${t(mn[N][0],mn[N][1])}`)};m(r,a,!0),g(o),l&&(f(1,"operator",t("`,`: \u30AD\u30FC\u306E\u958B\u59CB\u3068\u7D42\u308F\u308A\u306E\u533A\u5207\u308A","`,`: separates the start and end of the key")),m(c,u,!1),g(h));let _=[...new Set((o+(h??"")).split(""))].filter(Boolean).map(y=>t(mn[y][0],mn[y][1])).join(t("\u3001",", ")),b=l?r===c?t(`${r} \u5217\u76EE\u3060\u3051`,`field ${r} only`):t(`${r}\u301C${c} \u5217\u76EE`,`fields ${r} to ${c}`):t(`${r} \u5217\u76EE\u304B\u3089\u884C\u672B\u307E\u3067`,`field ${r} through the end of the line`),w=t(`${b}\u3092\u30AD\u30FC\u306B\u3059\u308B${_?`\uFF08${_}\uFF09`:""}`,`sort by ${b}${_?` (${_})`:""}`);return l||(w+=t(`\u3002\u6CE8\u610F: \u7D42\u308F\u308A\u3092\u6307\u5B9A\u3057\u306A\u3044\u3068\u884C\u672B\u307E\u3067\u304C\u30AD\u30FC\u306B\u306A\u308B\uFF08${r} \u5217\u76EE\u3060\u3051\u306A\u3089 \`-k${r},${r}\`\uFF09`,`. Note: without an end the key runs to the end of the line (use \`-k${r},${r}\` for one field)`)),{tokens:d,note:w}}function Gi(s,e,t){let n=O(t);if(!/^(\d+|\d+-\d*|-\d+)(,(\d+|\d+-\d*|-\d+))*$/.test(s))return;let[r,a]=e==="field"?["\u5217\u76EE","field"]:["\u6587\u5B57\u76EE","character"],o=[],l=[],c=0;for(let u of s.split(",")){let[h,d]=u.split("-"),p;u.includes("-")?h&&d?p=n(`${h}\u301C${d} ${r}`,`${a}s ${h} to ${d}`):h?p=n(`${h} ${r}\u4EE5\u964D\u3059\u3079\u3066`,`${a} ${h} onwards`):p=n(`\u5148\u982D\u304B\u3089 ${d} ${r}\u307E\u3067`,`${a}s 1 to ${d}`):p=n(`${h} ${r}`,`${a} ${h}`),o.push({start:c,end:c+u.length,kind:"number",explanation:`\`${u}\`: ${p}`,children:[]}),l.push(p),c+=u.length+1}return{tokens:o,note:n(`\u53D6\u308A\u51FA\u3059\u306E\u306F ${l.join("\u3001")}\uFF08\u756A\u53F7\u306F1\u59CB\u307E\u308A\uFF09`,`selects ${l.join(", ")} (numbered from 1)`)}}var $s={upper:["\u5927\u6587\u5B57","uppercase letters"],lower:["\u5C0F\u6587\u5B57","lowercase letters"],alpha:["\u82F1\u5B57","letters"],digit:["\u6570\u5B57","digits"],alnum:["\u82F1\u6570\u5B57","letters and digits"],space:["\u7A7A\u767D\u6587\u5B57\uFF08\u6539\u884C\u30FB\u30BF\u30D6\u3092\u542B\u3080\uFF09","whitespace (incl. newline and tab)"],blank:["\u30B9\u30DA\u30FC\u30B9\u3068\u30BF\u30D6","spaces and tabs"],punct:["\u8A18\u53F7","punctuation"],cntrl:["\u5236\u5FA1\u6587\u5B57","control characters"],print:["\u8868\u793A\u53EF\u80FD\u306A\u6587\u5B57","printable characters"],graph:["\u7A7A\u767D\u4EE5\u5916\u306E\u8868\u793A\u53EF\u80FD\u306A\u6587\u5B57","visible characters"],xdigit:["16\u9032\u6570\u5B57","hex digits"]},vs={n:["\u6539\u884C","newline"],t:["\u30BF\u30D6","tab"],r:["\u5FA9\u5E30\u6587\u5B57(CR\u3002Windows \u306E\u6539\u884C CRLF \u306E CR)","carriage return (the CR of Windows CRLF)"],"\\":["\u30D0\u30C3\u30AF\u30B9\u30E9\u30C3\u30B7\u30E5","backslash"],a:["\u30D9\u30EB","bell"],b:["\u30D0\u30C3\u30AF\u30B9\u30DA\u30FC\u30B9","backspace"],f:["\u6539\u30DA\u30FC\u30B8","form feed"],v:["\u5782\u76F4\u30BF\u30D6","vertical tab"]};function Yi(s,e,t){let n=O(t),r=[],a=[],o=0;for(;o<s.length;){let u=s.slice(o),h,d,p;if((h=/^\[:(\w+):\]/.exec(u))&&$s[h[1]])d=h[0].length,p=n($s[h[1]][0],$s[h[1]][1]);else if(h=/^\[(.)\*(\d*)\]/.exec(u))d=h[0].length,p=h[2]?n(`\u300C${h[1]}\u300D\u3092 ${h[2]} \u500B`,`"${h[1]}" ${h[2]} times`):n(`\u300C${h[1]}\u300D\u3092\u5FC5\u8981\u306A\u3060\u3051\u7E70\u308A\u8FD4\u3059`,`"${h[1]}" repeated as needed`);else if(h=/^\\([0-7]{1,3})/.exec(u))d=h[0].length,p=n(`8\u9032\u6570 ${h[1]} \u306E\u6587\u5B57`,`the character with octal code ${h[1]}`);else if(u[0]==="\\"&&vs[u[1]])d=2,p=n(vs[u[1]][0],vs[u[1]][1]);else if(u.length>=3&&u[1]==="-")d=3,p=n(`${u[0]}\u301C${u[2]}`,`${u[0]}-${u[2]}`);else{d=u[0]==="\\"&&u.length>1?2:1;let f=u[d-1];p=f===" "?n("\u30B9\u30DA\u30FC\u30B9","space"):n(`\u300C${f}\u300D`,`"${f}"`)}r.push({start:o,end:o+d,kind:"pattern",explanation:`\`${s.slice(o,o+d)}\`: ${p}`,children:[]}),a.push(p),o+=d}if(!r.length)return;let l=a.join(n("\u3001",", ")),c=e==="delete"?n(`\u524A\u9664\u3059\u308B\u6587\u5B57: ${l}`,`characters to delete: ${l}`):e==="squeeze"?n(`\u9023\u7D9A\u3057\u305F\u30891\u3064\u306B\u307E\u3068\u3081\u308B\u6587\u5B57: ${l}`,`characters whose repeats are squeezed: ${l}`):e==="from"?n(`\u5909\u63DB\u5143\u306E\u6587\u5B57: ${l}`,`characters to replace: ${l}`):n(`\u5909\u63DB\u5148\u306E\u6587\u5B57: ${l}\uFF081\u3064\u76EE\u306E\u96C6\u5408\u306E\u5404\u6587\u5B57\u304C\u3001\u540C\u3058\u4F4D\u7F6E\u306E\u3053\u306E\u6587\u5B57\u306B\u7F6E\u304D\u63DB\u308F\u308B\uFF09`,`replacement characters: ${l} (each character of the first set becomes the one at the same position here)`);return{tokens:r,note:c}}function Zi(s,e,t){let n=O(t),r=l=>/^\[:(\w+):\]$/.exec(l)?.[1]??(l==="a-z"?"lower":l==="A-Z"?"upper":void 0);if(e===void 0)return;let a=r(s),o=r(e);if(a==="upper"&&o==="lower")return n("\u5927\u6587\u5B57\u3092\u5C0F\u6587\u5B57\u306B\u5909\u63DB\u3059\u308B","converts uppercase to lowercase");if(a==="lower"&&o==="upper")return n("\u5C0F\u6587\u5B57\u3092\u5927\u6587\u5B57\u306B\u5909\u63DB\u3059\u308B","converts lowercase to uppercase")}var Ki={d:["\u884C\u3092\u524A\u9664\u3059\u308B\uFF08\u51FA\u529B\u305B\u305A\u3001\u6B21\u306E\u884C\u306E\u51E6\u7406\u306B\u9032\u3080\uFF09","delete the line (print nothing and start the next cycle)"],D:["\u30D1\u30BF\u30FC\u30F3\u30B9\u30DA\u30FC\u30B9\u306E\u6700\u521D\u306E\u884C\u3092\u524A\u9664\u3059\u308B","delete the first line of the pattern space"],p:["\u884C\u3092\u51FA\u529B\u3059\u308B\uFF08`-n` \u3068\u7D44\u307F\u5408\u308F\u305B\u3066\u3001\u9078\u3093\u3060\u884C\u3060\u3051\u3092\u51FA\u529B\u3059\u308B\u306E\u306B\u4F7F\u3046\uFF09","print the line (with `-n`, prints only the selected lines)"],P:["\u30D1\u30BF\u30FC\u30F3\u30B9\u30DA\u30FC\u30B9\u306E\u6700\u521D\u306E\u884C\u3092\u51FA\u529B\u3059\u308B","print the first line of the pattern space"],n:["\u73FE\u5728\u306E\u884C\u3092\u51FA\u529B\u3057\u3066\u3001\u6B21\u306E\u884C\u3092\u8AAD\u307F\u8FBC\u3080","print the line and read the next one"],N:["\u6B21\u306E\u884C\u3092\u8AAD\u307F\u8FBC\u3093\u3067\u3001\u6539\u884C\u3067\u3064\u306A\u3044\u3067\u8FFD\u52A0\u3059\u308B","append the next line, joined with a newline"],"=":["\u884C\u756A\u53F7\u3092\u51FA\u529B\u3059\u308B","print the line number"],l:["\u884C\u3092\u5236\u5FA1\u6587\u5B57\u304C\u898B\u3048\u308B\u5F62\u3067\u51FA\u529B\u3059\u308B","print the line with control characters made visible"],h:["\u30D1\u30BF\u30FC\u30F3\u30B9\u30DA\u30FC\u30B9\u3092\u30DB\u30FC\u30EB\u30C9\u30B9\u30DA\u30FC\u30B9\u306B\u30B3\u30D4\u30FC\u3059\u308B","copy the pattern space to the hold space"],H:["\u30D1\u30BF\u30FC\u30F3\u30B9\u30DA\u30FC\u30B9\u3092\u30DB\u30FC\u30EB\u30C9\u30B9\u30DA\u30FC\u30B9\u306E\u672B\u5C3E\u306B\u8FFD\u52A0\u3059\u308B","append the pattern space to the hold space"],g:["\u30DB\u30FC\u30EB\u30C9\u30B9\u30DA\u30FC\u30B9\u3092\u30D1\u30BF\u30FC\u30F3\u30B9\u30DA\u30FC\u30B9\u306B\u30B3\u30D4\u30FC\u3059\u308B","copy the hold space to the pattern space"],G:["\u30DB\u30FC\u30EB\u30C9\u30B9\u30DA\u30FC\u30B9\u3092\u30D1\u30BF\u30FC\u30F3\u30B9\u30DA\u30FC\u30B9\u306E\u672B\u5C3E\u306B\u8FFD\u52A0\u3059\u308B","append the hold space to the pattern space"],x:["\u30D1\u30BF\u30FC\u30F3\u30B9\u30DA\u30FC\u30B9\u3068\u30DB\u30FC\u30EB\u30C9\u30B9\u30DA\u30FC\u30B9\u3092\u5165\u308C\u66FF\u3048\u308B","exchange the pattern and hold spaces"],z:["\u30D1\u30BF\u30FC\u30F3\u30B9\u30DA\u30FC\u30B9\u3092\u7A7A\u306B\u3059\u308B","empty the pattern space"],F:["\u5165\u529B\u30D5\u30A1\u30A4\u30EB\u540D\u3092\u51FA\u529B\u3059\u308B","print the input file name"]},Es=class{constructor(e,t,n){this.src=e;this.flavor=t;this.lang=n;this.s=O(n)}src;flavor;lang;i=0;s;parse(){let e=[],{src:t}=this;for(;this.i<t.length;){let n=t[this.i];if(/[\s;]/.test(n)){this.i++;continue}if(n==="#"){let r=this.lineEnd();e.push(this.tok(this.i,r,"comment",this.s("\u30B3\u30E1\u30F3\u30C8","Comment"))),this.i=r;continue}if(n==="}"){e.push(this.tok(this.i,this.i+1,"keyword",this.s("`}`: \u30B3\u30DE\u30F3\u30C9\u306E\u307E\u3068\u307E\u308A\u306E\u7D42\u308F\u308A","`}`: end of the command group"))),this.i++;continue}e.push(this.command())}return e}tok(e,t,n,r,a=[]){return{start:e,end:t,kind:n,explanation:r,children:a}}lineEnd(){let e=this.src.indexOf(`
84
84
  `,this.i);return e<0?this.src.length:e}skipSpaces(){for(;this.src[this.i]===" "||this.src[this.i]===" ";)this.i++}delimited(e){let t=this.i;for(;this.i<this.src.length;){let n=this.src[this.i];if(n==="\\"){this.i+=2;continue}if(n===e)return this.i++,[t,this.i-1];if(n===`
85
85
  `&&e!==`
86
- `)break;this.i++}}regex(e,t){return ye(Se(this.src.slice(e,t),this.flavor,this.lang,{sedEscapes:!0}),e)}address(){let{src:e,s:t}=this,n=this.i,r;if(r=/^(\d+)~(\d+)/.exec(e.slice(n)))return this.i+=r[0].length,{token:this.tok(n,this.i,"pattern",t(`\`${r[0]}\`: ${r[1]} \u884C\u76EE\u304B\u3089 ${r[2]} \u884C\u304A\u304D\u306E\u884C`,`\`${r[0]}\`: every ${r[2]}th line starting at line ${r[1]}`)),text:t(`${r[1]} \u884C\u76EE\u304B\u3089 ${r[2]} \u884C\u304A\u304D`,`every ${r[2]}th line from ${r[1]}`)};if(r=/^\d+/.exec(e.slice(n)))return this.i+=r[0].length,{token:this.tok(n,this.i,"pattern",t(`\`${r[0]}\`: ${r[0]} \u884C\u76EE`,`\`${r[0]}\`: line ${r[0]}`)),text:t(`${r[0]} \u884C\u76EE`,`line ${r[0]}`)};if(e[n]==="$")return this.i++,{token:this.tok(n,this.i,"pattern",t("`$`: \u6700\u7D42\u884C","`$`: the last line")),text:t("\u6700\u7D42\u884C","the last line")};if(e[n]==="/"||e[n]==="\\"&&e[n+1]){let a=e[n]==="/"?"/":e[n+1];this.i+=e[n]==="/"?1:2;let o=this.delimited(a);if(!o)return this.i=e.length,{token:this.tok(n,this.i,"error",t("\u6B63\u898F\u8868\u73FE\u30A2\u30C9\u30EC\u30B9\u304C\u9589\u3058\u3089\u308C\u3066\u3044\u306A\u3044","Unterminated regex address")),text:""};let l="";for(;/[IM]/.test(e[this.i]??"");)l+=e[this.i++];let c=e.slice(o[0],o[1]),u=l.includes("I")?t("\uFF08\u5927\u6587\u5B57\u30FB\u5C0F\u6587\u5B57\u3092\u533A\u5225\u3057\u306A\u3044\uFF09"," (case-insensitive)"):"";return{token:this.tok(n,this.i,"pattern",t(`\u6B63\u898F\u8868\u73FE \`${c}\` \u306B\u4E00\u81F4\u3059\u308B\u884C${u}`,`Lines matching the regex \`${c}\`${u}`),this.regex(o[0],o[1])),text:t(`\`${c}\` \u306B\u4E00\u81F4\u3059\u308B\u884C`,`lines matching \`${c}\``)}}}addressRange(){let{s:e,src:t}=this,n=this.address();if(!n)return;if(t[this.i]!==",")return{tokens:[n.token],text:n.text};let r=this.i++,a,o,l=this.i;if((a=/^\+(\d+)/.exec(t.slice(l)))?(this.i+=a[0].length,o={token:this.tok(l,this.i,"pattern",e(`\`${a[0]}\`: \u305D\u3053\u304B\u3089 ${a[1]} \u884C\u5F8C\u307E\u3067`,`\`${a[0]}\`: through ${a[1]} more lines`)),text:e(`\u305D\u306E ${a[1]} \u884C\u5F8C`,`${a[1]} lines later`)}):(a=/^~(\d+)/.exec(t.slice(l)))?(this.i+=a[0].length,o={token:this.tok(l,this.i,"pattern",e(`\`${a[0]}\`: \u6B21\u306E ${a[1]} \u306E\u500D\u6570\u306E\u884C\u307E\u3067`,`\`${a[0]}\`: up to the next line that is a multiple of ${a[1]}`)),text:e(`\u6B21\u306E ${a[1]} \u306E\u500D\u6570\u306E\u884C`,`the next multiple of ${a[1]}`)}):o=this.address(),!o)return{tokens:[n.token],text:n.text};let c=this.tok(r,r+1,"operator",e("`,`: \u7BC4\u56F2\u3002\u5DE6\u306E\u30A2\u30C9\u30EC\u30B9\u306E\u884C\u304B\u3089\u53F3\u306E\u30A2\u30C9\u30EC\u30B9\u306E\u884C\u307E\u3067","`,`: range from the first address through the second")),u=n.token.explanation.startsWith("`0`")?e("\u5148\u982D","the start"):n.text;return{tokens:[n.token,c,o.token],text:e(`${u}\u304B\u3089 ${o.text}\u307E\u3067`,`${u} through ${o.text}`)}}command(){let{src:e,s:t}=this,n=this.i,r=[],a=this.addressRange(),o=t("\u3059\u3079\u3066\u306E\u884C","every line");a&&(r.push(...a.tokens),o=a.text),this.skipSpaces(),e[this.i]==="!"&&(r.push(this.tok(this.i,this.i+1,"operator",t("`!`: \u30A2\u30C9\u30EC\u30B9\u306B\u4E00\u81F4\u3057\u306A\u3044\u884C\u3092\u5BFE\u8C61\u306B\u3059\u308B\uFF08\u5426\u5B9A\uFF09","`!`: apply to lines that do NOT match the address"))),this.i++,o=t(`${o}\u4EE5\u5916`,`all but ${o}`),this.skipSpaces());let l=this.i,c=e[l];if(c===void 0)return this.tok(n,this.i,"error",t("\u30A2\u30C9\u30EC\u30B9\u306E\u5F8C\u306B\u30B3\u30DE\u30F3\u30C9\u304C\u306A\u3044","Address without a command"),r);this.i++;let u=d=>this.tok(l,l+1,"command",d),h=(d,p=[])=>{let f=a?t(`${o}\u306B\u5BFE\u3057\u3066: `,`For ${o}: `):"";return this.tok(n,this.i,"command",f+d,[...r,...p])};if(c==="s")return this.substitute(n,r,a?o:void 0);if(c==="y")return this.transliterate(n,r);if(c==="{")return h(t("`{`: \u4EE5\u964D `}` \u307E\u3067\u306E\u30B3\u30DE\u30F3\u30C9\u3092\u307E\u3068\u3081\u3066\u5B9F\u884C\u3059\u308B","`{`: run the commands up to `}` as a group"),[u(t("\u30B3\u30DE\u30F3\u30C9\u306E\u307E\u3068\u307E\u308A\u306E\u958B\u59CB","start of a command group"))]);if(Wi[c]){let[d,p]=Wi[c];return h(t(d,p),[u(`\`${c}\`: ${t(d,p)}`)])}if(c==="q"||c==="Q"){this.skipSpaces();let d=/^\d+/.exec(e.slice(this.i)),p=this.i;d&&(this.i+=d[0].length);let f=c==="q"?t("\u73FE\u5728\u306E\u884C\u3092\u51FA\u529B\u3057\u3066\u7D42\u4E86\u3059\u308B","print the current line and quit"):t("\u4F55\u3082\u51FA\u529B\u305B\u305A\u306B\u7D42\u4E86\u3059\u308B","quit without printing"),m=[u(`\`${c}\`: ${f}`)];return d&&m.push(this.tok(p,this.i,"number",t(`\u7D42\u4E86\u30B9\u30C6\u30FC\u30BF\u30B9 ${d[0]}`,`exit status ${d[0]}`))),h(f,m)}if(c==="a"||c==="i"||c==="c"){e[this.i]==="\\"&&this.i++,e[this.i]===`
86
+ `)break;this.i++}}regex(e,t){return ke(Ne(this.src.slice(e,t),this.flavor,this.lang,{sedEscapes:!0}),e)}address(){let{src:e,s:t}=this,n=this.i,r;if(r=/^(\d+)~(\d+)/.exec(e.slice(n)))return this.i+=r[0].length,{token:this.tok(n,this.i,"pattern",t(`\`${r[0]}\`: ${r[1]} \u884C\u76EE\u304B\u3089 ${r[2]} \u884C\u304A\u304D\u306E\u884C`,`\`${r[0]}\`: every ${r[2]}th line starting at line ${r[1]}`)),text:t(`${r[1]} \u884C\u76EE\u304B\u3089 ${r[2]} \u884C\u304A\u304D`,`every ${r[2]}th line from ${r[1]}`)};if(r=/^\d+/.exec(e.slice(n)))return this.i+=r[0].length,{token:this.tok(n,this.i,"pattern",t(`\`${r[0]}\`: ${r[0]} \u884C\u76EE`,`\`${r[0]}\`: line ${r[0]}`)),text:t(`${r[0]} \u884C\u76EE`,`line ${r[0]}`)};if(e[n]==="$")return this.i++,{token:this.tok(n,this.i,"pattern",t("`$`: \u6700\u7D42\u884C","`$`: the last line")),text:t("\u6700\u7D42\u884C","the last line")};if(e[n]==="/"||e[n]==="\\"&&e[n+1]){let a=e[n]==="/"?"/":e[n+1];this.i+=e[n]==="/"?1:2;let o=this.delimited(a);if(!o)return this.i=e.length,{token:this.tok(n,this.i,"error",t("\u6B63\u898F\u8868\u73FE\u30A2\u30C9\u30EC\u30B9\u304C\u9589\u3058\u3089\u308C\u3066\u3044\u306A\u3044","Unterminated regex address")),text:""};let l="";for(;/[IM]/.test(e[this.i]??"");)l+=e[this.i++];let c=e.slice(o[0],o[1]),u=l.includes("I")?t("\uFF08\u5927\u6587\u5B57\u30FB\u5C0F\u6587\u5B57\u3092\u533A\u5225\u3057\u306A\u3044\uFF09"," (case-insensitive)"):"";return{token:this.tok(n,this.i,"pattern",t(`\u6B63\u898F\u8868\u73FE \`${c}\` \u306B\u4E00\u81F4\u3059\u308B\u884C${u}`,`Lines matching the regex \`${c}\`${u}`),this.regex(o[0],o[1])),text:t(`\`${c}\` \u306B\u4E00\u81F4\u3059\u308B\u884C`,`lines matching \`${c}\``)}}}addressRange(){let{s:e,src:t}=this,n=this.address();if(!n)return;if(t[this.i]!==",")return{tokens:[n.token],text:n.text};let r=this.i++,a,o,l=this.i;if((a=/^\+(\d+)/.exec(t.slice(l)))?(this.i+=a[0].length,o={token:this.tok(l,this.i,"pattern",e(`\`${a[0]}\`: \u305D\u3053\u304B\u3089 ${a[1]} \u884C\u5F8C\u307E\u3067`,`\`${a[0]}\`: through ${a[1]} more lines`)),text:e(`\u305D\u306E ${a[1]} \u884C\u5F8C`,`${a[1]} lines later`)}):(a=/^~(\d+)/.exec(t.slice(l)))?(this.i+=a[0].length,o={token:this.tok(l,this.i,"pattern",e(`\`${a[0]}\`: \u6B21\u306E ${a[1]} \u306E\u500D\u6570\u306E\u884C\u307E\u3067`,`\`${a[0]}\`: up to the next line that is a multiple of ${a[1]}`)),text:e(`\u6B21\u306E ${a[1]} \u306E\u500D\u6570\u306E\u884C`,`the next multiple of ${a[1]}`)}):o=this.address(),!o)return{tokens:[n.token],text:n.text};let c=this.tok(r,r+1,"operator",e("`,`: \u7BC4\u56F2\u3002\u5DE6\u306E\u30A2\u30C9\u30EC\u30B9\u306E\u884C\u304B\u3089\u53F3\u306E\u30A2\u30C9\u30EC\u30B9\u306E\u884C\u307E\u3067","`,`: range from the first address through the second")),u=n.token.explanation.startsWith("`0`")?e("\u5148\u982D","the start"):n.text;return{tokens:[n.token,c,o.token],text:e(`${u}\u304B\u3089 ${o.text}\u307E\u3067`,`${u} through ${o.text}`)}}command(){let{src:e,s:t}=this,n=this.i,r=[],a=this.addressRange(),o=t("\u3059\u3079\u3066\u306E\u884C","every line");a&&(r.push(...a.tokens),o=a.text),this.skipSpaces(),e[this.i]==="!"&&(r.push(this.tok(this.i,this.i+1,"operator",t("`!`: \u30A2\u30C9\u30EC\u30B9\u306B\u4E00\u81F4\u3057\u306A\u3044\u884C\u3092\u5BFE\u8C61\u306B\u3059\u308B\uFF08\u5426\u5B9A\uFF09","`!`: apply to lines that do NOT match the address"))),this.i++,o=t(`${o}\u4EE5\u5916`,`all but ${o}`),this.skipSpaces());let l=this.i,c=e[l];if(c===void 0)return this.tok(n,this.i,"error",t("\u30A2\u30C9\u30EC\u30B9\u306E\u5F8C\u306B\u30B3\u30DE\u30F3\u30C9\u304C\u306A\u3044","Address without a command"),r);this.i++;let u=d=>this.tok(l,l+1,"command",d),h=(d,p=[])=>{let f=a?t(`${o}\u306B\u5BFE\u3057\u3066: `,`For ${o}: `):"";return this.tok(n,this.i,"command",f+d,[...r,...p])};if(c==="s")return this.substitute(n,r,a?o:void 0);if(c==="y")return this.transliterate(n,r);if(c==="{")return h(t("`{`: \u4EE5\u964D `}` \u307E\u3067\u306E\u30B3\u30DE\u30F3\u30C9\u3092\u307E\u3068\u3081\u3066\u5B9F\u884C\u3059\u308B","`{`: run the commands up to `}` as a group"),[u(t("\u30B3\u30DE\u30F3\u30C9\u306E\u307E\u3068\u307E\u308A\u306E\u958B\u59CB","start of a command group"))]);if(Ki[c]){let[d,p]=Ki[c];return h(t(d,p),[u(`\`${c}\`: ${t(d,p)}`)])}if(c==="q"||c==="Q"){this.skipSpaces();let d=/^\d+/.exec(e.slice(this.i)),p=this.i;d&&(this.i+=d[0].length);let f=c==="q"?t("\u73FE\u5728\u306E\u884C\u3092\u51FA\u529B\u3057\u3066\u7D42\u4E86\u3059\u308B","print the current line and quit"):t("\u4F55\u3082\u51FA\u529B\u305B\u305A\u306B\u7D42\u4E86\u3059\u308B","quit without printing"),m=[u(`\`${c}\`: ${f}`)];return d&&m.push(this.tok(p,this.i,"number",t(`\u7D42\u4E86\u30B9\u30C6\u30FC\u30BF\u30B9 ${d[0]}`,`exit status ${d[0]}`))),h(f,m)}if(c==="a"||c==="i"||c==="c"){e[this.i]==="\\"&&this.i++,e[this.i]===`
87
87
  `&&this.i++,this.skipSpaces();let d=this.i;this.i=this.lineEnd();let p=e.slice(d,this.i),f=c==="a"?t(`\u884C\u306E\u5F8C\u306B\u300C${p}\u300D\u3068\u3044\u3046\u884C\u3092\u8FFD\u52A0\u3059\u308B`,`append the line "${p}" after it`):c==="i"?t(`\u884C\u306E\u524D\u306B\u300C${p}\u300D\u3068\u3044\u3046\u884C\u3092\u633F\u5165\u3059\u308B`,`insert the line "${p}" before it`):t(`\u884C\u3092\u300C${p}\u300D\u306B\u7F6E\u304D\u63DB\u3048\u308B`,`replace the line with "${p}"`);return h(f,[u(`\`${c}\`: ${c==="a"?t("\u5F8C\u308D\u306B\u8FFD\u52A0","append"):c==="i"?t("\u524D\u306B\u633F\u5165","insert"):t("\u7F6E\u304D\u63DB\u3048","change")}`),this.tok(d,this.i,"string",t("\u8FFD\u52A0\u3059\u308B\u30C6\u30AD\u30B9\u30C8","the text"))])}if(c===":"||c==="b"||c==="t"||c==="T"){this.skipSpaces();let d=this.i;for(;this.i<e.length&&!/[;\n}]/.test(e[this.i]);)this.i++;let p=e.slice(d,this.i).trim(),f=c===":"?t(`\u30E9\u30D9\u30EB\u300C${p}\u300D\u3092\u5B9A\u7FA9\u3059\u308B\uFF08\`b\` \u3084 \`t\` \u306E\u98DB\u3073\u5148\uFF09`,`define the label "${p}" (a target for \`b\`/\`t\`)`):c==="b"?p?t(`\u30E9\u30D9\u30EB\u300C${p}\u300D\u3078\u79FB\u52D5\u3059\u308B`,`branch to "${p}"`):t("\u30B9\u30AF\u30EA\u30D7\u30C8\u306E\u6700\u5F8C\u3078\u79FB\u52D5\u3059\u308B\uFF08\u6B21\u306E\u884C\u3078\uFF09","branch to the end of the script"):c==="t"?t(`\u76F4\u524D\u306E \`s\` \u3067\u7F6E\u63DB\u304C\u8D77\u304D\u3066\u3044\u308C\u3070${p?`\u300C${p}\u300D`:"\u30B9\u30AF\u30EA\u30D7\u30C8\u306E\u6700\u5F8C"}\u3078\u79FB\u52D5\u3059\u308B`,`if an \`s\` succeeded, branch to ${p?`"${p}"`:"the end"}`):t(`\u76F4\u524D\u306E \`s\` \u3067\u7F6E\u63DB\u304C\u8D77\u304D\u3066\u3044\u306A\u3051\u308C\u3070${p?`\u300C${p}\u300D`:"\u30B9\u30AF\u30EA\u30D7\u30C8\u306E\u6700\u5F8C"}\u3078\u79FB\u52D5\u3059\u308B`,`if no \`s\` succeeded, branch to ${p?`"${p}"`:"the end"}`);return h(f,[u(`\`${c}\`: ${f}`)])}if(c==="r"||c==="R"||c==="w"||c==="W"||c==="e"){this.skipSpaces();let d=this.i;this.i=this.lineEnd();let p=e.slice(d,this.i),f=c==="r"?t(`\u30D5\u30A1\u30A4\u30EB\u300C${p}\u300D\u306E\u5185\u5BB9\u3092\u884C\u306E\u5F8C\u306B\u51FA\u529B\u3059\u308B`,`output the contents of "${p}" after the line`):c==="R"?t(`\u30D5\u30A1\u30A4\u30EB\u300C${p}\u300D\u304B\u30891\u884C\u8AAD\u3093\u3067\u884C\u306E\u5F8C\u306B\u51FA\u529B\u3059\u308B`,`output one line of "${p}" after the line`):c==="w"?t(`\u884C\u3092\u30D5\u30A1\u30A4\u30EB\u300C${p}\u300D\u306B\u66F8\u304D\u8FBC\u3080`,`write the line to "${p}"`):c==="W"?t(`\u6700\u521D\u306E\u884C\u3092\u30D5\u30A1\u30A4\u30EB\u300C${p}\u300D\u306B\u66F8\u304D\u8FBC\u3080`,`write the first line to "${p}"`):t(p?`\u30B3\u30DE\u30F3\u30C9\u300C${p}\u300D\u3092\u5B9F\u884C\u3057\u3001\u305D\u306E\u51FA\u529B\u3092\u884C\u306E\u524D\u306B\u51FA\u3059`:"\u30D1\u30BF\u30FC\u30F3\u30B9\u30DA\u30FC\u30B9\u3092\u30B3\u30DE\u30F3\u30C9\u3068\u3057\u3066\u5B9F\u884C\u3059\u308B",p?`run "${p}" and output its result first`:"run the pattern space as a command");return h(f,[u(`\`${c}\`: ${f}`)])}return this.tok(l,l+1,"error",t(`\u4E0D\u660E\u306A sed \u30B3\u30DE\u30F3\u30C9 \`${c}\``,`Unknown sed command \`${c}\``),r)}substitute(e,t,n){let{src:r,s:a}=this,o=this.i-1,l=r[this.i],c=[this.tok(o,o+1,"command",a("`s`: \u7F6E\u63DB\u30B3\u30DE\u30F3\u30C9\uFF08`s/\u30D1\u30BF\u30FC\u30F3/\u7F6E\u63DB\u5F8C/\u30D5\u30E9\u30B0`\uFF09","`s`: substitute (`s/pattern/replacement/flags`)"))];if(!l||l===`
88
- `)return this.tok(e,this.i,"error",a("`s` \u306E\u5F8C\u306B\u533A\u5207\u308A\u6587\u5B57\u304C\u306A\u3044","`s` without a delimiter"),[...t,...c]);this.i++;let u=this.delimited(l);if(!u)return this.i=this.lineEnd(),this.tok(e,this.i,"error",a("`s` \u30B3\u30DE\u30F3\u30C9\u304C\u9589\u3058\u3089\u308C\u3066\u3044\u306A\u3044","Unterminated `s` command"),[...t,...c]);let h=v=>this.tok(v,v+1,"operator",a(`\`${l}\`: \u533A\u5207\u308A\u6587\u5B57`,`\`${l}\`: delimiter`));c.push(h(o+1));let d=r.slice(u[0],u[1]);c.push(this.tok(u[0],u[1],"pattern",d?a(`\u691C\u7D22\u30D1\u30BF\u30FC\u30F3\uFF08\u6B63\u898F\u8868\u73FE\uFF09\`${d}\``,`Pattern (regex) \`${d}\``):a("\u7A7A\u306E\u30D1\u30BF\u30FC\u30F3: \u76F4\u524D\u306B\u4F7F\u3063\u305F\u6B63\u898F\u8868\u73FE\u3092\u518D\u5229\u7528\u3059\u308B","Empty pattern: reuse the last regex"),this.regex(u[0],u[1]))),c.push(h(u[1]));let p=this.delimited(l);if(!p)return this.i=this.lineEnd(),this.tok(e,this.i,"error",a("`s` \u30B3\u30DE\u30F3\u30C9\u304C\u9589\u3058\u3089\u308C\u3066\u3044\u306A\u3044\uFF08\u7F6E\u63DB\u5F8C\u306E\u6587\u5B57\u5217\u306E\u5F8C\u306E\u533A\u5207\u308A\u304C\u306A\u3044\uFF09","Unterminated `s` command"),[...t,...c]);let f=r.slice(p[0],p[1]);f?(c.push(this.tok(p[0],p[1],"string",a(`\u7F6E\u63DB\u5F8C\u306E\u6587\u5B57\u5217 \`${f}\``,`Replacement \`${f}\``),this.replacement(p[0],p[1],l))),c.push(h(p[1]))):c.push(this.tok(p[1],p[1]+1,"operator",a(`\`${l}\`: \u533A\u5207\u308A\u6587\u5B57\u3002\u7F6E\u63DB\u5F8C\u306E\u6587\u5B57\u5217\u304C\u7A7A\u306A\u306E\u3067\u3001\u4E00\u81F4\u3057\u305F\u90E8\u5206\u306F\u524A\u9664\u3055\u308C\u308B`,`\`${l}\`: delimiter; the replacement is empty, so matches are deleted`)));let m=!1,g;for(;this.i<r.length&&/[gpiIeMm0-9w]/.test(r[this.i]);){let v=r[this.i],R=this.i;if(v==="w"){this.i++,this.skipSpaces();let j=this.i;this.i=this.lineEnd(),c.push(this.tok(R,this.i,"option",a(`\`w\`: \u7F6E\u63DB\u304C\u8D77\u304D\u305F\u884C\u3092\u30D5\u30A1\u30A4\u30EB\u300C${r.slice(j,this.i)}\u300D\u306B\u66F8\u304D\u8FBC\u3080`,`\`w\`: write changed lines to "${r.slice(j,this.i)}"`)));break}if(/\d/.test(v)){let j=/^\d+/.exec(r.slice(this.i))[0];this.i+=j.length,g=j,c.push(this.tok(R,this.i,"option",a(`\`${j}\`: ${j} \u756A\u76EE\u306E\u4E00\u81F4\u3060\u3051\u3092\u7F6E\u63DB\u3059\u308B`,`\`${j}\`: replace only the ${j}th match`)));continue}this.i++,v==="g"&&(m=!0);let W={g:["`g`: \u884C\u306E\u4E2D\u306E\u4E00\u81F4\u3092\u3059\u3079\u3066\u7F6E\u63DB\u3059\u308B\uFF08\u4ED8\u3051\u306A\u3044\u3068\u5404\u884C\u306E\u6700\u521D\u306E1\u3064\u3060\u3051\uFF09","`g`: replace every match on the line (without it, only the first)"],p:["`p`: \u7F6E\u63DB\u304C\u8D77\u304D\u305F\u884C\u3092\u51FA\u529B\u3059\u308B\uFF08`-n` \u3068\u7D44\u307F\u5408\u308F\u305B\u3066\u5909\u66F4\u884C\u3060\u3051\u3092\u8868\u793A\uFF09","`p`: print the line if a substitution happened (use with `-n`)"],i:["`i`: \u5927\u6587\u5B57\u30FB\u5C0F\u6587\u5B57\u3092\u533A\u5225\u3057\u306A\u3044","`i`: case-insensitive"],I:["`I`: \u5927\u6587\u5B57\u30FB\u5C0F\u6587\u5B57\u3092\u533A\u5225\u3057\u306A\u3044","`I`: case-insensitive"],m:["`m`: \u8907\u6570\u884C\u30E2\u30FC\u30C9\uFF08`^` `$` \u304C\u5404\u884C\u306E\u5148\u982D\u30FB\u672B\u5C3E\u306B\u4E00\u81F4\uFF09","`m`: multi-line mode (`^`/`$` match at each line)"],M:["`M`: \u8907\u6570\u884C\u30E2\u30FC\u30C9\uFF08`^` `$` \u304C\u5404\u884C\u306E\u5148\u982D\u30FB\u672B\u5C3E\u306B\u4E00\u81F4\uFF09","`M`: multi-line mode (`^`/`$` match at each line)"],e:["`e`: \u7F6E\u63DB\u7D50\u679C\u3092\u30B3\u30DE\u30F3\u30C9\u3068\u3057\u3066\u5B9F\u884C\u3057\u3001\u305D\u306E\u51FA\u529B\u306B\u7F6E\u304D\u63DB\u3048\u308B","`e`: run the result as a command and use its output"]};c.push(this.tok(R,this.i,"option",a(W[v][0],W[v][1])))}let _=m?a("\u3059\u3079\u3066","every match"):g?a(`${g}\u756A\u76EE\u306E\u4E00\u81F4`,`the ${g}th match`):a("\u6700\u521D\u306E1\u3064","the first match"),b=f?`\`${f}\``:a("\u7A7A\u6587\u5B57","nothing"),w=a(`\u7F6E\u63DB: \`${d}\` \u306B\u4E00\u81F4\u3057\u305F\u90E8\u5206\uFF08\u5404\u884C\u306E${_}\uFF09\u3092 ${b} \u306B\u7F6E\u304D\u63DB\u3048\u308B`,`Substitute: replace ${_} of \`${d}\` on each line with ${b}`),k=n?a(`${n}\u306B\u5BFE\u3057\u3066: `,`For ${n}: `):"";return this.tok(e,this.i,"command",k+w,[...t,...c])}replacement(e,t,n){let{src:r,s:a}=this,o=[],l=-1,c=u=>{l>=0&&u>l&&o.push(this.tok(l,u,"string",a(`\u6587\u5B57\u5217\u300C${r.slice(l,u)}\u300D`,`Literal "${r.slice(l,u)}"`))),l=-1};for(let u=e;u<t;u++){let h=r[u];if(h==="&")c(u),o.push(this.tok(u,u+1,"variable",a("`&`: \u4E00\u81F4\u3057\u305F\u90E8\u5206\u5168\u4F53","`&`: the whole match")));else if(h==="\\"&&u+1<t){let d=r[u+1],p={n:["\u6539\u884C","a newline"],t:["\u30BF\u30D6","a tab"],"&":["\u6587\u5B57\u300C&\u300D\u305D\u306E\u3082\u306E",'a literal "&"'],L:["\u4EE5\u964D\u3092\u5C0F\u6587\u5B57\u306B\u3059\u308B","lowercase what follows"],U:["\u4EE5\u964D\u3092\u5927\u6587\u5B57\u306B\u3059\u308B","uppercase what follows"],l:["\u6B21\u306E1\u6587\u5B57\u3092\u5C0F\u6587\u5B57\u306B\u3059\u308B","lowercase the next character"],u:["\u6B21\u306E1\u6587\u5B57\u3092\u5927\u6587\u5B57\u306B\u3059\u308B","uppercase the next character"],E:["`\\L` / `\\U` \u3092\u7D42\u3048\u308B","end `\\L` / `\\U`"]};d===n||d==="\\"?(c(u),o.push(this.tok(u,u+2,"string",d===n?a(`\`\\${d}\`: \u6587\u5B57\u300C${d}\u300D\u305D\u306E\u3082\u306E\uFF08\u533A\u5207\u308A\u6587\u5B57\u3092\u30A8\u30B9\u30B1\u30FC\u30D7\u3057\u3066\u3044\u308B\uFF09`,`\`\\${d}\`: a literal "${d}" (the delimiter, escaped)`):a("`\\\\`: \u6587\u5B57\u300C\\\u300D\u305D\u306E\u3082\u306E","`\\\\`: a literal backslash"))),u++):/[0-9]/.test(d)?(c(u),o.push({...this.tok(u,u+2,"variable",d==="0"?a("`\\0`: \u4E00\u81F4\u3057\u305F\u90E8\u5206\u5168\u4F53","`\\0`: the whole match"):a(`\`\\${d}\`: \u30B0\u30EB\u30FC\u30D7 ${d} \u306B\u4E00\u81F4\u3057\u305F\u90E8\u5206`,`\`\\${d}\`: what group ${d} matched`)),...d!=="0"?{group:Number(d)}:{}}),u++):p[d]?(c(u),o.push(this.tok(u,u+2,/[LUluE]/.test(d)?"operator":"string",`\`\\${d}\`: ${a(p[d][0],p[d][1])}`)),u++):(l<0&&(l=u),u++)}else l<0&&(l=u)}return c(t),o.length===1&&o[0].start===e&&o[0].end===t&&o[0].kind==="string"&&!r.slice(e,t).includes("\\")?[]:o}transliterate(e,t){let{src:n,s:r}=this,a=n[this.i++],o=this.delimited(a),l=o&&this.delimited(a);if(!o||!l)return this.i=this.lineEnd(),this.tok(e,this.i,"error",r("`y` \u30B3\u30DE\u30F3\u30C9\u304C\u9589\u3058\u3089\u308C\u3066\u3044\u306A\u3044","Unterminated `y` command"),t);let c=n.slice(o[0],o[1]),u=n.slice(l[0],l[1]);return this.tok(e,this.i,"command",r(`\u6587\u5B57\u306E\u5909\u63DB: \`${c}\` \u306E\u5404\u6587\u5B57\u3092 \`${u}\` \u306E\u540C\u3058\u4F4D\u7F6E\u306E\u6587\u5B57\u306B\u7F6E\u304D\u63DB\u3048\u308B`,`Transliterate: each character of \`${c}\` becomes the one at the same position in \`${u}\``),[...t,this.tok(e,e+1,"command",r("`y`: 1\u6587\u5B57\u305A\u3064\u5909\u63DB\u3059\u308B","`y`: transliterate characters")),this.tok(o[0],o[1],"pattern",r("\u5909\u63DB\u5143\u306E\u6587\u5B57","characters to replace")),this.tok(l[0],l[1],"string",r("\u5909\u63DB\u5148\u306E\u6587\u5B57","replacement characters"))])}};function Vi(s,e,t){return new _s(s,e,t).parse()}var Ne={bash:"bash",sh:"POSIX sh",dash:"dash",ash:"busybox ash",yash:"yash",ksh:"ksh93",mksh:"mksh",zsh:"zsh"};function Gi(s,e=""){let t=s.slice(0,2e3),n=/^#\s*shellcheck\s+shell=(\w+)/m.exec(t)?.[1];if(n)return bs(n);let r=/^#!\s*(.*)/.exec(t);if(r){let o=r[1].trim().split(/\s+/),l=o[0].split("/").pop();if(l==="busybox")return"ash";if(l==="env"){let c=o.slice(1).find(u=>!u.startsWith("-")&&!u.includes("="));return c?bs(c.split("/").pop()):void 0}return bs(l)}let a=e.split(/[\\/]/).pop()??"";if(/\.zsh$|^\.?z(shrc|profile|login|logout|shenv)$/.test(a))return"zsh";if(/\.ksh$|^\.?mkshrc$/.test(a))return a.includes("mksh")?"mksh":"ksh";if(/\.bash$|^\.?bash(rc|_profile|_login|_logout|_aliases)$/.test(a))return"bash"}function bs(s){let e=s.replace(/\d+(\.\d+)*$/,"");if(e==="bash")return"bash";if(e==="sh"||e==="posh")return"sh";if(e==="dash")return"dash";if(e==="ash")return"ash";if(e==="yash")return"yash";if(e==="ksh")return"ksh";if(e==="mksh"||e==="lksh"||e==="pdksh"||e==="oksh")return"mksh";if(e==="zsh")return"zsh"}var $l={dbracket:{works:"bayk mz",ja:"`[[ ]]`",en:"`[[ ]]`",altJa:"`[ ]` \u3092\u4F7F\u3046",altEn:"use `[ ]`"},regex:{works:"b yk z",ja:"`[[ =~ ]]` \u306E\u6B63\u898F\u8868\u73FE\u30DE\u30C3\u30C1",en:"`[[ =~ ]]` regex matching",altJa:"`expr` \u3084 `grep -E` \u3092\u4F7F\u3046",altEn:"use `expr` or `grep -E`"},array:{works:"b ykmz",ja:"\u914D\u5217",en:"arrays",altJa:"\u4F4D\u7F6E\u30D1\u30E9\u30E1\u30FC\u30BF\uFF08`set -- \u2026`\uFF09\u3092\u4F7F\u3046",altEn:"use the positional parameters (`set -- \u2026`)"},assoc:{works:"b kmz",ja:"\u9023\u60F3\u914D\u5217",en:"associative arrays"},plusAssign:{works:"b kmz",ja:"`+=` \u306B\u3088\u308B\u8FFD\u52A0",en:"appending with `+=`",altJa:'`v="${v}\u2026"` \u3068\u66F8\u304F',altEn:'write `v="${v}\u2026"`'},replace:{works:"b ayk mz",ja:"`${var/pattern/string}` \u306E\u7F6E\u63DB",en:"`${var/pattern/string}` replacement",altJa:"`sed` \u306A\u3069\u3092\u4F7F\u3046",altEn:"use `sed` or similar"},replaceAnchor:{works:"b ykmz",ja:"`${var/#\u2026}` / `${var/%\u2026}` \u306E\u7F6E\u63DB",en:"`${var/#\u2026}` / `${var/%\u2026}` replacement"},caseMod:{works:"b",ja:"`${var^^}` \u306A\u3069\u306E\u5927\u6587\u5B57\u30FB\u5C0F\u6587\u5B57\u5909\u63DB",en:"`${var^^}`-style case conversion",altJa:"`tr` \u3092\u4F7F\u3046",altEn:"use `tr`"},substr:{works:"b a kmz",ja:"`${var:offset:length}` \u306E\u90E8\u5206\u6587\u5B57\u5217",en:"`${var:offset:length}` substrings",altJa:"`cut` \u3084 `expr substr` \u3092\u4F7F\u3046",altEn:"use `cut` or `expr substr`"},indirect:{works:"b",ja:"`${!var}` \u306E\u9593\u63A5\u53C2\u7167",en:"`${!var}` indirection",altJa:"`eval` \u3092\u4F7F\u3046",altEn:"use `eval`"},prefixNames:{works:"b k",ja:"`${!prefix*}` \u306E\u5909\u6570\u540D\u4E00\u89A7",en:"`${!prefix*}` name lists"},arrayKeys:{works:"b km",ja:"`${!array[@]}` \u306E\u30A4\u30F3\u30C7\u30C3\u30AF\u30B9\u4E00\u89A7",en:"`${!array[@]}` index lists"},transform:{works:"b",ja:"`${var@Q}` \u306A\u3069\u306E\u5909\u63DB",en:"`${var@Q}`-style transformations"},negIndex:{works:"b yk z",ja:"\u8CA0\u306E\u6DFB\u5B57 `${a[-1]}`",en:"negative subscripts `${a[-1]}`"},funcKeyword:{works:"b aykmz",ja:"`function` \u30AD\u30FC\u30EF\u30FC\u30C9\u306B\u3088\u308B\u95A2\u6570\u5B9A\u7FA9",en:"the `function` keyword",altJa:"`name() { \u2026 }` \u3068\u66F8\u304F",altEn:"write `name() { \u2026 }`"},herestring:{works:"b ykmz",ja:"\u30D2\u30A2\u30B9\u30C8\u30EA\u30F3\u30B0 `<<<`",en:"here-strings `<<<`",altJa:"`printf '%s\\n' \u2026 |` \u3084\u30D2\u30A2\u30C9\u30AD\u30E5\u30E1\u30F3\u30C8\u3092\u4F7F\u3046",altEn:"use `printf '%s\\n' \u2026 |` or a here-document"},ansiC:{works:"b a kmz",ja:"`$'\u2026'` \u306E\u6587\u5B57\u5217",en:"`$'\u2026'` strings",altJa:"`printf` \u3092\u4F7F\u3046",altEn:"use `printf`"},procSub:{works:"b ayk z",ja:"\u30D7\u30ED\u30BB\u30B9\u7F6E\u63DB `<(\u2026)` / `>(\u2026)`",en:"process substitution `<(\u2026)` / `>(\u2026)`",altJa:"\u4E00\u6642\u30D5\u30A1\u30A4\u30EB\u3084\u540D\u524D\u4ED8\u304D\u30D1\u30A4\u30D7\u3092\u4F7F\u3046",altEn:"use a temporary file or a named pipe"},ampRedirect:{works:"b a kmz",ja:"`&>`\uFF08\u6A19\u6E96\u51FA\u529B\u3068\u6A19\u6E96\u30A8\u30E9\u30FC\u51FA\u529B\u3092\u307E\u3068\u3081\u3066\u30EA\u30C0\u30A4\u30EC\u30AF\u30C8\uFF09",en:"`&>` (redirect stdout and stderr together)",altJa:"`>file 2>&1` \u3068\u66F8\u304F\uFF08dash \u3067\u306F `cmd &> file` \u304C\u300C\u30D0\u30C3\u30AF\u30B0\u30E9\u30A6\u30F3\u30C9\u5B9F\u884C + \u7A7A\u306E\u30EA\u30C0\u30A4\u30EC\u30AF\u30C8\u300D\u3068\u89E3\u91C8\u3055\u308C\u308B\uFF09",altEn:'write `>file 2>&1` (dash reads `cmd &> file` as "run in the background, then an empty redirection")'},ampAppend:{works:"b mz",ja:"`&>>`",en:"`&>>`",altJa:"`>>file 2>&1` \u3068\u66F8\u304F",altEn:"write `>>file 2>&1`"},pipeAmp:{works:"b z",ja:"`|&`\uFF08\u6A19\u6E96\u30A8\u30E9\u30FC\u51FA\u529B\u3082\u30D1\u30A4\u30D7\u306B\u6D41\u3059\uFF09",en:"`|&` (pipe stderr too)",altJa:"`2>&1 |` \u3068\u66F8\u304F",altEn:"write `2>&1 |`"},eqeqTest:{works:"b ayk m",ja:"`[ a == b ]` \u306E `==`",en:"`==` in `[ ]`",altJa:"`=` \u3092\u4F7F\u3046",altEn:"use `=`"},arithCommand:{works:"b kmz",ja:"\u7B97\u8853\u30B3\u30DE\u30F3\u30C9 `(( ))`",en:"the arithmetic command `(( ))`",altJa:'`[ "$((\u5F0F))" -ne 0 ]` \u3068\u66F8\u304F',altEn:'write `[ "$((expr))" -ne 0 ]`'},cFor:{works:"b k z",ja:"C \u8A00\u8A9E\u98A8\u306E `for (( ; ; ))`",en:"C-style `for (( ; ; ))`",altJa:"`while` \u3068 `$(( ))` \u3067\u66F8\u304F",altEn:"use `while` with `$(( ))`"},braceRange:{works:"b k z",ja:"\u30D6\u30EC\u30FC\u30B9\u5C55\u958B `{1..3}`",en:"brace ranges `{1..3}`",altJa:"`seq` \u3092\u4F7F\u3046",altEn:"use `seq`"},braceList:{works:"b kmz",ja:"\u30D6\u30EC\u30FC\u30B9\u5C55\u958B `{a,b}`",en:"brace expansion `{a,b}`"},caseFall:{works:"b kmz",ja:"`case` \u306E `;&`\uFF08\u6B21\u306E\u5206\u5C90\u3078\u7D9A\u3051\u308B\uFF09",en:"`;&` in `case` (fall through)"},caseCont:{works:"b m",ja:"`case` \u306E `;;&`\uFF08\u7D9A\u3051\u3066\u6B21\u306E\u30D1\u30BF\u30FC\u30F3\u3082\u8ABF\u3079\u308B\uFF09",en:"`;;&` in `case` (test the next patterns too)"},extglob:{works:"b km",ja:"\u62E1\u5F35\u30B0\u30ED\u30D6 `@(\u2026)` \u306A\u3069",en:"extended globs like `@(\u2026)`"},select:{works:"b kmz",ja:"`select` \u30EB\u30FC\u30D7",en:"`select` loops"},local:{works:"bday mz",ja:"`local`",en:"`local`"},declare:{works:"b z",ja:"`declare`",en:"`declare`"},typeset:{works:"b ykmz",ja:"`typeset`",en:"`typeset`"},readarray:{works:"b",ja:"`readarray` / `mapfile`",en:"`readarray` / `mapfile`",altJa:"`while read` \u30671\u884C\u305A\u3064\u8AAD\u3080",altEn:"read lines with `while read`"},source:{works:"b a kmz",ja:"`source`",en:"`source`",altJa:"`.` \u3092\u4F7F\u3046",altEn:"use `.`"},let:{works:"b a kmz",ja:"`let`",en:"`let`",altJa:"`$(( ))` \u3092\u4F7F\u3046",altEn:"use `$(( ))`"},shopt:{works:"b",ja:"`shopt`",en:"`shopt`"},pushd:{works:"b y z",ja:"`pushd` / `popd`",en:"`pushd` / `popd`",altJa:"`cd` \u3068\u5909\u6570\u3067\u623B\u308A\u5148\u3092\u899A\u3048\u308B",altEn:"remember the directory in a variable and `cd`"},exportF:{works:"b",ja:"`export -f`",en:"`export -f`"},waitN:{works:"b a",ja:"`wait -n`",en:"`wait -n`"},coproc:{works:"b z",ja:"`coproc`",en:"`coproc`"},print:{works:" kmz",ja:"`print`",en:"`print`",altJa:"`printf '%s\\n'` \u3092\u4F7F\u3046",altEn:"use `printf '%s\\n'`"},whence:{works:" kmz",ja:"`whence`",en:"`whence`",altJa:"`command -v` \u3092\u4F7F\u3046",altEn:"use `command -v`"},typeT:{works:"b k",ja:"`type -t`",en:"`type -t`",altJa:"`command -v` \u3092\u4F7F\u3046",altEn:"use `command -v`"},printfV:{works:"b k z",ja:"`printf -v`",en:"`printf -v`",altJa:"`v=$(printf \u2026)` \u3068\u66F8\u304F",altEn:"write `v=$(printf \u2026)`"},printfQ:{works:"b z",ja:"`printf %q`",en:"`printf %q`"},echoE:{works:"b a kmz",ja:"`echo -e`",en:"`echo -e`",altJa:"`printf` \u3092\u4F7F\u3046\uFF08dash \u306E echo \u306F `-e` \u3092\u6587\u5B57\u3068\u3057\u3066\u8868\u793A\u3057\u3001`\\t` \u306A\u3069\u306F\u5E38\u306B\u89E3\u91C8\u3059\u308B\uFF09",altEn:"use `printf` (dash prints `-e` literally and always interprets `\\t` and friends)"},echoN:{works:"bda kmz",ja:"`echo -n`",en:"`echo -n`",altJa:"`printf` \u3092\u4F7F\u3046",altEn:"use `printf`"},readA:{works:"b k",ja:"`read -a`",en:"`read -a`"},readP:{works:"bday",ja:"`read -p`\uFF08\u30D7\u30ED\u30F3\u30D7\u30C8\uFF09",en:"`read -p` (prompt)",altJa:"`printf` \u3067\u30D7\u30ED\u30F3\u30D7\u30C8\u3092\u51FA\u3057\u3066\u304B\u3089 `read` \u3059\u308B\uFF08ksh/mksh/zsh \u306E `-p` \u306F\u5225\u306E\u610F\u5473\uFF09",altEn:"print the prompt with `printf`, then `read` (`-p` means something else in ksh, mksh and zsh)"},readOpts:{works:"b a kmz",ja:"`read` \u306E `-n` / `-s` / `-t` / `-d`",en:"`read -n` / `-s` / `-t` / `-d`"},pipefail:{works:"b aykmz",ja:"`set -o pipefail`",en:"`set -o pipefail`"},trapErr:{works:"b a kmz",ja:"`trap \u2026 ERR`",en:"`trap \u2026 ERR`"},errtrace:{works:"bda z",ja:"`set -E`",en:"`set -E`"},random:{works:"b aykmz",ja:"`$RANDOM`",en:"`$RANDOM`",altJa:"`awk 'BEGIN{srand(); print int(rand()*32768)}'` \u306A\u3069\u3092\u4F7F\u3046",altEn:"use e.g. `awk 'BEGIN{srand(); print int(rand()*32768)}'`"},seconds:{works:"b kmz",ja:"`$SECONDS`",en:"`$SECONDS`"},pipestatus:{works:"b m",ja:"`$PIPESTATUS`",en:"`$PIPESTATUS`"},bashVar:{works:"b",ja:"bash \u5C02\u7528\u306E\u5909\u6570",en:"bash-only variables"},funcname:{works:"b a",ja:"`$FUNCNAME`",en:"`$FUNCNAME`"},uid:{works:"b z",ja:"`$UID` / `$EUID`",en:"`$UID` / `$EUID`",altJa:"`$(id -u)` \u3092\u4F7F\u3046",altEn:"use `$(id -u)`"},hostname:{works:"b a",ja:"`$HOSTNAME`",en:"`$HOSTNAME`",altJa:"`$(hostname)` \u3092\u4F7F\u3046",altEn:"use `$(hostname)`"}},vl={echoEscape:{differs:"dymz",ja:s=>`${s} \u306E \`echo\` \u306F\u5F15\u6570\u306E \`\\t\` \u3084 \`\\n\` \u306A\u3069\u3092\u89E3\u91C8\u3057\u307E\u3059\uFF08bash \u306F\u6587\u5B57\u306E\u307E\u307E\u8868\u793A\uFF09\u3002\u3069\u3061\u3089\u3067\u3082\u540C\u3058\u306B\u3059\u308B\u306B\u306F \`printf\` \u3092\u4F7F\u3044\u307E\u3059\u3002`,en:s=>`${s}'s \`echo\` interprets \`\\t\`, \`\\n\` and the like in its arguments (bash prints them as they are). Use \`printf\` to get the same result everywhere.`},wordSplit:{differs:"z",ja:s=>`${s} \u3067\u306F\u30AF\u30A9\u30FC\u30C8\u3057\u306A\u3044 \`$\u5909\u6570\` \u3082\u5358\u8A9E\u5206\u5272\u30FB\u30B0\u30ED\u30D6\u5C55\u958B\u3055\u308C\u307E\u305B\u3093\uFF08bash \u3067\u306F\u7A7A\u767D\u3067\u5206\u304B\u308C\u307E\u3059\uFF09\u3002`,en:s=>`In ${s} an unquoted \`$var\` is not split into words or globbed (bash splits it on spaces).`},typesetScope:{differs:"k",ja:s=>`${s} \u3067\u306F \`name() { \u2026 }\` \u306E\u5F62\u306E\u95A2\u6570\u306E\u4E2D\u306E \`typeset\` \u306F\u30ED\u30FC\u30AB\u30EB\u5909\u6570\u306B\u306A\u308A\u307E\u305B\u3093\uFF08\u30B0\u30ED\u30FC\u30D0\u30EB\u5909\u6570\u3092\u5909\u66F4\u3057\u307E\u3059\uFF09\u3002\u30ED\u30FC\u30AB\u30EB\u306B\u3059\u308B\u306B\u306F \`function name { \u2026 }\` \u306E\u5F62\u3067\u5B9A\u7FA9\u3057\u307E\u3059\u3002`,en:s=>`In ${s}, \`typeset\` inside a function written \`name() { \u2026 }\` does not make a local variable (it changes the global one); define the function as \`function name { \u2026 }\` for local scope.`},arrayBase:{differs:"yz",ja:s=>`${s} \u306E\u914D\u5217\u306E\u6DFB\u5B57\u306F 1 \u304B\u3089\u59CB\u307E\u308A\u307E\u3059\uFF08bash \u306F 0 \u304B\u3089\uFF09\u3002\u3053\u306E\u89E3\u8AAC\u306F bash \u306E\u6570\u3048\u65B9\u3067\u3059\u3002`,en:s=>`Array subscripts start at 1 in ${s} (bash starts at 0); this explanation counts the bash way.`}};function Yi(s,e,t,n){let r=a=>{a.startPosition.row>t||a.endPosition.row<e||(a.startPosition.row>=e&&n(a),a.children.forEach(r))};r(s)}function El(s,e,t){let n=[];return Yi(s,e,t,r=>{let a=o=>n.push({id:o,node:r});if(r.type==="command"&&r.childForFieldName("name")?.text==="echo"&&r.namedChildren.slice(1).some(o=>/\\[abcefnrtv\\0]/.test(o.type==="raw_string"?o.text:o.type==="string"?o.text.replace(/\\\\/g,"\\"):""))&&a("echoEscape"),r.type==="simple_expansion"&&(r.parent?.type==="command"||r.parent?.type==="concatenation"&&r.parent.parent?.type==="command")&&a("wordSplit"),r.type==="declaration_command"&&r.child(0)?.text==="typeset"){let o=r.parent;for(;o&&o.type!=="function_definition";)o=o.parent;o&&o.child(0)?.type!=="function"&&a("typesetScope")}if(r.type==="expansion"){let o=vt(r.text.trimStart());o?.subscript&&/^\d+$/.test(o.subscript)&&a("arrayBase")}}),n}var xs={bash:"b",dash:"d",ash:"a",yash:"y",ksh:"k",mksh:"m",zsh:"z"};function Ji(s,e){return s.works.includes(xs[e])}function Sl(s,e,t){let n=[];return Yi(s,e,t,r=>Nl(r,r.children.map(a=>a.type),a=>n.push({id:a,node:r}))),n}function Nl(s,e,t){switch(s.type){case"test_command":{let n=s.child(0)?.type;n==="[["?(t("dbracket"),s.descendantsOfType("=~").length&&t("regex")):n==="(("?t("arithCommand"):n==="["&&s.descendantsOfType("==").length&&t("eqeqTest");return}case"command":{let n=s.childForFieldName("name");if(n?.text.startsWith("((")){t("arithCommand");return}let r=s.namedChildren.filter(a=>a.id!==n?.id).map(a=>a.text);Hi(n?.text??"",r,t);return}case"declaration_command":{let n=s.children.slice(1).map(r=>r.text);Hi(s.child(0)?.text??"",n,t);return}case"brace_expression":t("braceRange");return;case"c_style_for_statement":t("cFor");return;case"select_statement":t("select");return;case"function_definition":e[0]==="function"&&t("funcKeyword");return;case"herestring_redirect":t("herestring");return;case"ansi_c_string":t("ansiC");return;case"process_substitution":t("procSub");return;case"file_redirect":e.includes("&>")&&t("ampRedirect"),e.includes("&>>")&&t("ampAppend");return;case"pipeline":e.includes("|&")&&t("pipeAmp");return;case"case_item":e.includes(";&")&&t("caseFall"),e.includes(";;&")&&t("caseCont");return;case"extglob_pattern":/[@!?*+]\(/.test(s.text)&&t("extglob");return;case"variable_assignment":{s.childForFieldName("value")?.type==="array"&&t("array"),e.includes("+=")&&t("plusAssign");return}case"expansion":{let n=vt(s.text.trimStart());if(!n)return;n.subscript!==void 0&&t(/^-\d/.test(n.subscript)?"negIndex":"array"),n.prefix==="!"&&t(n.op==="*"||n.op==="@"?"prefixNames":n.subscript==="@"||n.subscript==="*"?"arrayKeys":"indirect"),(n.op==="/"||n.op==="//")&&t("replace"),(n.op==="/#"||n.op==="/%")&&t("replaceAnchor"),n.op&&/^[\^,]{1,2}$/.test(n.op)&&t("caseMod"),n.op===":"&&t("substr"),n.op==="@"&&t("transform"),Bi(n.name,t);return}case"simple_expansion":Bi(s.text.slice(1),t);return;case"word":case"concatenation":{if(s.parent?.type==="string"||s.parent?.type==="concatenation")return;let n=s.type==="word"?s.text:s.children.filter(r=>r.type==="word"||r.type==="{"||r.type==="}"||r.type===",").map(r=>r.text).join("");/\{-?\w+\.\.-?\w+(\.\.-?\d+)?\}/.test(n)?t("braceRange"):/\{[^{}\s'"]*,[^{}\s'"]*\}/.test(n)&&t("braceList"),/[@!?+]\([^)]*\)/.test(n)&&t("extglob");return}}}function Bi(s,e){s==="RANDOM"?e("random"):s==="SECONDS"?e("seconds"):s==="PIPESTATUS"?e("pipestatus"):s==="FUNCNAME"?e("funcname"):s==="UID"||s==="EUID"?e("uid"):s==="HOSTNAME"?e("hostname"):/^BASH_|^BASHPID$|^BASHOPTS$|^EPOCH(SECONDS|REALTIME)$/.test(s)&&e("bashVar")}function Hi(s,e,t){let n=e.filter(r=>/^-[a-zA-Z]+$/.test(r)).join("").replace(/-/g,"");switch(s){case"declare":t(e.some(r=>/^-\w*A/.test(r))?"assoc":"declare");break;case"typeset":t(e.some(r=>/^-\w*A/.test(r))?"assoc":"typeset");break;case"local":t("local");break;case"readarray":case"mapfile":t("readarray");break;case"source":t("source");break;case"let":t("let");break;case"shopt":t("shopt");break;case"pushd":case"popd":case"dirs":t("pushd");break;case"coproc":t("coproc");break;case"print":t("print");break;case"whence":t("whence");break;case"export":/f/.test(n)&&t("exportF");break;case"wait":/n/.test(n)&&t("waitN");break;case"type":/t/.test(n)&&t("typeT");break;case"printf":e[0]==="-v"&&t("printfV"),e.some(r=>/%q/.test(r))&&t("printfQ");break;case"echo":{let r=e.filter((a,o)=>/^-[neE]+$/.test(a)&&e.slice(0,o).every(l=>/^-[neE]+$/.test(l))).join("");/e/.test(r)&&t("echoE"),/n/.test(r)&&t("echoN");break}case"read":/a/.test(n)&&t("readA"),/p/.test(n)&&t("readP"),/[nstd]/.test(n)&&t("readOpts");break;case"set":e.some((r,a)=>r==="pipefail"&&/^-\w*o$/.test(e[a-1]??""))&&t("pipefail"),(/E/.test(n)||e.some((r,a)=>r==="errtrace"&&/^-\w*o$/.test(e[a-1]??"")))&&t("errtrace");break;case"trap":e.slice(1).some(r=>r==="ERR")&&t("trapErr");break}}function Tl(s,e,t){let n=A(t),r=$l[s],a=n(r.ja,r.en),o=r.altJa?n(`\u4EE3\u308F\u308A\u306B ${r.altJa}\u3002`,` Instead, ${r.altEn}.`):"";if(e==="sh"){if(r.posix)return;let l=["dash","ash"].filter(c=>!Ji(r,c)).map(c=>Ne[c]);return n(`\u26A0 ${a}\u306F POSIX sh \u306B\u306A\u3044\u66F8\u304D\u65B9\u3067\u3059${l.length?`\uFF08${l.join("\u30FB")} \u3067\u306F\u52D5\u304D\u307E\u305B\u3093\uFF09`:"\uFF08dash\u30FBbusybox ash \u3067\u306F\u52D5\u304D\u307E\u3059\u304C\u3001POSIX \u306B\u306F\u3042\u308A\u307E\u305B\u3093\uFF09"}\u3002${o}`,`\u26A0 ${a} is not POSIX sh${l.length?` (it fails in ${l.join(" and ")})`:" (dash and busybox ash accept it, but POSIX does not have it)"}.${o}`)}if(!(e==="bash"||Ji(r,e)))return n(`\u26A0 ${a}\u306F ${Ne[e]} \u3067\u306F\u4F7F\u3048\u307E\u305B\u3093\u3002${o}`,`\u26A0 ${a} is not available in ${Ne[e]}.${o}`)}function Ml(s,e,t){let n=A(t),r=vl[s],a=e==="sh"?["dash","ash"].filter(o=>r.differs.includes(xs[o])):e!=="bash"&&r.differs.includes(xs[e])?[e]:[];return a.length?"\u2139 "+n(r.ja(a.map(o=>Ne[o]).join("\u30FB")),r.en(a.map(o=>Ne[o]).join(" and "))):void 0}function ws(s,e,t,n=[]){return!s.hasError||s.startPosition.row>t||s.endPosition.row<e||((s.type==="ERROR"||s.isMissing)&&s.startPosition.row>=e&&!n.some(r=>r.startPosition.row===s.startPosition.row)&&n.push(s),s.children.forEach(r=>ws(r,e,t,n))),n}var Zi=["\u3053\u306E\u884C\u306B\u306F\u89E3\u6790\u3067\u304D\u306A\u3044\u90E8\u5206\u304C\u3042\u308A\u307E\u3059\u3002zsh \u72EC\u81EA\u306E\u66F8\u304D\u65B9\uFF08\u30B0\u30ED\u30D6\u4FEE\u98FE\u5B50 `*(.)`\u3001\u30D1\u30E9\u30E1\u30FC\u30BF\u30D5\u30E9\u30B0 `${(f)var}` \u306A\u3069\uFF09\u306F\u89E3\u8AAC\u3067\u304D\u307E\u305B\u3093\u3002","Part of this line could not be parsed. zsh-only syntax (glob qualifiers like `*(.)`, parameter flags like `${(f)var}`\u2026) is not explained."];function Rt(s,e,t,n=0,r=s.endPosition.row){if(e==="bash")return[];let a=[];if(e==="zsh")for(let o of ws(s,n,r))a.push({id:"zshSyntax",kind:"parse",node:o,message:Zi[t==="ja"?0:1]});for(let o of El(s,n,r)){let l=Ml(o.id,e,t);l&&a.push({id:o.id,kind:"behaviour",message:l,node:o.node})}for(let o of Sl(s,n,r)){let l=Tl(o.id,e,t);l&&a.push({id:o.id,kind:"unsupported",message:l,node:o.node})}return a}function Xi(s,e,t,n){let r=Rt(s,t,n,e,e).filter(o=>o.kind!=="parse"),a=t==="zsh"&&ws(s,0,s.endPosition.row).some(o=>o.startPosition.row<=e&&o.endPosition.row>=e)?[Zi[n==="ja"?0:1]]:[];return[...new Set([...a,...r.map(o=>o.message)])]}var Ki={">":(s,e)=>x(`${ne(s,"1").ja}\u3092\u30D5\u30A1\u30A4\u30EB \`${e}\` \u306B\u66F8\u304D\u8FBC\u3080\uFF08\u65E2\u5B58\u306E\u5185\u5BB9\u306F\u4E0A\u66F8\u304D\uFF09`,`Write ${ne(s,"1").en} to file \`${e}\` (overwrite)`),">>":(s,e)=>x(`${ne(s,"1").ja}\u3092\u30D5\u30A1\u30A4\u30EB \`${e}\` \u306E\u672B\u5C3E\u306B\u8FFD\u8A18\u3059\u308B`,`Append ${ne(s,"1").en} to the end of file \`${e}\``),"<":(s,e)=>x(`\u30D5\u30A1\u30A4\u30EB \`${e}\` \u306E\u5185\u5BB9\u3092${ne(s,"0").ja}\u3068\u3057\u3066\u8AAD\u307F\u8FBC\u3080`,`Read file \`${e}\` as ${ne(s,"0").en}`),">|":(s,e)=>x(`${ne(s,"1").ja}\u3092\u30D5\u30A1\u30A4\u30EB \`${e}\` \u306B\u66F8\u304D\u8FBC\u3080\uFF08\`set -o noclobber\` \u3067\u3082\u5F37\u5236\u7684\u306B\u4E0A\u66F8\u304D\uFF09`,`Write ${ne(s,"1").en} to \`${e}\`, overwriting even with \`noclobber\` set`),"<>":(s,e)=>x(`\u30D5\u30A1\u30A4\u30EB \`${e}\` \u3092\u8AAD\u307F\u66F8\u304D\u4E21\u7528\u3067${ne(s,"0").ja}\u3068\u3057\u3066\u958B\u304F`,`Open \`${e}\` for reading and writing as ${ne(s,"0").en}`),"&>":(s,e)=>x(`\u6A19\u6E96\u51FA\u529B\u3068\u6A19\u6E96\u30A8\u30E9\u30FC\u51FA\u529B\u306E\u4E21\u65B9\u3092\u30D5\u30A1\u30A4\u30EB \`${e}\` \u306B\u66F8\u304D\u8FBC\u3080\uFF08\u4E0A\u66F8\u304D\uFF09`,`Write both stdout and stderr to \`${e}\` (overwrite)`),"&>>":(s,e)=>x(`\u6A19\u6E96\u51FA\u529B\u3068\u6A19\u6E96\u30A8\u30E9\u30FC\u51FA\u529B\u306E\u4E21\u65B9\u3092\u30D5\u30A1\u30A4\u30EB \`${e}\` \u306B\u8FFD\u8A18\u3059\u308B`,`Append both stdout and stderr to \`${e}\``),">&":(s,e)=>Rl(s,e),"<&":(s,e)=>e==="-"?x(`${ne(s,"0").ja}\u3092\u9589\u3058\u308B`,`Close ${ne(s,"0").en}`):x(`${ne(s,"0").ja}\u3092 ${ne(e,e).ja} \u306E\u8907\u88FD\u306B\u3059\u308B\uFF08\u5165\u529B\u5143\u3092\u5171\u6709\uFF09`,`Make ${ne(s,"0").en} a copy of ${ne(e,e).en}`)};function Rl(s,e){return e==="-"?x(`${ne(s,"1").ja}\u3092\u9589\u3058\u308B`,`Close ${ne(s,"1").en}`):/^\d+$/.test(e)?x(`${ne(s,"1").ja}\u3092 ${ne(e,e).ja} \u3068\u540C\u3058\u51FA\u529B\u5148\u306B\u5411\u3051\u308B`,`Send ${ne(s,"1").en} to the same place as ${ne(e,e).en}`):x(`\u6A19\u6E96\u51FA\u529B\u3068\u6A19\u6E96\u30A8\u30E9\u30FC\u51FA\u529B\u306E\u4E21\u65B9\u3092\u30D5\u30A1\u30A4\u30EB \`${e}\` \u306B\u66F8\u304D\u8FBC\u3080`,`Write both stdout and stderr to \`${e}\``)}function ne(s,e){let t=s||e;return t==="0"?x("\u6A19\u6E96\u5165\u529B(fd 0)","stdin (fd 0)"):t==="1"?x("\u6A19\u6E96\u51FA\u529B(fd 1)","stdout (fd 1)"):t==="2"?x("\u6A19\u6E96\u30A8\u30E9\u30FC\u51FA\u529B(fd 2)","stderr (fd 2)"):x(`\u30D5\u30A1\u30A4\u30EB\u30C7\u30A3\u30B9\u30AF\u30EA\u30D7\u30BF ${t}`,`file descriptor ${t}`)}var Qi={"/dev/null":x("`/dev/null` \u306F\u66F8\u304D\u8FBC\u3093\u3060\u5185\u5BB9\u3092\u6368\u3066\u308B\u7279\u6B8A\u30D5\u30A1\u30A4\u30EB\uFF08\u51FA\u529B\u3092\u6368\u3066\u308B\u5B9A\u756A\uFF09","`/dev/null` discards everything written to it"),"/dev/stderr":x("`/dev/stderr` \u306F\u6A19\u6E96\u30A8\u30E9\u30FC\u51FA\u529B\u3092\u6307\u3059","`/dev/stderr` refers to standard error"),"/dev/stdout":x("`/dev/stdout` \u306F\u6A19\u6E96\u51FA\u529B\u3092\u6307\u3059","`/dev/stdout` refers to standard output")},ys={":-":(s,e)=>x(`\`${s}\` \u304C\u672A\u8A2D\u5B9A\u307E\u305F\u306F\u7A7A\u306A\u3089 \`${e}\` \u3092\u4F7F\u3046\uFF08\u5909\u6570\u81EA\u4F53\u306F\u5909\u66F4\u3057\u306A\u3044\uFF09`,`Use \`${e}\` if \`${s}\` is unset or empty (does not assign)`),"-":(s,e)=>x(`\`${s}\` \u304C\u672A\u8A2D\u5B9A\u306A\u3089 \`${e}\` \u3092\u4F7F\u3046\uFF08\u7A7A\u6587\u5B57\u306F\u305D\u306E\u307E\u307E\uFF09`,`Use \`${e}\` if \`${s}\` is unset (empty is kept)`),":=":(s,e)=>x(`\`${s}\` \u304C\u672A\u8A2D\u5B9A\u307E\u305F\u306F\u7A7A\u306A\u3089 \`${e}\` \u3092\u4EE3\u5165\u3057\u3066\u305D\u306E\u5024\u3092\u4F7F\u3046`,`If \`${s}\` is unset or empty, assign \`${e}\` to it and use that`),"=":(s,e)=>x(`\`${s}\` \u304C\u672A\u8A2D\u5B9A\u306A\u3089 \`${e}\` \u3092\u4EE3\u5165\u3057\u3066\u305D\u306E\u5024\u3092\u4F7F\u3046`,`If \`${s}\` is unset, assign \`${e}\` to it`),":+":(s,e)=>x(`\`${s}\` \u304C\u8A2D\u5B9A\u6E08\u307F\u304B\u3064\u7A7A\u3067\u306A\u3051\u308C\u3070 \`${e}\` \u3092\u4F7F\u3044\u3001\u305D\u3046\u3067\u306A\u3051\u308C\u3070\u7A7A`,`Use \`${e}\` if \`${s}\` is set and non-empty, otherwise nothing`),"+":(s,e)=>x(`\`${s}\` \u304C\u8A2D\u5B9A\u6E08\u307F\u306A\u3089 \`${e}\` \u3092\u4F7F\u3044\u3001\u672A\u8A2D\u5B9A\u306A\u3089\u7A7A`,`Use \`${e}\` if \`${s}\` is set, otherwise nothing`),":?":(s,e)=>x(`\`${s}\` \u304C\u672A\u8A2D\u5B9A\u307E\u305F\u306F\u7A7A\u306A\u3089\u30A8\u30E9\u30FC\u30E1\u30C3\u30BB\u30FC\u30B8\u300C${e||"parameter null or not set"}\u300D\u3092\u51FA\u3057\u3066\u30B9\u30AF\u30EA\u30D7\u30C8\u3092\u7D42\u4E86`,`Exit with error "${e||"parameter null or not set"}" if \`${s}\` is unset or empty`),"?":(s,e)=>x(`\`${s}\` \u304C\u672A\u8A2D\u5B9A\u306A\u3089\u30A8\u30E9\u30FC\u30E1\u30C3\u30BB\u30FC\u30B8\u300C${e||"parameter not set"}\u300D\u3092\u51FA\u3057\u3066\u7D42\u4E86`,`Exit with error "${e||"parameter not set"}" if \`${s}\` is unset`),"#":(s,e)=>x(`\`${s}\` \u306E\u5148\u982D\u304B\u3089\u30D1\u30BF\u30FC\u30F3 \`${e}\` \u306B\u4E00\u81F4\u3059\u308B\u6700\u77ED\u90E8\u5206\u3092\u524A\u9664`,`Remove the shortest prefix of \`${s}\` matching \`${e}\``),"##":(s,e)=>x(`\`${s}\` \u306E\u5148\u982D\u304B\u3089\u30D1\u30BF\u30FC\u30F3 \`${e}\` \u306B\u4E00\u81F4\u3059\u308B\u6700\u9577\u90E8\u5206\u3092\u524A\u9664`,`Remove the longest prefix of \`${s}\` matching \`${e}\``),"%":(s,e)=>x(`\`${s}\` \u306E\u672B\u5C3E\u304B\u3089\u30D1\u30BF\u30FC\u30F3 \`${e}\` \u306B\u4E00\u81F4\u3059\u308B\u6700\u77ED\u90E8\u5206\u3092\u524A\u9664\uFF08\u62E1\u5F35\u5B50\u9664\u53BB\u306A\u3069\u306B\u4F7F\u3046\uFF09`,`Remove the shortest suffix of \`${s}\` matching \`${e}\` (e.g. strip an extension)`),"%%":(s,e)=>x(`\`${s}\` \u306E\u672B\u5C3E\u304B\u3089\u30D1\u30BF\u30FC\u30F3 \`${e}\` \u306B\u4E00\u81F4\u3059\u308B\u6700\u9577\u90E8\u5206\u3092\u524A\u9664`,`Remove the longest suffix of \`${s}\` matching \`${e}\``),"/":(s,e)=>xe(e)===""?x(`\`${s}\` \u5185\u3067\u6700\u521D\u306B \`${le(e)}\` \u306B\u4E00\u81F4\u3057\u305F\u90E8\u5206\u3092\u524A\u9664`,`Delete the first match of \`${le(e)}\` in \`${s}\``):x(`\`${s}\` \u5185\u3067\u6700\u521D\u306B \`${le(e)}\` \u306B\u4E00\u81F4\u3057\u305F\u90E8\u5206\u3092 \`${xe(e)}\` \u306B\u7F6E\u63DB`,`Replace the first match of \`${le(e)}\` in \`${s}\` with \`${xe(e)}\``),"//":(s,e)=>xe(e)===""?x(`\`${s}\` \u5185\u3067 \`${le(e)}\` \u306B\u4E00\u81F4\u3059\u308B\u90E8\u5206\u3092\u3059\u3079\u3066\u524A\u9664`,`Delete every match of \`${le(e)}\` in \`${s}\``):x(`\`${s}\` \u5185\u3067 \`${le(e)}\` \u306B\u4E00\u81F4\u3059\u308B\u90E8\u5206\u3092\u3059\u3079\u3066 \`${xe(e)}\` \u306B\u7F6E\u63DB`,`Replace every match of \`${le(e)}\` in \`${s}\` with \`${xe(e)}\``),"/#":(s,e)=>xe(e)===""?x(`\`${s}\` \u306E\u5148\u982D\u304C \`${le(e)}\` \u306B\u4E00\u81F4\u3059\u308C\u3070\u524A\u9664`,`Delete \`${le(e)}\` at the start of \`${s}\``):x(`\`${s}\` \u306E\u5148\u982D\u304C \`${le(e)}\` \u306B\u4E00\u81F4\u3059\u308C\u3070 \`${xe(e)}\` \u306B\u7F6E\u63DB`,`Replace \`${le(e)}\` at the start of \`${s}\` with \`${xe(e)}\``),"/%":(s,e)=>xe(e)===""?x(`\`${s}\` \u306E\u672B\u5C3E\u304C \`${le(e)}\` \u306B\u4E00\u81F4\u3059\u308C\u3070\u524A\u9664`,`Delete \`${le(e)}\` at the end of \`${s}\``):x(`\`${s}\` \u306E\u672B\u5C3E\u304C \`${le(e)}\` \u306B\u4E00\u81F4\u3059\u308C\u3070 \`${xe(e)}\` \u306B\u7F6E\u63DB`,`Replace \`${le(e)}\` at the end of \`${s}\` with \`${xe(e)}\``),"^":s=>x(`\`${s}\` \u306E\u5148\u982D\u6587\u5B57\u3092\u5927\u6587\u5B57\u306B\u3059\u308B`,`Uppercase the first character of \`${s}\``),"^^":s=>x(`\`${s}\` \u3092\u5168\u3066\u5927\u6587\u5B57\u306B\u3059\u308B`,`Uppercase all of \`${s}\``),",":s=>x(`\`${s}\` \u306E\u5148\u982D\u6587\u5B57\u3092\u5C0F\u6587\u5B57\u306B\u3059\u308B`,`Lowercase the first character of \`${s}\``),",,":s=>x(`\`${s}\` \u3092\u5168\u3066\u5C0F\u6587\u5B57\u306B\u3059\u308B`,`Lowercase all of \`${s}\``),":":(s,e)=>x(`\`${s}\` \u306E\u90E8\u5206\u6587\u5B57\u5217\uFF08\u30AA\u30D5\u30BB\u30C3\u30C8:\u9577\u3055 = \`${e}\`\uFF09\u3092\u53D6\u308A\u51FA\u3059`,`Substring of \`${s}\` (offset:length = \`${e}\`)`),"@":(s,e)=>x(`\`${s}\` \u306B\u5909\u63DB \`@${e}\` \u3092\u9069\u7528\uFF08Q:\u30AF\u30A9\u30FC\u30C8, E:\u30A8\u30B9\u30B1\u30FC\u30D7\u5C55\u958B, U/L:\u5927\u5C0F\u6587\u5B57, a:\u5C5E\u6027 \u306A\u3069\uFF09`,`Apply transformation \`@${e}\` to \`${s}\` (Q quote, E escapes, U/L case, a attributes\u2026)`)};function le(s){let e=s.indexOf("/");return e<0?s:s.slice(0,e)}function xe(s){let e=s.indexOf("/");return e<0?"":s.slice(e+1)}var ks={"?":x("\u76F4\u524D\u306B\u5B9F\u884C\u3057\u305F\u30B3\u30DE\u30F3\u30C9\u306E\u7D42\u4E86\u30B9\u30C6\u30FC\u30BF\u30B9\uFF080 \u306F\u6210\u529F\uFF09","Exit status of the last command (0 = success)"),"@":x('\u5168\u3066\u306E\u4F4D\u7F6E\u30D1\u30E9\u30E1\u30FC\u30BF\u3002`"$@"` \u3068\u3059\u308B\u3068\u5404\u5F15\u6570\u3092\u5225\u3005\u306E\u5358\u8A9E\u3068\u3057\u3066\u5C55\u958B','All positional parameters; `"$@"` expands each one as a separate word'),"*":x('\u5168\u3066\u306E\u4F4D\u7F6E\u30D1\u30E9\u30E1\u30FC\u30BF\u3002`"$*"` \u306F IFS \u306E\u5148\u982D\u6587\u5B57\u3067\u9023\u7D50\u3057\u305F1\u3064\u306E\u6587\u5B57\u5217\u306B\u306A\u308B','All positional parameters; `"$*"` joins them into one string with the first IFS char'),"#":x("\u4F4D\u7F6E\u30D1\u30E9\u30E1\u30FC\u30BF\uFF08\u5F15\u6570\uFF09\u306E\u500B\u6570","Number of positional parameters"),$:x("\u73FE\u5728\u306E\u30B7\u30A7\u30EB\u306E\u30D7\u30ED\u30BB\u30B9ID","Process ID of the current shell"),"!":x("\u6700\u5F8C\u306B\u30D0\u30C3\u30AF\u30B0\u30E9\u30A6\u30F3\u30C9\u5B9F\u884C\u3057\u305F\u30D7\u30ED\u30BB\u30B9\u306EID","PID of the most recent background job"),0:x("\u30B9\u30AF\u30EA\u30D7\u30C8\u540D\uFF08\u307E\u305F\u306F\u30B7\u30A7\u30EB\u540D\uFF09","Name of the script or shell"),"-":x("\u73FE\u5728\u6709\u52B9\u306A\u30B7\u30A7\u30EB\u30AA\u30D7\u30B7\u30E7\u30F3\u306E\u30D5\u30E9\u30B0","Current shell option flags"),_:x("\u76F4\u524D\u306E\u30B3\u30DE\u30F3\u30C9\u306E\u6700\u5F8C\u306E\u5F15\u6570","Last argument of the previous command")},$s={HOME:x("\u30DB\u30FC\u30E0\u30C7\u30A3\u30EC\u30AF\u30C8\u30EA\u306E\u30D1\u30B9","Home directory"),PATH:x("\u30B3\u30DE\u30F3\u30C9\u3092\u63A2\u3059\u30C7\u30A3\u30EC\u30AF\u30C8\u30EA\u306E\u4E00\u89A7\uFF08`:` \u533A\u5207\u308A\uFF09","Colon-separated list of directories searched for commands"),PWD:x("\u30AB\u30EC\u30F3\u30C8\u30C7\u30A3\u30EC\u30AF\u30C8\u30EA","Current working directory"),OLDPWD:x("\u76F4\u524D\u306E\u30AB\u30EC\u30F3\u30C8\u30C7\u30A3\u30EC\u30AF\u30C8\u30EA","Previous working directory"),IFS:x("\u5358\u8A9E\u5206\u5272\u306B\u4F7F\u3046\u533A\u5207\u308A\u6587\u5B57\uFF08\u65E2\u5B9A\u306F\u7A7A\u767D\u30FB\u30BF\u30D6\u30FB\u6539\u884C\uFF09","Field separator used for word splitting"),USER:x("\u30ED\u30B0\u30A4\u30F3\u30E6\u30FC\u30B6\u30FC\u540D","Current user name"),SHELL:x("\u30ED\u30B0\u30A4\u30F3\u30B7\u30A7\u30EB\u306E\u30D1\u30B9","Path of the login shell"),RANDOM:x("\u53C2\u7167\u3059\u308B\u305F\u3073\u306B 0\u301C32767 \u306E\u4E71\u6570\u3092\u8FD4\u3059","A random integer 0\u201332767 on each reference"),LINENO:x("\u73FE\u5728\u306E\u884C\u756A\u53F7","Current line number"),SECONDS:x("\u30B7\u30A7\u30EB\u8D77\u52D5\u304B\u3089\u306E\u7D4C\u904E\u79D2\u6570","Seconds since the shell started"),BASH_SOURCE:x("\u30BD\u30FC\u30B9\u30D5\u30A1\u30A4\u30EB\u540D\u306E\u914D\u5217\uFF08`${BASH_SOURCE[0]}` \u306F\u73FE\u5728\u306E\u30B9\u30AF\u30EA\u30D7\u30C8\uFF09","Array of source file names; `${BASH_SOURCE[0]}` is the current script"),FUNCNAME:x("\u5B9F\u884C\u4E2D\u306E\u95A2\u6570\u540D\u306E\u914D\u5217","Array of function names on the call stack"),PIPESTATUS:x("\u76F4\u524D\u306E\u30D1\u30A4\u30D7\u30E9\u30A4\u30F3\u5404\u30B3\u30DE\u30F3\u30C9\u306E\u7D42\u4E86\u30B9\u30C6\u30FC\u30BF\u30B9\u306E\u914D\u5217","Exit statuses of each command in the last pipeline"),REPLY:x("`read` \u306B\u5909\u6570\u540D\u3092\u6E21\u3055\u306A\u304B\u3063\u305F\u3068\u304D\u306E\u683C\u7D0D\u5148","Default variable set by `read`"),OPTARG:x("`getopts` \u304C\u51E6\u7406\u4E2D\u306E\u30AA\u30D7\u30B7\u30E7\u30F3\u306E\u5F15\u6570","Argument of the option being processed by `getopts`"),OPTIND:x("`getopts` \u304C\u6B21\u306B\u51E6\u7406\u3059\u308B\u5F15\u6570\u306E\u4F4D\u7F6E","Index of the next argument for `getopts`"),HOSTNAME:x("\u30DB\u30B9\u30C8\u540D","Host name"),UID:x("\u5B9F\u30E6\u30FC\u30B6\u30FCID","Real user ID"),EUID:x("\u5B9F\u52B9\u30E6\u30FC\u30B6\u30FCID\uFF080 \u306A\u3089 root\uFF09","Effective user ID (0 = root)"),TMPDIR:x("\u4E00\u6642\u30D5\u30A1\u30A4\u30EB\u7528\u30C7\u30A3\u30EC\u30AF\u30C8\u30EA","Directory for temporary files"),LANG:x("\u30ED\u30B1\u30FC\u30EB\u8A2D\u5B9A","Locale setting"),EDITOR:x("\u65E2\u5B9A\u306E\u30C6\u30AD\u30B9\u30C8\u30A8\u30C7\u30A3\u30BF","Default text editor")},vs={"-e":x("\u5B58\u5728\u3059\u308B\uFF08\u7A2E\u985E\u306F\u554F\u308F\u306A\u3044\uFF09","exists"),"-f":x("\u901A\u5E38\u30D5\u30A1\u30A4\u30EB\u3068\u3057\u3066\u5B58\u5728\u3059\u308B","is an existing regular file"),"-d":x("\u30C7\u30A3\u30EC\u30AF\u30C8\u30EA\u3068\u3057\u3066\u5B58\u5728\u3059\u308B","is an existing directory"),"-L":x("\u30B7\u30F3\u30DC\u30EA\u30C3\u30AF\u30EA\u30F3\u30AF\u3067\u3042\u308B","is a symbolic link"),"-h":x("\u30B7\u30F3\u30DC\u30EA\u30C3\u30AF\u30EA\u30F3\u30AF\u3067\u3042\u308B","is a symbolic link"),"-r":x("\u8AAD\u307F\u53D6\u308A\u53EF\u80FD\u3067\u3042\u308B","is readable"),"-w":x("\u66F8\u304D\u8FBC\u307F\u53EF\u80FD\u3067\u3042\u308B","is writable"),"-x":x("\u5B9F\u884C\u53EF\u80FD\u3067\u3042\u308B","is executable"),"-s":x("\u7A7A\u3067\u306A\u3044\u30D5\u30A1\u30A4\u30EB\u3067\u3042\u308B\uFF08\u30B5\u30A4\u30BA > 0\uFF09","is a non-empty file"),"-p":x("\u540D\u524D\u4ED8\u304D\u30D1\u30A4\u30D7(FIFO)\u3067\u3042\u308B","is a named pipe"),"-S":x("\u30BD\u30B1\u30C3\u30C8\u3067\u3042\u308B","is a socket"),"-b":x("\u30D6\u30ED\u30C3\u30AF\u30C7\u30D0\u30A4\u30B9\u3067\u3042\u308B","is a block device"),"-c":x("\u30AD\u30E3\u30E9\u30AF\u30BF\u30C7\u30D0\u30A4\u30B9\u3067\u3042\u308B","is a character device"),"-t":x("\u7AEF\u672B\u306B\u63A5\u7D9A\u3055\u308C\u305F\u30D5\u30A1\u30A4\u30EB\u30C7\u30A3\u30B9\u30AF\u30EA\u30D7\u30BF\u3067\u3042\u308B","is a file descriptor open on a terminal"),"-z":x("\u7A7A\u6587\u5B57\u5217\u3067\u3042\u308B\uFF08\u9577\u3055 0\uFF09","is an empty string"),"-n":x("\u7A7A\u6587\u5B57\u5217\u3067\u306A\u3044\uFF08\u9577\u3055 1 \u4EE5\u4E0A\uFF09","is a non-empty string"),"-v":x("\u8A2D\u5B9A\u6E08\u307F\u306E\u5909\u6570\u540D\u3067\u3042\u308B","is the name of a set variable"),"-o":x("\u6709\u52B9\u306B\u306A\u3063\u3066\u3044\u308B\u30B7\u30A7\u30EB\u30AA\u30D7\u30B7\u30E7\u30F3\u540D\u3067\u3042\u308B","is an enabled shell option")},ut={"=":x("\u6587\u5B57\u5217\u304C\u7B49\u3057\u3044","strings are equal"),"==":x("\u6587\u5B57\u5217\u304C\u7B49\u3057\u3044\uFF08`[[ ]]` \u3067\u306F\u53F3\u8FBA\u306F\u30B0\u30ED\u30D6\u30D1\u30BF\u30FC\u30F3\uFF09","strings are equal (right side is a glob pattern in `[[ ]]`)"),"!=":x("\u6587\u5B57\u5217\u304C\u7B49\u3057\u304F\u306A\u3044","strings differ"),"=~":x("\u5DE6\u8FBA\u304C\u53F3\u8FBA\u306E\u6B63\u898F\u8868\u73FE(ERE)\u306B\u4E00\u81F4\u3059\u308B\u3002\u4E00\u81F4\u7D50\u679C\u306F `BASH_REMATCH` \u306B\u5165\u308B","left side matches the regex (ERE) on the right; captures go to `BASH_REMATCH`"),"<":x("\u8F9E\u66F8\u9806\u3067\u5DE6\u304C\u5C0F\u3055\u3044","sorts before (lexicographically)"),">":x("\u8F9E\u66F8\u9806\u3067\u5DE6\u304C\u5927\u304D\u3044","sorts after (lexicographically)"),"-eq":x("\u6570\u5024\u304C\u7B49\u3057\u3044","numbers are equal"),"-ne":x("\u6570\u5024\u304C\u7B49\u3057\u304F\u306A\u3044","numbers are not equal"),"-lt":x("\u5DE6\u304C\u53F3\u3088\u308A\u5C0F\u3055\u3044(<)","less than"),"-le":x("\u5DE6\u304C\u53F3\u4EE5\u4E0B(<=)","less than or equal"),"-gt":x("\u5DE6\u304C\u53F3\u3088\u308A\u5927\u304D\u3044(>)","greater than"),"-ge":x("\u5DE6\u304C\u53F3\u4EE5\u4E0A(>=)","greater than or equal"),"-nt":x("\u5DE6\u306E\u30D5\u30A1\u30A4\u30EB\u306E\u65B9\u304C\u65B0\u3057\u3044","left file is newer"),"-ot":x("\u5DE6\u306E\u30D5\u30A1\u30A4\u30EB\u306E\u65B9\u304C\u53E4\u3044","left file is older"),"-ef":x("\u540C\u3058\u30D5\u30A1\u30A4\u30EB\uFF08\u540C\u3058 inode\uFF09\u3092\u6307\u3059","refer to the same file"),"&&":x("\u4E21\u65B9\u306E\u6761\u4EF6\u304C\u771F","both conditions are true"),"||":x("\u3069\u3061\u3089\u304B\u306E\u6761\u4EF6\u304C\u771F","either condition is true"),"-a":x("\u4E21\u65B9\u306E\u6761\u4EF6\u304C\u771F\uFF08AND\u3001\u975E\u63A8\u5968\uFF09","both are true (AND, obsolescent)"),"-o":x("\u3069\u3061\u3089\u304B\u306E\u6761\u4EF6\u304C\u771F\uFF08OR\u3001\u975E\u63A8\u5968\uFF09","either is true (OR, obsolescent)")},ea={"&&":x("\u5DE6\u306E\u30B3\u30DE\u30F3\u30C9\u304C\u6210\u529F\uFF08\u7D42\u4E86\u30B9\u30C6\u30FC\u30BF\u30B9 0\uFF09\u3057\u305F\u5834\u5408\u306E\u307F\u53F3\u3092\u5B9F\u884C","Run the right side only if the left succeeds (exit 0)"),"||":x("\u5DE6\u306E\u30B3\u30DE\u30F3\u30C9\u304C\u5931\u6557\uFF08\u7D42\u4E86\u30B9\u30C6\u30FC\u30BF\u30B9 0 \u4EE5\u5916\uFF09\u3057\u305F\u5834\u5408\u306E\u307F\u53F3\u3092\u5B9F\u884C","Run the right side only if the left fails (non-zero exit)"),";":x("\u30B3\u30DE\u30F3\u30C9\u306E\u533A\u5207\u308A\u3002\u5DE6\u304C\u7D42\u308F\u3063\u305F\u3089\u7D50\u679C\u306B\u95A2\u4FC2\u306A\u304F\u6B21\u3092\u5B9F\u884C","Command separator; run the next command regardless of the result"),"&":x("\u5DE6\u306E\u30B3\u30DE\u30F3\u30C9\u3092\u30D0\u30C3\u30AF\u30B0\u30E9\u30A6\u30F3\u30C9\u3067\u5B9F\u884C\u3057\u3001\u7D42\u4E86\u3092\u5F85\u305F\u305A\u306B\u6B21\u3078\u9032\u3080","Run the left command in the background and continue without waiting"),"|":x("\u30D1\u30A4\u30D7: \u5DE6\u306E\u30B3\u30DE\u30F3\u30C9\u306E\u6A19\u6E96\u51FA\u529B\u3092\u53F3\u306E\u30B3\u30DE\u30F3\u30C9\u306E\u6A19\u6E96\u5165\u529B\u306B\u6E21\u3059","Pipe: send stdout of the left command to stdin of the right"),"|&":x("\u30D1\u30A4\u30D7: \u5DE6\u306E\u30B3\u30DE\u30F3\u30C9\u306E\u6A19\u6E96\u51FA\u529B\u3068\u6A19\u6E96\u30A8\u30E9\u30FC\u51FA\u529B\u3092\u53F3\u306E\u6A19\u6E96\u5165\u529B\u306B\u6E21\u3059","Pipe stdout and stderr of the left command to stdin of the right"),";;":x("\u3053\u306E case \u5206\u5C90\u3092\u7D42\u4E86\u3059\u308B","End this case branch"),";&":x("\u6B21\u306E case \u5206\u5C90\u306E\u672C\u4F53\u3082\u7D9A\u3051\u3066\u5B9F\u884C\u3059\u308B\uFF08\u30D5\u30A9\u30FC\u30EB\u30B9\u30EB\u30FC\uFF09","Fall through into the next case branch"),";;&":x("\u6B21\u306E case \u30D1\u30BF\u30FC\u30F3\u306E\u5224\u5B9A\u3092\u7D9A\u3051\u308B","Continue testing the following case patterns")},At={if:x("\u6761\u4EF6\u5206\u5C90\u306E\u958B\u59CB\u3002\u7D9A\u304F\u30B3\u30DE\u30F3\u30C9\u306E\u7D42\u4E86\u30B9\u30C6\u30FC\u30BF\u30B9\u304C 0 \u306A\u3089 then \u7BC0\u3092\u5B9F\u884C","Start a conditional; run the `then` branch if the condition exits 0"),then:x("\u6761\u4EF6\u304C\u771F\u306E\u3068\u304D\u306B\u5B9F\u884C\u3059\u308B\u90E8\u5206\u306E\u958B\u59CB","Start of the branch run when the condition is true"),elif:x("\u524D\u306E\u6761\u4EF6\u304C\u507D\u306E\u3068\u304D\u3001\u6B21\u306E\u6761\u4EF6\u3092\u5224\u5B9A","Test another condition if the previous ones were false"),else:x("\u3069\u306E\u6761\u4EF6\u3082\u507D\u306E\u3068\u304D\u306B\u5B9F\u884C\u3059\u308B\u90E8\u5206","Branch run when no condition was true"),fi:x("if \u6587\u306E\u7D42\u308F\u308A","End of the `if` statement"),for:x("for \u30EB\u30FC\u30D7\u306E\u958B\u59CB","Start of a `for` loop"),while:x("\u6761\u4EF6\u304C\u771F\uFF08\u7D42\u4E86\u30B9\u30C6\u30FC\u30BF\u30B9 0\uFF09\u306E\u9593\u3001\u7E70\u308A\u8FD4\u3059","Repeat while the condition exits 0"),until:x("\u6761\u4EF6\u304C\u771F\u306B\u306A\u308B\u307E\u3067\uFF08\u507D\u306E\u9593\uFF09\u7E70\u308A\u8FD4\u3059","Repeat until the condition exits 0"),in:x("\u30EB\u30FC\u30D7\u3067\u9806\u306B\u53D6\u308A\u51FA\u3059\u5024\u306E\u4E00\u89A7\u3092\u6307\u5B9A","Introduces the list of values to iterate over"),do:x("\u30EB\u30FC\u30D7\u672C\u4F53\u306E\u958B\u59CB","Start of the loop body"),done:x("\u30EB\u30FC\u30D7\u672C\u4F53\u306E\u7D42\u308F\u308A","End of the loop body"),case:x("\u5024\u3092\u30D1\u30BF\u30FC\u30F3\u3068\u9806\u306B\u7167\u5408\u3057\u3001\u4E00\u81F4\u3057\u305F\u5206\u5C90\u3092\u5B9F\u884C","Match a value against patterns and run the matching branch"),esac:x("case \u6587\u306E\u7D42\u308F\u308A","End of the `case` statement"),select:x("\u4E00\u89A7\u304B\u3089\u30E6\u30FC\u30B6\u30FC\u306B\u756A\u53F7\u3067\u9078\u3070\u305B\u308B\u30E1\u30CB\u30E5\u30FC\u3092\u8868\u793A","Show a numbered menu for the user to pick from"),function:x("\u95A2\u6570\u5B9A\u7FA9","Function definition"),"{":x("\u30B3\u30DE\u30F3\u30C9\u306E\u30B0\u30EB\u30FC\u30D7\u5316\u306E\u958B\u59CB\uFF08\u73FE\u5728\u306E\u30B7\u30A7\u30EB\u3067\u5B9F\u884C\uFF09","Start of a command group (runs in the current shell)"),"}":x("\u30B3\u30DE\u30F3\u30C9\u306E\u30B0\u30EB\u30FC\u30D7\u5316\u306E\u7D42\u308F\u308A","End of a command group"),"(":x("\u30B5\u30D6\u30B7\u30A7\u30EB\u306E\u958B\u59CB\uFF08\u5225\u30D7\u30ED\u30BB\u30B9\u3067\u5B9F\u884C\u3055\u308C\u3001\u5909\u6570\u306E\u5909\u66F4\u306F\u5916\u306B\u5F71\u97FF\u3057\u306A\u3044\uFF09","Start of a subshell (changes do not affect the parent shell)"),")":x("\u30B5\u30D6\u30B7\u30A7\u30EB\u306E\u7D42\u308F\u308A","End of the subshell"),"!":x("\u7D9A\u304F\u30B3\u30DE\u30F3\u30C9\u306E\u7D42\u4E86\u30B9\u30C6\u30FC\u30BF\u30B9\u3092\u53CD\u8EE2\u3059\u308B","Negate the exit status of the following command"),time:x("\u7D9A\u304F\u30D1\u30A4\u30D7\u30E9\u30A4\u30F3\u306E\u5B9F\u884C\u6642\u9593\u3092\u8A08\u6E2C\u3057\u3066\u8868\u793A","Measure and report the run time of the pipeline"),coproc:x("\u30B3\u30D7\u30ED\u30BB\u30B9\uFF08\u53CC\u65B9\u5411\u30D1\u30A4\u30D7\u4ED8\u304D\u306E\u30D0\u30C3\u30AF\u30B0\u30E9\u30A6\u30F3\u30C9\u51E6\u7406\uFF09\u3092\u958B\u59CB","Start a coprocess with a two-way pipe")},ta={"-a":x("\u30A4\u30F3\u30C7\u30C3\u30AF\u30B9\u914D\u5217\u3068\u3057\u3066\u5BA3\u8A00","declare an indexed array"),"-A":x("\u9023\u60F3\u914D\u5217\u3068\u3057\u3066\u5BA3\u8A00","declare an associative array"),"-i":x("\u6574\u6570\u3068\u3057\u3066\u6271\u3046\uFF08\u4EE3\u5165\u6642\u306B\u7B97\u8853\u8A55\u4FA1\uFF09","treat as integer (arithmetic on assignment)"),"-r":x("\u8AAD\u307F\u53D6\u308A\u5C02\u7528\u306B\u3059\u308B","make read-only"),"-x":x("\u74B0\u5883\u5909\u6570\u3068\u3057\u3066\u30A8\u30AF\u30B9\u30DD\u30FC\u30C8","export to the environment"),"-l":x("\u4EE3\u5165\u6642\u306B\u5C0F\u6587\u5B57\u3078\u5909\u63DB","lowercase on assignment"),"-u":x("\u4EE3\u5165\u6642\u306B\u5927\u6587\u5B57\u3078\u5909\u63DB","uppercase on assignment"),"-n":x("\u540D\u524D\u53C2\u7167\uFF08nameref\uFF09\u306B\u3059\u308B","make a name reference"),"-g":x("\u95A2\u6570\u5185\u3067\u3082\u30B0\u30ED\u30FC\u30D0\u30EB\u5909\u6570\u3068\u3057\u3066\u5BA3\u8A00","declare global even inside a function"),"-f":x("\u95A2\u6570\u540D\u3092\u5BFE\u8C61\u306B\u3059\u308B","operate on function names"),"-F":x("\u95A2\u6570\u540D\u306E\u307F\u8868\u793A","show function names only"),"-p":x("\u5C5E\u6027\u3068\u5024\u3092\u8868\u793A","print attributes and values")},na={export:x("\u5909\u6570\u3092\u74B0\u5883\u5909\u6570\u3068\u3057\u3066\u30A8\u30AF\u30B9\u30DD\u30FC\u30C8\u3057\u3001\u5B50\u30D7\u30ED\u30BB\u30B9\u306B\u3082\u5F15\u304D\u7D99\u3050","Export variables so child processes inherit them"),local:x("\u95A2\u6570\u5185\u3060\u3051\u3067\u6709\u52B9\u306A\u30ED\u30FC\u30AB\u30EB\u5909\u6570\u3092\u5BA3\u8A00","Declare variables local to the current function"),declare:x("\u5909\u6570\u3092\u5BA3\u8A00\u3057\u3001\u5C5E\u6027\u3092\u8A2D\u5B9A\u3059\u308B","Declare variables and set attributes"),typeset:x("\u5909\u6570\u3092\u5BA3\u8A00\u3057\u3001\u5C5E\u6027\u3092\u8A2D\u5B9A\u3059\u308B\uFF08declare \u3068\u540C\u3058\uFF09","Declare variables and set attributes (same as declare)"),readonly:x("\u5909\u6570\u3092\u8AAD\u307F\u53D6\u308A\u5C02\u7528\uFF08\u5909\u66F4\u4E0D\u53EF\uFF09\u306B\u3059\u308B","Mark variables read-only")};var Al=new Set(["for_statement","c_style_for_statement","while_statement","if_statement","elif_clause","else_clause","case_statement","case_item","function_definition","compound_statement","subshell","do_group","ERROR"]),Fl=new Set(["list","pipeline","redirected_statement","negated_command","program"]),Cl=new Set(["simple_expansion","expansion","command_substitution","arithmetic_expansion","process_substitution","string","raw_string"]),mn=s=>`${s}${s%100>=11&&s%100<=13?"th":["th","st","nd","rd"][s%10]??"th"}`,Il=new Set(["\\;",";","';'",'"\\;"','"; "',"+"]),Ns=s=>s.endPosition.column===0&&s.endPosition.row>s.startPosition.row?s.endPosition.row-1:s.endPosition.row,ia=s=>Ns(s)>s.startPosition.row,he=(s,e)=>s.startPosition.row<=e&&Ns(s)>=e;function we(s){return{start:{line:s.startPosition.row,character:s.startPosition.column},end:{line:s.endPosition.row,character:s.endPosition.column}}}function de(s,e=60){let t=s.split(`
89
- `)[0],n=t.length>e?t.slice(0,e-1)+"\u2026":t;return t.length<s.length&&n===t?n+" \u2026":n}function _n(s){return Al.has(s.type)?ia(s):Fl.has(s.type)?s.namedChildren.some(_n):!1}var Ee=(s,e)=>!!s&&!!e&&s.id===e.id,sa=(s,e)=>s.some(t=>t.id===e.id);function Ft(s,e){let t=[];for(let n=0;n<s.childCount;n++)s.fieldNameForChild(n)===e&&t.push(s.child(n));return t}var ce=s=>s.type==="word"||s.type==="number",Es=s=>/(^|[^\\])[*?]|\[[^\]]+\]/.test(s),bn=class{constructor(e){this.lang=e}lang;line=null;context=[];functions=new Map;extraNotes=[];opts={};source="";examples=[];argCtx;explainLine(e,t,n,r={}){let a=e.rootNode;this.opts=r,this.source=a.text,this.functions.clear();for(let u of a.descendantsOfType("function_definition")){let h=u.childForFieldName("name")?.text;h&&!this.functions.has(h)&&this.functions.set(h,u.startPosition.row)}this.line=t,this.context=[],this.extraNotes=[],this.examples=[];let o=this.flatten(a),l=a.descendantsOfType(["command","redirected_statement","list","pipeline","variable_assignment","test_command","while_statement"],{row:t,column:0},{row:t+1,column:0}).filter(u=>he(u,t)).map(u=>u.type==="while_statement"?u.text.split(`
90
- `)[0]:u.text),c={line:t,...n&&n!=="bash"?{shell:n}:{},items:o,context:this.context,notes:[...this.notes(a,t,o),...n?Xi(a,t,n,this.lang):[],...new Set(this.extraNotes),...this.opts.idioms===!1?[]:Us(l,this.lang)],examples:this.titledExamples(a,t).filter(u=>this.wantsExample(u)).filter((u,h,d)=>d.findIndex(p=>JSON.stringify(p)===JSON.stringify(u))===h),summary:o.filter(u=>u.kind!=="comment"||o.length===1).map(gn).join(" ; ")};return this.line=null,c}s(e,t){return this.lang==="ja"?e:t}t(e){return e[this.lang]}lineRef(e){let t=e.startPosition.row+1,n=Ns(e)+1;return t===n?"":this.s(`\uFF08\u884C ${t}\u301C${n}\uFF09`,` (lines ${t}\u2013${n})`)}tok(e,t,n,r=[],a=de(e.text)){return{kind:t,label:a,explanation:n,span:we(e),children:r}}sub(e){return e?this.line===null?[this.explain(e)]:he(e,this.line)?_n(e)?e.startPosition.row===this.line?[this.explain(e)]:this.flatten(e):[this.full(e)]:[]:[]}subs(e){return e.flatMap(t=>this.sub(t))}full(e){let t=this.line;this.line=null;try{return this.explain(e)}finally{this.line=t}}flatten(e){let t=this.contextLabel(e);t&&this.context.push({label:t,line:e.startPosition.row});let n=[];for(let r of e.children)if(!(this.line!==null&&!he(r,this.line)))if(r.isNamed)n.push(...this.sub(r));else{let a=this.anon(r);a&&n.push(a)}return n}contextLabel(e){switch(e.type){case"for_statement":case"c_style_for_statement":return this.s("for \u30EB\u30FC\u30D7","for loop");case"while_statement":return e.child(0)?.type==="until"?this.s("until \u30EB\u30FC\u30D7","until loop"):this.s("while \u30EB\u30FC\u30D7","while loop");case"if_statement":return this.s("if \u6587","if statement");case"elif_clause":return"elif";case"else_clause":return"else";case"case_statement":return this.s("case \u6587","case statement");case"case_item":{let t=Ft(e,"value").map(n=>n.text);return this.s(`case \u5206\u5C90 \`${t.join("|")})\``,`case branch \`${t.join("|")})\``)}case"function_definition":return this.s(`\u95A2\u6570 \`${e.childForFieldName("name")?.text}\``,`function \`${e.childForFieldName("name")?.text}\``);case"compound_statement":return this.s("{ } \u30B0\u30EB\u30FC\u30D7","{ } group");case"subshell":return this.s("( ) \u30B5\u30D6\u30B7\u30A7\u30EB","( ) subshell");case"ERROR":return this.s("\u69CB\u6587\u30A8\u30E9\u30FC\u306E\u7BC4\u56F2","syntax error region");default:return}}anon(e){let t=At[e.type];if(t)return this.tok(e,"keyword",this.t(t));let n=ea[e.type];if(n)return this.tok(e,"operator",this.t(n))}kws(e){return this.anonOnLine(e.children.filter(t=>!t.isNamed))}anonOnLine(e){return e.filter(t=>this.line===null||he(t,this.line)).map(t=>t.type===";"?void 0:this.anon(t)).filter(t=>!!t)}ordered(e,t=()=>!1){let n=[];for(let r of e.children)t(r)||(r.isNamed?n.push(...this.sub(r)):n.push(...this.anonOnLine([r])));return n}notes(e,t,n){let r=[],a={row:t,column:0},o={row:t+1,column:0};for(let l of e.descendantsOfType("heredoc_redirect",a,o)){let c=l.namedChildren.find(d=>d.type==="heredoc_body"),u=l.namedChildren.find(d=>d.type==="heredoc_end"),h=l.namedChildren.find(d=>d.type==="heredoc_start")?.text??"";c&&he(c,t)&&c.startPosition.row<=t&&l.startPosition.row<t?r.push(this.s(`\u3053\u306E\u884C\u306F\u30D2\u30A2\u30C9\u30AD\u30E5\u30E1\u30F3\u30C8\uFF08\u884C ${l.startPosition.row+1} \u306E \`<<${h}\`\uFF09\u306E\u672C\u6587\u3067\u3059\u3002`,`This line is part of the here-document started by \`<<${h}\` on line ${l.startPosition.row+1}.`)):u&&u.startPosition.row===t&&r.push(this.s(`\`${u.text}\` \u306F\u30D2\u30A2\u30C9\u30AD\u30E5\u30E1\u30F3\u30C8\u306E\u7D42\u308F\u308A\u3092\u793A\u3059\u884C\u3067\u3059\u3002`,`\`${u.text}\` marks the end of the here-document.`))}for(let l of n)l.span.start.line<t&&!r.length&&l.kind!=="block"&&r.push(this.s(`\u3053\u306E\u6587\u306F\u884C ${l.span.start.line+1} \u304B\u3089\u7D9A\u3044\u3066\u3044\u307E\u3059\uFF08\u884C\u672B\u306E \`\\\` \u306B\u3088\u308B\u884C\u7D99\u7D9A\u306A\u3069\uFF09\u3002`,`This statement starts on line ${l.span.start.line+1} (e.g. continued with a trailing \`\\\`).`));return r}explain(e){switch(e.type){case"comment":return this.comment(e);case"command":return this.command(e);case"declaration_command":return this.declaration(e);case"unset_command":return this.unset(e);case"variable_assignment":return this.assignment(e);case"variable_assignments":return this.tok(e,"assignment",this.s("\u8907\u6570\u306E\u5909\u6570\u3078\u306E\u4EE3\u5165","Several variable assignments"),this.subs(e.namedChildren));case"pipeline":return this.pipeline(e);case"list":return this.list(e);case"redirected_statement":return this.redirected(e);case"file_redirect":return this.fileRedirect(e);case"heredoc_redirect":return this.heredoc(e);case"herestring_redirect":return this.herestring(e);case"negated_command":return this.tok(e,"operator",this.t(At["!"]),this.subs(e.namedChildren));case"test_command":return this.test(e);case"unary_expression":return this.unary(e);case"binary_expression":return this.binary(e);case"ternary_expression":return this.tok(e,"expansion",this.s("\u4E09\u9805\u6F14\u7B97\u5B50: \u6761\u4EF6 ? \u771F\u306E\u3068\u304D\u306E\u5024 : \u507D\u306E\u3068\u304D\u306E\u5024","Ternary: cond ? if-true : if-false"),this.subs(e.namedChildren));case"postfix_expression":return this.tok(e,"operator",this.s(`\u7B97\u8853: \`${e.text}\`\uFF08${e.text.endsWith("++")?"1 \u5897\u3084\u3059":"1 \u6E1B\u3089\u3059"}\uFF09`,`Arithmetic: \`${e.text}\` (${e.text.endsWith("++")?"increment":"decrement"})`));case"parenthesized_expression":return this.tok(e,"operator",this.s("\u62EC\u5F27\u3067\u307E\u3068\u3081\u305F\u5F0F","Parenthesized expression"),this.subs(e.namedChildren));case"expansion":return this.expansion(e);case"simple_expansion":return this.simpleExpansion(e);case"command_substitution":return this.commandSubstitution(e);case"process_substitution":return this.processSubstitution(e);case"arithmetic_expansion":return this.tok(e,"substitution",this.s("\u7B97\u8853\u5C55\u958B: \u4E2D\u306E\u5F0F\u3092\u6574\u6570\u3068\u3057\u3066\u8A08\u7B97\u3057\u305F\u7D50\u679C\u306B\u7F6E\u304D\u63DB\u3048\u308B","Arithmetic expansion: replaced by the integer result of the expression"),this.subs(e.namedChildren));case"string":return this.string(e);case"raw_string":return this.tok(e,"string",this.s("\u30B7\u30F3\u30B0\u30EB\u30AF\u30A9\u30FC\u30C8\u6587\u5B57\u5217: \u4E2D\u8EAB\u306F\u4E00\u5207\u5C55\u958B\u3055\u308C\u305A\u3001\u305D\u306E\u307E\u307E\u306E\u6587\u5B57\u5217\u306B\u306A\u308B","Single-quoted string: taken literally, nothing is expanded"));case"ansi_c_string":return this.tok(e,"string",this.s("`$'\u2026'` \u6587\u5B57\u5217: `\\n` `\\t` \u306A\u3069\u306E\u30A8\u30B9\u30B1\u30FC\u30D7\u3092\u89E3\u91C8\u3057\u305F\u6587\u5B57\u5217\u306B\u306A\u308B","`$'\u2026'` string: backslash escapes such as `\\n` are interpreted"));case"translated_string":return this.tok(e,"string",this.s('`$"\u2026"` \u6587\u5B57\u5217: \u30ED\u30B1\u30FC\u30EB\u306B\u5FDC\u3058\u3066\u7FFB\u8A33\u3055\u308C\u308B\u6587\u5B57\u5217','`$"\u2026"` string: translated according to the locale'),this.subs(e.namedChildren));case"concatenation":return this.tok(e,"argument",this.s("\u9023\u7D50: \u4EE5\u4E0B\u306E\u90E8\u5206\u3092\u7A7A\u767D\u306A\u3057\u3067\u3064\u306A\u3052\u30661\u3064\u306E\u5358\u8A9E\u306B\u3059\u308B","Concatenation: the parts below are joined into one word"),this.subs(e.namedChildren));case"word":return this.word(e);case"number":return this.tok(e,"number",this.s("\u6570\u5024","Number"));case"brace_expression":return this.tok(e,"expansion",this.s(`\u30D6\u30EC\u30FC\u30B9\u5C55\u958B: \`${e.text}\` \u306F\u9023\u7D9A\u3057\u305F\u5024\uFF08\u9023\u756A\u306A\u3069\uFF09\u306B\u5C55\u958B\u3055\u308C\u308B`,`Brace expansion: \`${e.text}\` expands to a sequence`));case"array":return this.tok(e,"expansion",this.s("\u914D\u5217: `( )` \u5185\u306E\u8981\u7D20\u304B\u3089\u914D\u5217\u3092\u4F5C\u308B","Array: built from the elements inside `( )`"),this.subs(e.namedChildren));case"subscript":return this.subscript(e);case"regex":return this.regexNode(e);case"extglob_pattern":return this.tok(e,"pattern",this.s("\u30D1\u30BF\u30FC\u30F3","Pattern"));case"variable_name":return this.variable(e.text,e);case"special_variable_name":return this.variable(e.text,e);case"test_operator":return this.tok(e,"operator",this.t(vs[e.text]??ut[e.text]??{ja:"\u6F14\u7B97\u5B50",en:"Operator"}));case"subshell":return this.block(e,"block",this.s("\u30B5\u30D6\u30B7\u30A7\u30EB: `( )` \u5185\u3092\u5225\u30D7\u30ED\u30BB\u30B9\u3067\u5B9F\u884C\u3059\u308B\u3002\u4E2D\u3067\u306E\u5909\u6570\u5909\u66F4\u3084 cd \u306F\u5916\u306B\u5F71\u97FF\u3057\u306A\u3044","Subshell: runs `( )` in a child process; variable changes and cd do not leak out"));case"compound_statement":return this.block(e,"block",this.s("\u30B3\u30DE\u30F3\u30C9\u30B0\u30EB\u30FC\u30D7: `{ }` \u5185\u306E\u30B3\u30DE\u30F3\u30C9\u3092\u73FE\u5728\u306E\u30B7\u30A7\u30EB\u3067\u307E\u3068\u3081\u3066\u5B9F\u884C\u3059\u308B","Command group: runs the commands in `{ }` in the current shell"));case"do_group":return this.block(e,"block",this.s("\u30EB\u30FC\u30D7\u672C\u4F53: `do` \u304B\u3089 `done` \u307E\u3067\u3092\u7E70\u308A\u8FD4\u3057\u5B9F\u884C\u3059\u308B","Loop body: the commands between `do` and `done`"));case"function_definition":return this.functionDef(e);case"for_statement":return this.forStatement(e);case"c_style_for_statement":return this.block(e,"keyword",this.s("C \u8A00\u8A9E\u98A8 for \u30EB\u30FC\u30D7: `((\u521D\u671F\u5316; \u6761\u4EF6; \u66F4\u65B0))` \u3067\u56DE\u6570\u3092\u5236\u5FA1\u3057\u3066\u7E70\u308A\u8FD4\u3059","C-style for loop: `((init; condition; update))`")+this.lineRef(e));case"while_statement":return this.whileStatement(e);case"if_statement":return this.block(e,"keyword",this.s("if \u6587: \u6761\u4EF6\u30B3\u30DE\u30F3\u30C9\u306E\u7D42\u4E86\u30B9\u30C6\u30FC\u30BF\u30B9\u304C 0\uFF08\u6210\u529F\uFF09\u306A\u3089 then \u4EE5\u4E0B\u3092\u5B9F\u884C","if statement: runs the `then` branch if the condition exits 0")+this.lineRef(e));case"elif_clause":return this.block(e,"keyword",this.t(At.elif));case"else_clause":return this.block(e,"keyword",this.t(At.else));case"case_statement":return this.caseStatement(e);case"case_item":return this.caseItem(e);case"ERROR":return this.tok(e,"error",this.s("\u69CB\u6587\u30A8\u30E9\u30FC: \u3053\u306E\u90E8\u5206\u306F\u6B63\u3057\u304F\u89E3\u6790\u3067\u304D\u307E\u305B\u3093\u3067\u3057\u305F\uFF08\u30AF\u30A9\u30FC\u30C8\u3084\u62EC\u5F27\u306E\u9589\u3058\u5FD8\u308C\u306A\u3069\uFF09","Syntax error: this part could not be parsed (unclosed quote or bracket?)"),this.subs(e.namedChildren));default:return e.isNamed?this.tok(e,"argument",e.type,this.subs(e.namedChildren)):this.anon(e)??this.tok(e,"operator",e.type)}}comment(e){if(e.startPosition.row===0&&e.text.startsWith("#!")){let n=e.text.slice(2).trim();return this.tok(e,"comment",this.s(`\u30B7\u30D0\u30F3\uFF08shebang\uFF09: \u3053\u306E\u30B9\u30AF\u30EA\u30D7\u30C8\u3092 \`${n}\` \u3067\u5B9F\u884C\u3059\u308B\u3053\u3068\u3092\u6307\u5B9A\u3059\u308B`,`Shebang: run this script with \`${n}\``))}let t=ls.exec(e.text);if(t){let n=t[2].split(",").map(r=>`\`${r}\``).join(t[2].includes(",")?this.s("\u30FB",", "):"");return this.tok(e,"comment",t[1]==="disable-file"?this.s(`Bash Explainer \u3078\u306E\u6307\u793A\u30B3\u30E1\u30F3\u30C8: \u3053\u306E\u30D5\u30A1\u30A4\u30EB\u5168\u4F53\u3067\u8B66\u544A ${n} \u3092\u51FA\u3055\u306A\u3044`,`Bash Explainer directive: no ${n} warnings in this file`):this.s(`Bash Explainer \u3078\u306E\u6307\u793A\u30B3\u30E1\u30F3\u30C8: ${e.startPosition.column?"\u3053\u306E\u884C":"\u6B21\u306E\u884C"}\u3067\u8B66\u544A ${n} \u3092\u51FA\u3055\u306A\u3044`,`Bash Explainer directive: no ${n} warnings on ${e.startPosition.column?"this":"the next"} line`))}return/^#\s*shellcheck\s/.test(e.text)?this.tok(e,"comment",this.s("ShellCheck \u3078\u306E\u6307\u793A\u30B3\u30E1\u30F3\u30C8\uFF08\u8B66\u544A\u306E\u6291\u5236\u306A\u3069\uFF09","ShellCheck directive (e.g. disable a warning)")):this.tok(e,"comment",this.s("\u30B3\u30E1\u30F3\u30C8: `#` \u304B\u3089\u884C\u672B\u307E\u3067\u306F\u5B9F\u884C\u3055\u308C\u306A\u3044","Comment: everything after `#` is ignored"))}block(e,t,n){return this.tok(e,t,n,this.ordered(e))}functionDef(e){let t=e.childForFieldName("name"),n=t?.text??"?",r=t&&(this.line===null||he(t,this.line))?[this.tok(t,"function",this.s("\u95A2\u6570\u540D","Function name"))]:[];return this.tok(e,"function",this.s(`\u95A2\u6570 \`${n}\` \u306E\u5B9A\u7FA9: \u4EE5\u5F8C \`${n}\` \u3092\u30B3\u30DE\u30F3\u30C9\u306E\u3088\u3046\u306B\u547C\u3073\u51FA\u305B\u308B\uFF08\u5F15\u6570\u306F\u95A2\u6570\u5185\u3067 $1, $2\u2026 \u306B\u306A\u308B\uFF09${this.lineRef(e)}`,`Defines function \`${n}\`; call it like a command (arguments become $1, $2\u2026)${this.lineRef(e)}`),Ie([...r,...this.ordered(e,a=>Ee(a,t)||a.type==="("||a.type===")")]))}forStatement(e){let t=e.childForFieldName("variable"),n=Ft(e,"value"),r=n.map(c=>c.text).join(" "),a=n.length?this.s(`for \u30EB\u30FC\u30D7: \`${r}\` \u306E\u5404\u5024\u3092\u9806\u306B\u5909\u6570 \`${t?.text}\` \u306B\u5165\u308C\u3066\u672C\u4F53\u3092\u7E70\u308A\u8FD4\u3059`,`for loop: assign each of \`${r}\` to \`${t?.text}\` and run the body`):this.s(`for \u30EB\u30FC\u30D7: \u4F4D\u7F6E\u30D1\u30E9\u30E1\u30FC\u30BF\uFF08"$@"\uFF09\u306E\u5404\u5024\u3092\u9806\u306B \`${t?.text}\` \u306B\u5165\u308C\u3066\u7E70\u308A\u8FD4\u3059`,`for loop over the positional parameters ("$@") as \`${t?.text}\``),o=this.ordered(e,c=>Ee(c,t)||sa(n,c)),l=[];t&&(this.line===null||he(t,this.line))&&l.push(this.tok(t,"variable",this.s("\u30EB\u30FC\u30D7\u5909\u6570: \u7E70\u308A\u8FD4\u3057\u3054\u3068\u306B\u6B21\u306E\u5024\u304C\u5165\u308B","Loop variable: receives the next value on each iteration")));for(let c of n)for(let u of this.sub(c))u.explanation=this.s("\u7E70\u308A\u8FD4\u3059\u5024: ","Value to iterate: ")+u.explanation,l.push(u);return this.tok(e,"keyword",a+this.lineRef(e),Ie([...o,...l]))}whileStatement(e){let n=e.child(0)?.type==="until"?this.s("until \u30EB\u30FC\u30D7: \u6761\u4EF6\u30B3\u30DE\u30F3\u30C9\u304C\u6210\u529F\uFF08\u7D42\u4E86\u30B9\u30C6\u30FC\u30BF\u30B9 0\uFF09\u3059\u308B\u307E\u3067\u672C\u4F53\u3092\u7E70\u308A\u8FD4\u3059","until loop: repeat the body until the condition succeeds"):this.s("while \u30EB\u30FC\u30D7: \u6761\u4EF6\u30B3\u30DE\u30F3\u30C9\u304C\u6210\u529F\uFF08\u7D42\u4E86\u30B9\u30C6\u30FC\u30BF\u30B9 0\uFF09\u3059\u308B\u9593\u3001\u672C\u4F53\u3092\u7E70\u308A\u8FD4\u3059","while loop: repeat the body while the condition succeeds");return this.tok(e,"keyword",n+this.lineRef(e),this.ordered(e))}caseStatement(e){let t=e.childForFieldName("value"),n=this.ordered(e,a=>Ee(a,t)),r=t?this.sub(t).map(a=>({...a,explanation:this.s("\u7167\u5408\u3059\u308B\u5024: ","Value to match: ")+a.explanation})):[];for(let a of n)a.kind==="keyword"&&a.label==="in"&&(a.explanation=this.s("\u5024\u306E\u5F8C\u306B\u3001\u30D1\u30BF\u30FC\u30F3\u3054\u3068\u306E\u5206\u5C90\u3092\u4E26\u3079\u308B","Introduces the list of pattern branches"));return this.tok(e,"keyword",this.s(`case \u6587: \`${t?.text}\` \u3092\u5404\u30D1\u30BF\u30FC\u30F3\u3068\u4E0A\u304B\u3089\u9806\u306B\u7167\u5408\u3057\u3001\u6700\u521D\u306B\u4E00\u81F4\u3057\u305F\u5206\u5C90\u3092\u5B9F\u884C`,`case statement: match \`${t?.text}\` against each pattern in order and run the first match`)+this.lineRef(e),Ie([...n,...r]))}caseItem(e){let t=Ft(e,"value"),n=t.map(c=>c.text).join(" | "),r=t.length===1&&t[0].text==="*",a=r?this.s("\u65E2\u5B9A\u306E\u5206\u5C90: \u3069\u306E\u30D1\u30BF\u30FC\u30F3\u306B\u3082\u4E00\u81F4\u3057\u306A\u304B\u3063\u305F\u5834\u5408\u306B\u5B9F\u884C\uFF08`*` \u306F\u4F55\u306B\u3067\u3082\u4E00\u81F4\uFF09","Default branch: runs when nothing else matched (`*` matches anything)"):this.s(`\u5206\u5C90: \u5024\u304C\u30D1\u30BF\u30FC\u30F3 \`${n}\` \u306B\u4E00\u81F4\u3057\u305F\u5834\u5408\u306B\u5B9F\u884C\uFF08\`|\` \u306F\u300C\u307E\u305F\u306F\u300D\uFF09`,`Branch: runs when the value matches \`${n}\` (\`|\` means "or")`),o=t.filter(c=>this.line===null||he(c,this.line)).map(c=>this.tok(c,"pattern",Es(c.text)?this.s(`\u30D1\u30BF\u30FC\u30F3 \`${c.text}\`\uFF08\u30B0\u30ED\u30D6: \`*\` \u306F\u4EFB\u610F\u306E\u6587\u5B57\u5217, \`?\` \u306F\u4EFB\u610F\u306E1\u6587\u5B57\uFF09`,`Pattern \`${c.text}\` (glob: \`*\` any string, \`?\` any char)`):this.s(`\u30D1\u30BF\u30FC\u30F3 \`${c.text}\``,`Pattern \`${c.text}\``))),l=this.ordered(e,c=>sa(t,c)||c.type==="|"||c.type===")"||c.type==="(");if(!r&&(this.line===null||t.some(c=>he(c,this.line)))){let c=this.examples.length;this.caseExample(t),this.anchorExamples(c,e)}return this.tok(e,"pattern",a+this.lineRef(e),Ie([...o,...l]))}pipeline(e){let t=this.examples.length,n=this.ordered(e),r=this.pipelineExample(e);r&&(this.examples.length=t,this.examples.push({...r,anchor:we(e),kind:"pipeline"}));let a=n.filter(l=>l.kind!=="operator"&&l.kind!=="keyword"),o=this.tok(e,"operator",this.s("\u30D1\u30A4\u30D7\u30E9\u30A4\u30F3: \u5404\u30B3\u30DE\u30F3\u30C9\u306E\u6A19\u6E96\u51FA\u529B\u3092\u6B21\u306E\u30B3\u30DE\u30F3\u30C9\u306E\u6A19\u6E96\u5165\u529B\u306B\u3064\u306A\u3044\u3067\u3001\u540C\u6642\u306B\u5B9F\u884C\u3059\u308B","Pipeline: each command's stdout feeds the next command's stdin; they run concurrently"),n);return o.summary=a.map(gn).join(" | "),o}list(e){let t=[],n=o=>{for(let l of o.children)l.type==="list"&&!_n(l)?n(l):t.push(l)};n(e);let r=[];for(let o of t)o.isNamed?r.push(...this.sub(o)):r.push(...this.anonOnLine([o]));let a=this.tok(e,"operator",this.s("\u30B3\u30DE\u30F3\u30C9\u30EA\u30B9\u30C8: `&&`\uFF08\u6210\u529F\u3057\u305F\u3089\u6B21\u3078\uFF09\u3084 `||`\uFF08\u5931\u6557\u3057\u305F\u3089\u6B21\u3078\uFF09\u3067\u6761\u4EF6\u4ED8\u304D\u306B\u3064\u306A\u3044\u3060\u30B3\u30DE\u30F3\u30C9\u5217","Command list joined by `&&` (run next on success) or `||` (run next on failure)"),r);return a.summary=r.map(o=>o.kind==="operator"&&!o.children.length?o.label:gn(o)).join(" "),a}redirected(e){let t=e.childForFieldName("body"),n=e.namedChildren.filter(c=>!Ee(c,t)),r=qs(n.flatMap(c=>this.redirectInfo(c)),this.lang);r&&this.extraNotes.push(r);let a=this.sub(t),o=this.subs(n);if(a.length===1&&t&&!_n(t)&&["command","declaration_command"].includes(t.type)){let c=a[0];return{...c,span:we(e),label:de(e.text),children:Ie([...c.children,...o])}}if(this.line!==null&&o.length===0&&a.length===1)return a[0];let l=this.tok(e,"redirect",this.s(`\u5165\u51FA\u529B\u306E\u30EA\u30C0\u30A4\u30EC\u30AF\u30C8: ${t?`\`${de(t.text,30)}\` \u5168\u4F53`:"\u30B3\u30DE\u30F3\u30C9"}\u306E\u5165\u51FA\u529B\u3092\u5207\u308A\u66FF\u3048\u308B`,`Redirection applied to ${t?`\`${de(t.text,30)}\` as a whole`:"the command"}`),Ie([...a,...o]));return l.summary=[...a.map(gn),...o.map(c=>c.label)].join(" "),l}redirectInfo(e){return e.type==="file_redirect"?[{op:e.children.find(t=>!t.isNamed)?.type??">",fd:e.childForFieldName("descriptor")?.text??"",dest:Ft(e,"destination").map(t=>t.text).join(" ")}]:e.type==="heredoc_redirect"?[{op:"<<",fd:"",dest:""},...e.namedChildren.filter(t=>t.type==="file_redirect").flatMap(t=>this.redirectInfo(t))]:e.type==="herestring_redirect"?[{op:"<<<",fd:"",dest:""}]:[]}fileRedirect(e){let t=e.childForFieldName("descriptor")?.text??"",n=e.children.find(h=>!h.isNamed)?.type??">",r=Ft(e,"destination"),a=r.map(h=>h.text).join(" "),o=Ki[n],l=o?this.t(o(t,a)):this.s(`\u30EA\u30C0\u30A4\u30EC\u30AF\u30C8 \`${n}\``,`Redirection \`${n}\``),c=Qi[a];c&&(l+=this.s("\u3002",". ")+this.t(c)),t==="2"&&n===">&"&&a==="1"&&(l=this.s("\u6A19\u6E96\u30A8\u30E9\u30FC\u51FA\u529B(fd 2)\u3092\u6A19\u6E96\u51FA\u529B(fd 1)\u3068\u540C\u3058\u51FA\u529B\u5148\u306B\u5411\u3051\u308B\uFF08\u30A8\u30E9\u30FC\u3082\u4E00\u7DD2\u306B\u51FA\u529B\u30FB\u30D1\u30A4\u30D7\u3059\u308B\u5B9A\u756A\u306E\u66F8\u304D\u65B9\uFF09","Send stderr (fd 2) to wherever stdout (fd 1) goes (the classic way to capture errors too)")),(t===""||t==="1")&&n===">&"&&a==="2"&&(l=this.s("\u6A19\u6E96\u51FA\u529B\u3092\u6A19\u6E96\u30A8\u30E9\u30FC\u51FA\u529B(fd 2)\u306B\u5411\u3051\u308B\uFF08\u30E1\u30C3\u30BB\u30FC\u30B8\u3092\u30A8\u30E9\u30FC\u51FA\u529B\u306B\u51FA\u3059\u5B9A\u756A\u306E\u66F8\u304D\u65B9\uFF09","Send stdout to stderr (the usual way to print an error message)"));let u=r.filter(h=>!ce(h)).flatMap(h=>this.sub(h));return this.tok(e,"redirect",l,u)}heredoc(e){let t=e.children.find(d=>!d.isNamed)?.type??"<<",n=e.namedChildren.find(d=>d.type==="heredoc_start")?.text??"",r=e.namedChildren.find(d=>d.type==="heredoc_body"),a=n.replace(/^['"\\]|['"]$/g,""),o=n!==a,l=this.s(`\u30D2\u30A2\u30C9\u30AD\u30E5\u30E1\u30F3\u30C8: \u6B21\u306E\u884C\u304B\u3089 \`${a}\` \u3060\u3051\u306E\u884C\u307E\u3067\u3092\u6A19\u6E96\u5165\u529B\u3068\u3057\u3066\u6E21\u3059`,`Here-document: the following lines up to a line containing only \`${a}\` become stdin`);t==="<<-"&&(l+=this.s("\u3002`<<-` \u306A\u306E\u3067\u5404\u884C\u5148\u982D\u306E\u30BF\u30D6\u306F\u53D6\u308A\u9664\u304B\u308C\u308B",". With `<<-`, leading tabs are stripped")),l+=o?this.s("\u3002\u533A\u5207\u308A\u8A9E\u304C\u30AF\u30A9\u30FC\u30C8\u3055\u308C\u3066\u3044\u308B\u306E\u3067\u672C\u6587\u4E2D\u306E\u5909\u6570\u3084\u30B3\u30DE\u30F3\u30C9\u7F6E\u63DB\u306F\u5C55\u958B\u3055\u308C\u306A\u3044",". The delimiter is quoted, so nothing in the body is expanded"):this.s("\u3002\u672C\u6587\u4E2D\u306E `$\u5909\u6570` \u3084 `$(\u2026)` \u306F\u5C55\u958B\u3055\u308C\u308B",". `$vars` and `$(\u2026)` in the body are expanded"),l+=this.lineRef(e);let c=`${t}${n}`,u=[...r?this.subs(r.namedChildren.filter(d=>d.type!=="heredoc_content")):[],...this.subs(e.namedChildren.filter(d=>d.type.endsWith("redirect")))],h=e.namedChildren.find(d=>d.type==="heredoc_start")??e;return{kind:"redirect",label:c,explanation:l,children:u,span:{start:we(e).start,end:we(h).end}}}herestring(e){return this.tok(e,"redirect",this.s("\u30D2\u30A2\u30B9\u30C8\u30EA\u30F3\u30B0 `<<<`: \u7D9A\u304F\u6587\u5B57\u5217\uFF08\u672B\u5C3E\u306B\u6539\u884C\u304C\u4ED8\u304F\uFF09\u3092\u6A19\u6E96\u5165\u529B\u3068\u3057\u3066\u6E21\u3059","Here-string `<<<`: the following word (plus a newline) becomes stdin"),this.subs(e.namedChildren.filter(t=>!ce(t))))}assignment(e){let t=e.childForFieldName("name"),n=e.childForFieldName("value"),r=e.children.find(c=>!c.isNamed&&(c.type==="="||c.type==="+="))?.type??"=",a=t?.text??"?",o=r==="+="?this.s(`\u5909\u6570 \`${a}\` \u306B\u5024\u3092\u8FFD\u8A18\u3059\u308B\uFF08\u914D\u5217\u306A\u3089\u8981\u7D20\u3092\u8FFD\u52A0\uFF09`,`Append to variable \`${a}\` (adds elements for arrays)`):n?this.s(`\u5909\u6570 \`${a}\` \u306B\u5024\u3092\u4EE3\u5165\u3059\u308B\uFF08\`=\` \u306E\u524D\u5F8C\u306B\u7A7A\u767D\u306F\u5165\u308C\u3089\u308C\u306A\u3044\uFF09`,`Assign a value to variable \`${a}\` (no spaces around \`=\`)`):this.s(`\u5909\u6570 \`${a}\` \u306B\u7A7A\u6587\u5B57\u3092\u4EE3\u5165\u3059\u308B`,`Set variable \`${a}\` to the empty string`);t?.type==="subscript"&&(o=this.s(`\u914D\u5217 \`${t.childForFieldName("name")?.text}\` \u306E\u8981\u7D20 \`[${t.childForFieldName("index")?.text}]\` \u306B\u4EE3\u5165\u3059\u308B`,`Assign to element \`[${t.childForFieldName("index")?.text}]\` of array \`${t.childForFieldName("name")?.text}\``));let l=[];if(n)for(let c of this.sub(n))ce(n)&&(c.explanation=this.s(`\u4EE3\u5165\u3059\u308B\u5024 \`${n.text}\``,`Value \`${n.text}\``)),l.push(c);return this.tok(e,"assignment",o,l)}declaration(e){let t=e.child(0)?.type??"declare",n=na[t],r=[];for(let o of e.namedChildren)if(!(this.line!==null&&!he(o,this.line)))if(o.type==="word"&&o.text.startsWith("-")){let l=o.text.slice(1).split("").map(c=>ta["-"+c]).filter(Boolean);r.push(this.tok(o,"option",l.length?l.map(c=>this.t(c)).join(this.s("\u3001",", ")):this.s("\u30AA\u30D7\u30B7\u30E7\u30F3","Option")))}else o.type==="variable_name"||o.type==="word"?r.push(this.tok(o,"variable",this.s(`\u5909\u6570 \`${o.text}\` \u3092\u5BFE\u8C61\u306B\u3059\u308B`,`Variable \`${o.text}\``))):r.push(...this.sub(o));let a=this.tok(e,"builtin",n?this.t(n):t,r);return a.summary=`${t}: ${a.explanation}`,a}unset(e){let t=this.tok(e,"builtin",this.t(Lt.unset.summary),this.subs(e.namedChildren.filter(n=>!ce(n)&&n.type!=="variable_name")));return t.summary=`unset: ${t.explanation}`,t}wantsExample(e){let t=this.opts.examples;return t?t.enabled&&!(e.kind&&t.disabled.includes(e.kind)):!0}titledExamples(e,t){return e.descendantsOfType(["command","test_command"],{row:t,column:0},{row:t+1,column:0}).filter(r=>he(r,t)).length<2?this.examples:this.examples.map(r=>{if(!r.target)return r;let a=`\`${r.target}\``,o=this.lang==="ja"?r.title.replace(/^例/,`${a} \u306E\u4F8B`):r.title.replace(/^Example/,`Example for ${a}`);return{...r,title:o}})}command(e){let t=this.examples.length,n=this.commandToken(e);return this.tagExamples(t,e),n}tagExamples(e,t){let n=de(t.text.replace(/\s*\\\n\s*/g," "),40);for(let r of this.examples.slice(e))r.target??=n;this.anchorExamples(e,t)}anchorExamples(e,t){for(let n of this.examples.slice(e))n.anchor??=we(t)}commandToken(e){let t=e.childForFieldName("name"),n=[],r=[],a=[],o=!1;for(let p=0;p<e.childCount;p++){let f=e.child(p);if(Ee(f,t)){o=!0;continue}if(f.type.endsWith("redirect")){a.push(f);continue}if(!o&&f.type==="variable_assignment"){for(let m of this.sub(f))m.explanation=this.s(`\u3053\u306E\u30B3\u30DE\u30F3\u30C9\u306E\u5B9F\u884C\u4E2D\u3060\u3051\u8A2D\u5B9A\u3055\u308C\u308B\u74B0\u5883\u5909\u6570: ${m.explanation}`,`Environment variable set only for this command: ${m.explanation}`),n.push(m);continue}f.isNamed&&r.push(f)}if(!t)return this.tok(e,"assignment",this.s("\u5909\u6570\u3078\u306E\u4EE3\u5165","Variable assignment"),[...n,...this.subs(a)]);let l=t.namedChildren.length===1&&t.namedChildren[0].type==="arithmetic_expansion"&&t.text.startsWith("((")?t.namedChildren[0]:void 0;if(l&&!r.length&&!n.length){(this.line===null||e.startPosition.row===this.line)&&l.namedChildren.length===1&&this.testExampleFor("((",l.namedChildren[0]);let p=this.tok(e,"test",this.arithTestExplanation(),[...this.subs(l.namedChildren),...this.subs(a)]);return p.summary=this.s(`\u6761\u4EF6\u5224\u5B9A ${de(e.text,40)}`,`test ${de(e.text,40)}`),p}let c=this.commandHead(t);if(c.name.split("/").pop()==="yq"){let p=ii(r.map(f=>se(f)?.text),{doc:this.source,host:this.opts.host,setting:this.opts.yqFlavor});c.doc=gi[p.flavor],c.explanation=this.t(c.doc.summary),(this.line===null||e.startPosition.row===this.line)&&this.extraNotes.push(...oi(p,this.lang))}let u=this.args(c.doc,r,c.name);this.commandExampleFor(c.name,r),c.name==="read"&&this.readExample(e,r);for(let p of r){let f=this.examples.length;this.wordExample(p),this.anchorExamples(f,p)}let h=this.tok(e,c.kind,c.explanation,Ie([...n,...c.nameTokens,...u,...this.subs(a)]));h.summary=`${c.name}: ${c.explanation}`;let d=c.doc?.subcommands&&u.find(p=>p.kind==="command"&&!p.children.length);return d&&(h.summary=`${c.name} ${d.label}: ${this.t(c.doc.subcommands[d.label]?.summary??c.doc.summary)}`),h}commandHead(e){let t=e.namedChildren[0]??e,n=ce(t)?t.text:e.text;if(!ce(t)&&t.type!=="raw_string")return{name:n,kind:"command",nameTokens:this.sub(t),explanation:this.s("\u5909\u6570\uFF08\u5C55\u958B\u7D50\u679C\uFF09\u3092\u30B3\u30DE\u30F3\u30C9\u540D\u3068\u3057\u3066\u5B9F\u884C\u3059\u308B","Run the expanded value as a command")};let r=this.functions.get(n);if(r!==void 0)return{name:n,kind:"function",nameTokens:[],explanation:this.s(`\u3053\u306E\u30B9\u30AF\u30EA\u30D7\u30C8\u306E\u884C ${r+1} \u3067\u5B9A\u7FA9\u3055\u308C\u305F\u95A2\u6570 \`${n}\` \u3092\u547C\u3073\u51FA\u3059`,`Call the function \`${n}\` defined on line ${r+1}`),doc:{summary:{ja:"",en:""},positional:[]}};let a=os(this.opts.customCommands?.[n.split("/").pop()??n]);if(a)return{name:n,doc:a,kind:"command",nameTokens:[],explanation:this.t(a.summary)+this.s("\uFF08\u8A2D\u5B9A customCommands \u3067\u5B9A\u7FA9\uFF09"," (from the customCommands setting)")};let o=ra(n);if(o)return{name:n,doc:o,kind:o.builtin?"builtin":"command",nameTokens:[],explanation:this.t(o.summary)+(o.builtin?this.s("\uFF08\u30B7\u30A7\u30EB\u7D44\u307F\u8FBC\u307F\uFF09"," (shell builtin)"):"")};let l=n.includes("/")?this.s(`\u30D1\u30B9 \`${n}\` \u306B\u3042\u308B\u30D7\u30ED\u30B0\u30E9\u30E0\u30FB\u30B9\u30AF\u30EA\u30D7\u30C8\u3092\u5B9F\u884C\u3059\u308B`,`Run the program or script at \`${n}\``):this.s(`\u5916\u90E8\u30B3\u30DE\u30F3\u30C9 \`${n}\` \u3092\u5B9F\u884C\u3059\u308B\uFF08\u8F9E\u66F8\u306B\u672A\u767B\u9332\u3002\`man ${n}\` \u3084 \`${n} --help\` \u3092\u53C2\u7167\uFF09`,`Run the external command \`${n}\` (not in the dictionary; see \`man ${n}\`)`);return{name:n,kind:"command",nameTokens:[],explanation:l}}args(e,t,n){if(e&&n.split("/").pop()==="find"){let u=this.findArgs(e,t);if(u)return u}let r=[],a=Ol(e,t)?1:0,o=!1,l=this.functions.has(n),c=this.argCtx;this.argCtx={cmd:n,args:t};try{for(let u=0;u<t.length;u++){let h=t[u],d=h.text;if(!o&&ce(h)&&d==="--"){r.push(this.tok(h,"option",this.s("\u30AA\u30D7\u30B7\u30E7\u30F3\u306E\u7D42\u308F\u308A: \u4EE5\u964D\u306F `-` \u3067\u59CB\u307E\u3063\u3066\u3044\u3066\u3082\u901A\u5E38\u306E\u5F15\u6570\u3068\u3057\u3066\u6271\u3046","End of options: everything after is a plain argument"))),o=!0;continue}let p=h.type==="concatenation"&&/^--[\w-]+=/.test(h.namedChildren[0]?.text??"");if(!o&&(ce(h)||p)&&d.length>1&&(d.startsWith("-")||n==="set"&&d.startsWith("+"))){u=this.option(e,t,u,n,r);continue}if(a===0&&e?.wraps){r.push(this.wrapped(t.slice(u)));break}if(a===0&&ce(h)&&e?.subcommands?.[d]){let _=e.subcommands[d],b=this.args(_,t.slice(u+1),`${n} ${d}`);r.push({...this.tok(h,"command",this.s(`\u30B5\u30D6\u30B3\u30DE\u30F3\u30C9 \`${n} ${d}\`: `,`Subcommand \`${n} ${d}\`: `)+this.t(_.summary)),children:[]},...b);break}let m;l?m=this.s(`\u95A2\u6570\u3078\u306E\u5F15\u6570 $${a+1}`,`Argument $${a+1} to the function`):e?.positional?.length&&(m=this.t(e.positional[Math.min(a,e.positional.length-1)]));let g=l?void 0:e?.positionalLang?.[a];a++,!(this.line!==null&&!he(h,this.line))&&r.push(this.positional(h,m,g))}}finally{this.argCtx=c}return r}positional(e,t,n){let r=n&&this.embedded(e,n);if(r&&t&&r.note&&(t+=` \u2014 ${r.note}`),ce(e)){if(r)return this.tok(e,"argument",t??this.s("\u5F15\u6570","Argument"),r.tokens);let o=this.word(e);if(!t)return o;let l=Es(e.text)?this.s("\uFF08\u30B0\u30ED\u30D6: \u4E00\u81F4\u3059\u308B\u30D5\u30A1\u30A4\u30EB\u540D\u306E\u4E00\u89A7\u306B\u5C55\u958B\u3055\u308C\u308B\uFF09"," (glob: expands to matching file names)"):"";return this.tok(e,"argument",t+l)}let a=this.sub(e);return r&&a[0]&&(a[0].children=Ie([...a[0].children,...r.tokens])),t?this.tok(e,"argument",t,a):a[0]??this.tok(e,"argument",this.s("\u5F15\u6570","Argument"))}embedded(e,t){let n=se(e);return n&&this.embeddedText(n,t,e)}embeddedText(e,t,n){let r=this.examples.length,a=this.embeddedTextInner(e,t,n);return this.anchorExamples(r,n),a}embeddedTextInner(e,t,n){let r,a;switch(t){case"regex":{let o=this.regexFlavor();a=Js(o,this.lang),r=o==="fixed"?[]:Se(e.text,o,this.lang);let l=this.cmdFlags(),c=l.has("-i")||l.has("--ignore-case"),u=o==="fixed"?Ut(e.text,c):ie(e.text,o,{ignoreCase:c});if(u){let h=Dt(u,l.has("-x")||l.has("--line-regexp"),l.has("-w")||l.has("--word-regexp"));this.regexExample(h,l.has("-v")||l.has("--invert-match")?"inverted":"lines")}break}case"sed":{let o=this.regexFlavor();r=Vi(e.text,o==="ere"?"ere":"bre",this.lang);let l=this.cmdFlags(),c=this.sedScripts()??[e.text],u=Xt(c.join(`
88
+ `)return this.tok(e,this.i,"error",a("`s` \u306E\u5F8C\u306B\u533A\u5207\u308A\u6587\u5B57\u304C\u306A\u3044","`s` without a delimiter"),[...t,...c]);this.i++;let u=this.delimited(l);if(!u)return this.i=this.lineEnd(),this.tok(e,this.i,"error",a("`s` \u30B3\u30DE\u30F3\u30C9\u304C\u9589\u3058\u3089\u308C\u3066\u3044\u306A\u3044","Unterminated `s` command"),[...t,...c]);let h=N=>this.tok(N,N+1,"operator",a(`\`${l}\`: \u533A\u5207\u308A\u6587\u5B57`,`\`${l}\`: delimiter`));c.push(h(o+1));let d=r.slice(u[0],u[1]);c.push(this.tok(u[0],u[1],"pattern",d?a(`\u691C\u7D22\u30D1\u30BF\u30FC\u30F3\uFF08\u6B63\u898F\u8868\u73FE\uFF09\`${d}\``,`Pattern (regex) \`${d}\``):a("\u7A7A\u306E\u30D1\u30BF\u30FC\u30F3: \u76F4\u524D\u306B\u4F7F\u3063\u305F\u6B63\u898F\u8868\u73FE\u3092\u518D\u5229\u7528\u3059\u308B","Empty pattern: reuse the last regex"),this.regex(u[0],u[1]))),c.push(h(u[1]));let p=this.delimited(l);if(!p)return this.i=this.lineEnd(),this.tok(e,this.i,"error",a("`s` \u30B3\u30DE\u30F3\u30C9\u304C\u9589\u3058\u3089\u308C\u3066\u3044\u306A\u3044\uFF08\u7F6E\u63DB\u5F8C\u306E\u6587\u5B57\u5217\u306E\u5F8C\u306E\u533A\u5207\u308A\u304C\u306A\u3044\uFF09","Unterminated `s` command"),[...t,...c]);let f=r.slice(p[0],p[1]);f?(c.push(this.tok(p[0],p[1],"string",a(`\u7F6E\u63DB\u5F8C\u306E\u6587\u5B57\u5217 \`${f}\``,`Replacement \`${f}\``),this.replacement(p[0],p[1],l))),c.push(h(p[1]))):c.push(this.tok(p[1],p[1]+1,"operator",a(`\`${l}\`: \u533A\u5207\u308A\u6587\u5B57\u3002\u7F6E\u63DB\u5F8C\u306E\u6587\u5B57\u5217\u304C\u7A7A\u306A\u306E\u3067\u3001\u4E00\u81F4\u3057\u305F\u90E8\u5206\u306F\u524A\u9664\u3055\u308C\u308B`,`\`${l}\`: delimiter; the replacement is empty, so matches are deleted`)));let m=!1,g;for(;this.i<r.length&&/[gpiIeMm0-9w]/.test(r[this.i]);){let N=r[this.i],R=this.i;if(N==="w"){this.i++,this.skipSpaces();let E=this.i;this.i=this.lineEnd(),c.push(this.tok(R,this.i,"option",a(`\`w\`: \u7F6E\u63DB\u304C\u8D77\u304D\u305F\u884C\u3092\u30D5\u30A1\u30A4\u30EB\u300C${r.slice(E,this.i)}\u300D\u306B\u66F8\u304D\u8FBC\u3080`,`\`w\`: write changed lines to "${r.slice(E,this.i)}"`)));break}if(/\d/.test(N)){let E=/^\d+/.exec(r.slice(this.i))[0];this.i+=E.length,g=E,c.push(this.tok(R,this.i,"option",a(`\`${E}\`: ${E} \u756A\u76EE\u306E\u4E00\u81F4\u3060\u3051\u3092\u7F6E\u63DB\u3059\u308B`,`\`${E}\`: replace only the ${E}th match`)));continue}this.i++,N==="g"&&(m=!0);let v={g:["`g`: \u884C\u306E\u4E2D\u306E\u4E00\u81F4\u3092\u3059\u3079\u3066\u7F6E\u63DB\u3059\u308B\uFF08\u4ED8\u3051\u306A\u3044\u3068\u5404\u884C\u306E\u6700\u521D\u306E1\u3064\u3060\u3051\uFF09","`g`: replace every match on the line (without it, only the first)"],p:["`p`: \u7F6E\u63DB\u304C\u8D77\u304D\u305F\u884C\u3092\u51FA\u529B\u3059\u308B\uFF08`-n` \u3068\u7D44\u307F\u5408\u308F\u305B\u3066\u5909\u66F4\u884C\u3060\u3051\u3092\u8868\u793A\uFF09","`p`: print the line if a substitution happened (use with `-n`)"],i:["`i`: \u5927\u6587\u5B57\u30FB\u5C0F\u6587\u5B57\u3092\u533A\u5225\u3057\u306A\u3044","`i`: case-insensitive"],I:["`I`: \u5927\u6587\u5B57\u30FB\u5C0F\u6587\u5B57\u3092\u533A\u5225\u3057\u306A\u3044","`I`: case-insensitive"],m:["`m`: \u8907\u6570\u884C\u30E2\u30FC\u30C9\uFF08`^` `$` \u304C\u5404\u884C\u306E\u5148\u982D\u30FB\u672B\u5C3E\u306B\u4E00\u81F4\uFF09","`m`: multi-line mode (`^`/`$` match at each line)"],M:["`M`: \u8907\u6570\u884C\u30E2\u30FC\u30C9\uFF08`^` `$` \u304C\u5404\u884C\u306E\u5148\u982D\u30FB\u672B\u5C3E\u306B\u4E00\u81F4\uFF09","`M`: multi-line mode (`^`/`$` match at each line)"],e:["`e`: \u7F6E\u63DB\u7D50\u679C\u3092\u30B3\u30DE\u30F3\u30C9\u3068\u3057\u3066\u5B9F\u884C\u3057\u3001\u305D\u306E\u51FA\u529B\u306B\u7F6E\u304D\u63DB\u3048\u308B","`e`: run the result as a command and use its output"]};c.push(this.tok(R,this.i,"option",a(v[N][0],v[N][1])))}let _=m?a("\u3059\u3079\u3066","every match"):g?a(`${g}\u756A\u76EE\u306E\u4E00\u81F4`,`the ${g}th match`):a("\u6700\u521D\u306E1\u3064","the first match"),b=f?`\`${f}\``:a("\u7A7A\u6587\u5B57","nothing"),w=a(`\u7F6E\u63DB: \`${d}\` \u306B\u4E00\u81F4\u3057\u305F\u90E8\u5206\uFF08\u5404\u884C\u306E${_}\uFF09\u3092 ${b} \u306B\u7F6E\u304D\u63DB\u3048\u308B`,`Substitute: replace ${_} of \`${d}\` on each line with ${b}`),y=n?a(`${n}\u306B\u5BFE\u3057\u3066: `,`For ${n}: `):"";return this.tok(e,this.i,"command",y+w,[...t,...c])}replacement(e,t,n){let{src:r,s:a}=this,o=[],l=-1,c=u=>{l>=0&&u>l&&o.push(this.tok(l,u,"string",a(`\u6587\u5B57\u5217\u300C${r.slice(l,u)}\u300D`,`Literal "${r.slice(l,u)}"`))),l=-1};for(let u=e;u<t;u++){let h=r[u];if(h==="&")c(u),o.push(this.tok(u,u+1,"variable",a("`&`: \u4E00\u81F4\u3057\u305F\u90E8\u5206\u5168\u4F53","`&`: the whole match")));else if(h==="\\"&&u+1<t){let d=r[u+1],p={n:["\u6539\u884C","a newline"],t:["\u30BF\u30D6","a tab"],"&":["\u6587\u5B57\u300C&\u300D\u305D\u306E\u3082\u306E",'a literal "&"'],L:["\u4EE5\u964D\u3092\u5C0F\u6587\u5B57\u306B\u3059\u308B","lowercase what follows"],U:["\u4EE5\u964D\u3092\u5927\u6587\u5B57\u306B\u3059\u308B","uppercase what follows"],l:["\u6B21\u306E1\u6587\u5B57\u3092\u5C0F\u6587\u5B57\u306B\u3059\u308B","lowercase the next character"],u:["\u6B21\u306E1\u6587\u5B57\u3092\u5927\u6587\u5B57\u306B\u3059\u308B","uppercase the next character"],E:["`\\L` / `\\U` \u3092\u7D42\u3048\u308B","end `\\L` / `\\U`"]};d===n||d==="\\"?(c(u),o.push(this.tok(u,u+2,"string",d===n?a(`\`\\${d}\`: \u6587\u5B57\u300C${d}\u300D\u305D\u306E\u3082\u306E\uFF08\u533A\u5207\u308A\u6587\u5B57\u3092\u30A8\u30B9\u30B1\u30FC\u30D7\u3057\u3066\u3044\u308B\uFF09`,`\`\\${d}\`: a literal "${d}" (the delimiter, escaped)`):a("`\\\\`: \u6587\u5B57\u300C\\\u300D\u305D\u306E\u3082\u306E","`\\\\`: a literal backslash"))),u++):/[0-9]/.test(d)?(c(u),o.push({...this.tok(u,u+2,"variable",d==="0"?a("`\\0`: \u4E00\u81F4\u3057\u305F\u90E8\u5206\u5168\u4F53","`\\0`: the whole match"):a(`\`\\${d}\`: \u30B0\u30EB\u30FC\u30D7 ${d} \u306B\u4E00\u81F4\u3057\u305F\u90E8\u5206`,`\`\\${d}\`: what group ${d} matched`)),...d!=="0"?{group:Number(d)}:{}}),u++):p[d]?(c(u),o.push(this.tok(u,u+2,/[LUluE]/.test(d)?"operator":"string",`\`\\${d}\`: ${a(p[d][0],p[d][1])}`)),u++):(l<0&&(l=u),u++)}else l<0&&(l=u)}return c(t),o.length===1&&o[0].start===e&&o[0].end===t&&o[0].kind==="string"&&!r.slice(e,t).includes("\\")?[]:o}transliterate(e,t){let{src:n,s:r}=this,a=n[this.i++],o=this.delimited(a),l=o&&this.delimited(a);if(!o||!l)return this.i=this.lineEnd(),this.tok(e,this.i,"error",r("`y` \u30B3\u30DE\u30F3\u30C9\u304C\u9589\u3058\u3089\u308C\u3066\u3044\u306A\u3044","Unterminated `y` command"),t);let c=n.slice(o[0],o[1]),u=n.slice(l[0],l[1]);return this.tok(e,this.i,"command",r(`\u6587\u5B57\u306E\u5909\u63DB: \`${c}\` \u306E\u5404\u6587\u5B57\u3092 \`${u}\` \u306E\u540C\u3058\u4F4D\u7F6E\u306E\u6587\u5B57\u306B\u7F6E\u304D\u63DB\u3048\u308B`,`Transliterate: each character of \`${c}\` becomes the one at the same position in \`${u}\``),[...t,this.tok(e,e+1,"command",r("`y`: 1\u6587\u5B57\u305A\u3064\u5909\u63DB\u3059\u308B","`y`: transliterate characters")),this.tok(o[0],o[1],"pattern",r("\u5909\u63DB\u5143\u306E\u6587\u5B57","characters to replace")),this.tok(l[0],l[1],"string",r("\u5909\u63DB\u5148\u306E\u6587\u5B57","replacement characters"))])}};function Xi(s,e,t){return new Es(s,e,t).parse()}var xe={bash:"bash",sh:"POSIX sh",dash:"dash",ash:"busybox ash",yash:"yash",ksh:"ksh93",mksh:"mksh",zsh:"zsh"};function gn(s,e=""){let t=s.slice(0,2e3),n=/^#\s*shellcheck\s+shell=(\w+)/m.exec(t)?.[1];if(n)return Ss(n);let r=/^#!\s*(.*)/.exec(t);if(r){let o=r[1].trim().split(/\s+/),l=o[0].split("/").pop();if(l==="busybox")return"ash";if(l==="env"){let c=o.slice(1).find(u=>!u.startsWith("-")&&!u.includes("="));return c?Ss(c.split("/").pop()):void 0}return Ss(l)}let a=e.split(/[\\/]/).pop()??"";if(/\.zsh$|^\.?z(shrc|profile|login|logout|shenv)$/.test(a))return"zsh";if(/\.ksh$|^\.?mkshrc$/.test(a))return a.includes("mksh")?"mksh":"ksh";if(/\.bash$|^\.?bash(rc|_profile|_login|_logout|_aliases)$/.test(a))return"bash"}function Ss(s){let e=s.replace(/\d+(\.\d+)*$/,"");if(e==="bash")return"bash";if(e==="sh"||e==="posh")return"sh";if(e==="dash")return"dash";if(e==="ash")return"ash";if(e==="yash")return"yash";if(e==="ksh")return"ksh";if(e==="mksh"||e==="lksh"||e==="pdksh"||e==="oksh")return"mksh";if(e==="zsh")return"zsh"}var Sl={dbracket:{works:"bayk mz",ja:"`[[ ]]`",en:"`[[ ]]`",altJa:"`[ ]` \u3092\u4F7F\u3046",altEn:"use `[ ]`"},regex:{works:"b yk z",ja:"`[[ =~ ]]` \u306E\u6B63\u898F\u8868\u73FE\u30DE\u30C3\u30C1",en:"`[[ =~ ]]` regex matching",altJa:"`expr` \u3084 `grep -E` \u3092\u4F7F\u3046",altEn:"use `expr` or `grep -E`"},array:{works:"b ykmz",ja:"\u914D\u5217",en:"arrays",altJa:"\u4F4D\u7F6E\u30D1\u30E9\u30E1\u30FC\u30BF\uFF08`set -- \u2026`\uFF09\u3092\u4F7F\u3046",altEn:"use the positional parameters (`set -- \u2026`)"},assoc:{works:"b kmz",ja:"\u9023\u60F3\u914D\u5217",en:"associative arrays"},plusAssign:{works:"b kmz",ja:"`+=` \u306B\u3088\u308B\u8FFD\u52A0",en:"appending with `+=`",altJa:'`v="${v}\u2026"` \u3068\u66F8\u304F',altEn:'write `v="${v}\u2026"`'},replace:{works:"b ayk mz",ja:"`${var/pattern/string}` \u306E\u7F6E\u63DB",en:"`${var/pattern/string}` replacement",altJa:"`sed` \u306A\u3069\u3092\u4F7F\u3046",altEn:"use `sed` or similar"},replaceAnchor:{works:"b ykmz",ja:"`${var/#\u2026}` / `${var/%\u2026}` \u306E\u7F6E\u63DB",en:"`${var/#\u2026}` / `${var/%\u2026}` replacement"},caseMod:{works:"b",ja:"`${var^^}` \u306A\u3069\u306E\u5927\u6587\u5B57\u30FB\u5C0F\u6587\u5B57\u5909\u63DB",en:"`${var^^}`-style case conversion",altJa:"`tr` \u3092\u4F7F\u3046",altEn:"use `tr`"},substr:{works:"b a kmz",ja:"`${var:offset:length}` \u306E\u90E8\u5206\u6587\u5B57\u5217",en:"`${var:offset:length}` substrings",altJa:"`cut` \u3084 `expr substr` \u3092\u4F7F\u3046",altEn:"use `cut` or `expr substr`"},indirect:{works:"b",ja:"`${!var}` \u306E\u9593\u63A5\u53C2\u7167",en:"`${!var}` indirection",altJa:"`eval` \u3092\u4F7F\u3046",altEn:"use `eval`"},prefixNames:{works:"b k",ja:"`${!prefix*}` \u306E\u5909\u6570\u540D\u4E00\u89A7",en:"`${!prefix*}` name lists"},arrayKeys:{works:"b km",ja:"`${!array[@]}` \u306E\u30A4\u30F3\u30C7\u30C3\u30AF\u30B9\u4E00\u89A7",en:"`${!array[@]}` index lists"},transform:{works:"b",ja:"`${var@Q}` \u306A\u3069\u306E\u5909\u63DB",en:"`${var@Q}`-style transformations"},negIndex:{works:"b yk z",ja:"\u8CA0\u306E\u6DFB\u5B57 `${a[-1]}`",en:"negative subscripts `${a[-1]}`"},funcKeyword:{works:"b aykmz",ja:"`function` \u30AD\u30FC\u30EF\u30FC\u30C9\u306B\u3088\u308B\u95A2\u6570\u5B9A\u7FA9",en:"the `function` keyword",altJa:"`name() { \u2026 }` \u3068\u66F8\u304F",altEn:"write `name() { \u2026 }`"},herestring:{works:"b ykmz",ja:"\u30D2\u30A2\u30B9\u30C8\u30EA\u30F3\u30B0 `<<<`",en:"here-strings `<<<`",altJa:"`printf '%s\\n' \u2026 |` \u3084\u30D2\u30A2\u30C9\u30AD\u30E5\u30E1\u30F3\u30C8\u3092\u4F7F\u3046",altEn:"use `printf '%s\\n' \u2026 |` or a here-document"},ansiC:{works:"b a kmz",ja:"`$'\u2026'` \u306E\u6587\u5B57\u5217",en:"`$'\u2026'` strings",altJa:"`printf` \u3092\u4F7F\u3046",altEn:"use `printf`"},procSub:{works:"b ayk z",ja:"\u30D7\u30ED\u30BB\u30B9\u7F6E\u63DB `<(\u2026)` / `>(\u2026)`",en:"process substitution `<(\u2026)` / `>(\u2026)`",altJa:"\u4E00\u6642\u30D5\u30A1\u30A4\u30EB\u3084\u540D\u524D\u4ED8\u304D\u30D1\u30A4\u30D7\u3092\u4F7F\u3046",altEn:"use a temporary file or a named pipe"},ampRedirect:{works:"b a kmz",ja:"`&>`\uFF08\u6A19\u6E96\u51FA\u529B\u3068\u6A19\u6E96\u30A8\u30E9\u30FC\u51FA\u529B\u3092\u307E\u3068\u3081\u3066\u30EA\u30C0\u30A4\u30EC\u30AF\u30C8\uFF09",en:"`&>` (redirect stdout and stderr together)",altJa:"`>file 2>&1` \u3068\u66F8\u304F\uFF08dash \u3067\u306F `cmd &> file` \u304C\u300C\u30D0\u30C3\u30AF\u30B0\u30E9\u30A6\u30F3\u30C9\u5B9F\u884C + \u7A7A\u306E\u30EA\u30C0\u30A4\u30EC\u30AF\u30C8\u300D\u3068\u89E3\u91C8\u3055\u308C\u308B\uFF09",altEn:'write `>file 2>&1` (dash reads `cmd &> file` as "run in the background, then an empty redirection")'},ampAppend:{works:"b mz",ja:"`&>>`",en:"`&>>`",altJa:"`>>file 2>&1` \u3068\u66F8\u304F",altEn:"write `>>file 2>&1`"},pipeAmp:{works:"b z",ja:"`|&`\uFF08\u6A19\u6E96\u30A8\u30E9\u30FC\u51FA\u529B\u3082\u30D1\u30A4\u30D7\u306B\u6D41\u3059\uFF09",en:"`|&` (pipe stderr too)",altJa:"`2>&1 |` \u3068\u66F8\u304F",altEn:"write `2>&1 |`"},eqeqTest:{works:"b ayk m",ja:"`[ a == b ]` \u306E `==`",en:"`==` in `[ ]`",altJa:"`=` \u3092\u4F7F\u3046",altEn:"use `=`"},arithCommand:{works:"b kmz",ja:"\u7B97\u8853\u30B3\u30DE\u30F3\u30C9 `(( ))`",en:"the arithmetic command `(( ))`",altJa:'`[ "$((\u5F0F))" -ne 0 ]` \u3068\u66F8\u304F',altEn:'write `[ "$((expr))" -ne 0 ]`'},cFor:{works:"b k z",ja:"C \u8A00\u8A9E\u98A8\u306E `for (( ; ; ))`",en:"C-style `for (( ; ; ))`",altJa:"`while` \u3068 `$(( ))` \u3067\u66F8\u304F",altEn:"use `while` with `$(( ))`"},braceRange:{works:"b k z",ja:"\u30D6\u30EC\u30FC\u30B9\u5C55\u958B `{1..3}`",en:"brace ranges `{1..3}`",altJa:"`seq` \u3092\u4F7F\u3046",altEn:"use `seq`"},braceList:{works:"b kmz",ja:"\u30D6\u30EC\u30FC\u30B9\u5C55\u958B `{a,b}`",en:"brace expansion `{a,b}`"},caseFall:{works:"b kmz",ja:"`case` \u306E `;&`\uFF08\u6B21\u306E\u5206\u5C90\u3078\u7D9A\u3051\u308B\uFF09",en:"`;&` in `case` (fall through)"},caseCont:{works:"b m",ja:"`case` \u306E `;;&`\uFF08\u7D9A\u3051\u3066\u6B21\u306E\u30D1\u30BF\u30FC\u30F3\u3082\u8ABF\u3079\u308B\uFF09",en:"`;;&` in `case` (test the next patterns too)"},extglob:{works:"b km",ja:"\u62E1\u5F35\u30B0\u30ED\u30D6 `@(\u2026)` \u306A\u3069",en:"extended globs like `@(\u2026)`"},select:{works:"b kmz",ja:"`select` \u30EB\u30FC\u30D7",en:"`select` loops"},local:{works:"bday mz",ja:"`local`",en:"`local`"},declare:{works:"b z",ja:"`declare`",en:"`declare`"},typeset:{works:"b ykmz",ja:"`typeset`",en:"`typeset`"},readarray:{works:"b",ja:"`readarray` / `mapfile`",en:"`readarray` / `mapfile`",altJa:"`while read` \u30671\u884C\u305A\u3064\u8AAD\u3080",altEn:"read lines with `while read`"},source:{works:"b a kmz",ja:"`source`",en:"`source`",altJa:"`.` \u3092\u4F7F\u3046",altEn:"use `.`"},let:{works:"b a kmz",ja:"`let`",en:"`let`",altJa:"`$(( ))` \u3092\u4F7F\u3046",altEn:"use `$(( ))`"},shopt:{works:"b",ja:"`shopt`",en:"`shopt`"},pushd:{works:"b y z",ja:"`pushd` / `popd`",en:"`pushd` / `popd`",altJa:"`cd` \u3068\u5909\u6570\u3067\u623B\u308A\u5148\u3092\u899A\u3048\u308B",altEn:"remember the directory in a variable and `cd`"},exportF:{works:"b",ja:"`export -f`",en:"`export -f`"},waitN:{works:"b a",ja:"`wait -n`",en:"`wait -n`"},coproc:{works:"b z",ja:"`coproc`",en:"`coproc`"},print:{works:" kmz",ja:"`print`",en:"`print`",altJa:"`printf '%s\\n'` \u3092\u4F7F\u3046",altEn:"use `printf '%s\\n'`"},whence:{works:" kmz",ja:"`whence`",en:"`whence`",altJa:"`command -v` \u3092\u4F7F\u3046",altEn:"use `command -v`"},typeT:{works:"b k",ja:"`type -t`",en:"`type -t`",altJa:"`command -v` \u3092\u4F7F\u3046",altEn:"use `command -v`"},printfV:{works:"b k z",ja:"`printf -v`",en:"`printf -v`",altJa:"`v=$(printf \u2026)` \u3068\u66F8\u304F",altEn:"write `v=$(printf \u2026)`"},printfQ:{works:"b z",ja:"`printf %q`",en:"`printf %q`"},echoE:{works:"b a kmz",ja:"`echo -e`",en:"`echo -e`",altJa:"`printf` \u3092\u4F7F\u3046\uFF08dash \u306E echo \u306F `-e` \u3092\u6587\u5B57\u3068\u3057\u3066\u8868\u793A\u3057\u3001`\\t` \u306A\u3069\u306F\u5E38\u306B\u89E3\u91C8\u3059\u308B\uFF09",altEn:"use `printf` (dash prints `-e` literally and always interprets `\\t` and friends)"},echoN:{works:"bda kmz",ja:"`echo -n`",en:"`echo -n`",altJa:"`printf` \u3092\u4F7F\u3046",altEn:"use `printf`"},readA:{works:"b k",ja:"`read -a`",en:"`read -a`"},readP:{works:"bday",ja:"`read -p`\uFF08\u30D7\u30ED\u30F3\u30D7\u30C8\uFF09",en:"`read -p` (prompt)",altJa:"`printf` \u3067\u30D7\u30ED\u30F3\u30D7\u30C8\u3092\u51FA\u3057\u3066\u304B\u3089 `read` \u3059\u308B\uFF08ksh/mksh/zsh \u306E `-p` \u306F\u5225\u306E\u610F\u5473\uFF09",altEn:"print the prompt with `printf`, then `read` (`-p` means something else in ksh, mksh and zsh)"},readOpts:{works:"b a kmz",ja:"`read` \u306E `-n` / `-s` / `-t` / `-d`",en:"`read -n` / `-s` / `-t` / `-d`"},pipefail:{works:"b aykmz",ja:"`set -o pipefail`",en:"`set -o pipefail`"},trapErr:{works:"b a kmz",ja:"`trap \u2026 ERR`",en:"`trap \u2026 ERR`"},errtrace:{works:"bda z",ja:"`set -E`",en:"`set -E`"},random:{works:"b aykmz",ja:"`$RANDOM`",en:"`$RANDOM`",altJa:"`awk 'BEGIN{srand(); print int(rand()*32768)}'` \u306A\u3069\u3092\u4F7F\u3046",altEn:"use e.g. `awk 'BEGIN{srand(); print int(rand()*32768)}'`"},seconds:{works:"b kmz",ja:"`$SECONDS`",en:"`$SECONDS`"},pipestatus:{works:"b m",ja:"`$PIPESTATUS`",en:"`$PIPESTATUS`"},bashVar:{works:"b",ja:"bash \u5C02\u7528\u306E\u5909\u6570",en:"bash-only variables"},funcname:{works:"b a",ja:"`$FUNCNAME`",en:"`$FUNCNAME`"},uid:{works:"b z",ja:"`$UID` / `$EUID`",en:"`$UID` / `$EUID`",altJa:"`$(id -u)` \u3092\u4F7F\u3046",altEn:"use `$(id -u)`"},hostname:{works:"b a",ja:"`$HOSTNAME`",en:"`$HOSTNAME`",altJa:"`$(hostname)` \u3092\u4F7F\u3046",altEn:"use `$(hostname)`"}},Nl={echoEscape:{differs:"dymz",ja:s=>`${s} \u306E \`echo\` \u306F\u5F15\u6570\u306E \`\\t\` \u3084 \`\\n\` \u306A\u3069\u3092\u89E3\u91C8\u3057\u307E\u3059\uFF08bash \u306F\u6587\u5B57\u306E\u307E\u307E\u8868\u793A\uFF09\u3002\u3069\u3061\u3089\u3067\u3082\u540C\u3058\u306B\u3059\u308B\u306B\u306F \`printf\` \u3092\u4F7F\u3044\u307E\u3059\u3002`,en:s=>`${s}'s \`echo\` interprets \`\\t\`, \`\\n\` and the like in its arguments (bash prints them as they are). Use \`printf\` to get the same result everywhere.`},wordSplit:{differs:"z",ja:s=>`${s} \u3067\u306F\u30AF\u30A9\u30FC\u30C8\u3057\u306A\u3044 \`$\u5909\u6570\` \u3082\u5358\u8A9E\u5206\u5272\u30FB\u30B0\u30ED\u30D6\u5C55\u958B\u3055\u308C\u307E\u305B\u3093\uFF08bash \u3067\u306F\u7A7A\u767D\u3067\u5206\u304B\u308C\u307E\u3059\uFF09\u3002`,en:s=>`In ${s} an unquoted \`$var\` is not split into words or globbed (bash splits it on spaces).`},typesetScope:{differs:"k",ja:s=>`${s} \u3067\u306F \`name() { \u2026 }\` \u306E\u5F62\u306E\u95A2\u6570\u306E\u4E2D\u306E \`typeset\` \u306F\u30ED\u30FC\u30AB\u30EB\u5909\u6570\u306B\u306A\u308A\u307E\u305B\u3093\uFF08\u30B0\u30ED\u30FC\u30D0\u30EB\u5909\u6570\u3092\u5909\u66F4\u3057\u307E\u3059\uFF09\u3002\u30ED\u30FC\u30AB\u30EB\u306B\u3059\u308B\u306B\u306F \`function name { \u2026 }\` \u306E\u5F62\u3067\u5B9A\u7FA9\u3057\u307E\u3059\u3002`,en:s=>`In ${s}, \`typeset\` inside a function written \`name() { \u2026 }\` does not make a local variable (it changes the global one); define the function as \`function name { \u2026 }\` for local scope.`},arrayBase:{differs:"yz",ja:s=>`${s} \u306E\u914D\u5217\u306E\u6DFB\u5B57\u306F 1 \u304B\u3089\u59CB\u307E\u308A\u307E\u3059\uFF08bash \u306F 0 \u304B\u3089\uFF09\u3002\u3053\u306E\u89E3\u8AAC\u306F bash \u306E\u6570\u3048\u65B9\u3067\u3059\u3002`,en:s=>`Array subscripts start at 1 in ${s} (bash starts at 0); this explanation counts the bash way.`}};function na(s,e,t,n){let r=a=>{a.startPosition.row>t||a.endPosition.row<e||(a.startPosition.row>=e&&n(a),a.children.forEach(r))};r(s)}function Tl(s,e,t){let n=[];return na(s,e,t,r=>{let a=o=>n.push({id:o,node:r});if(r.type==="command"&&r.childForFieldName("name")?.text==="echo"&&r.namedChildren.slice(1).some(o=>/\\[abcefnrtv\\0]/.test(o.type==="raw_string"?o.text:o.type==="string"?o.text.replace(/\\\\/g,"\\"):""))&&a("echoEscape"),r.type==="simple_expansion"&&(r.parent?.type==="command"||r.parent?.type==="concatenation"&&r.parent.parent?.type==="command")&&a("wordSplit"),r.type==="declaration_command"&&r.child(0)?.text==="typeset"){let o=r.parent;for(;o&&o.type!=="function_definition";)o=o.parent;o&&o.child(0)?.type!=="function"&&a("typesetScope")}if(r.type==="expansion"){let o=Et(r.text.trimStart());o?.subscript&&/^\d+$/.test(o.subscript)&&a("arrayBase")}}),n}var Ns={bash:"b",dash:"d",ash:"a",yash:"y",ksh:"k",mksh:"m",zsh:"z"};function Qi(s,e){return s.works.includes(Ns[e])}function Ml(s,e,t){let n=[];return na(s,e,t,r=>Rl(r,r.children.map(a=>a.type),a=>n.push({id:a,node:r}))),n}function Rl(s,e,t){switch(s.type){case"test_command":{let n=s.child(0)?.type;n==="[["?(t("dbracket"),s.descendantsOfType("=~").length&&t("regex")):n==="(("?t("arithCommand"):n==="["&&s.descendantsOfType("==").length&&t("eqeqTest");return}case"command":{let n=s.childForFieldName("name");if(n?.text.startsWith("((")){t("arithCommand");return}let r=s.namedChildren.filter(a=>a.id!==n?.id).map(a=>a.text);ta(n?.text??"",r,t);return}case"declaration_command":{let n=s.children.slice(1).map(r=>r.text);ta(s.child(0)?.text??"",n,t);return}case"brace_expression":t("braceRange");return;case"c_style_for_statement":t("cFor");return;case"select_statement":t("select");return;case"function_definition":e[0]==="function"&&t("funcKeyword");return;case"herestring_redirect":t("herestring");return;case"ansi_c_string":t("ansiC");return;case"process_substitution":t("procSub");return;case"file_redirect":e.includes("&>")&&t("ampRedirect"),e.includes("&>>")&&t("ampAppend");return;case"pipeline":e.includes("|&")&&t("pipeAmp");return;case"case_item":e.includes(";&")&&t("caseFall"),e.includes(";;&")&&t("caseCont");return;case"extglob_pattern":/[@!?*+]\(/.test(s.text)&&t("extglob");return;case"variable_assignment":{s.childForFieldName("value")?.type==="array"&&t("array"),e.includes("+=")&&t("plusAssign");return}case"expansion":{let n=Et(s.text.trimStart());if(!n)return;n.subscript!==void 0&&t(/^-\d/.test(n.subscript)?"negIndex":"array"),n.prefix==="!"&&t(n.op==="*"||n.op==="@"?"prefixNames":n.subscript==="@"||n.subscript==="*"?"arrayKeys":"indirect"),(n.op==="/"||n.op==="//")&&t("replace"),(n.op==="/#"||n.op==="/%")&&t("replaceAnchor"),n.op&&/^[\^,]{1,2}$/.test(n.op)&&t("caseMod"),n.op===":"&&t("substr"),n.op==="@"&&t("transform"),ea(n.name,t);return}case"simple_expansion":ea(s.text.slice(1),t);return;case"word":case"concatenation":{if(s.parent?.type==="string"||s.parent?.type==="concatenation")return;let n=s.type==="word"?s.text:s.children.filter(r=>r.type==="word"||r.type==="{"||r.type==="}"||r.type===",").map(r=>r.text).join("");/\{-?\w+\.\.-?\w+(\.\.-?\d+)?\}/.test(n)?t("braceRange"):/\{[^{}\s'"]*,[^{}\s'"]*\}/.test(n)&&t("braceList"),/[@!?+]\([^)]*\)/.test(n)&&t("extglob");return}}}function ea(s,e){s==="RANDOM"?e("random"):s==="SECONDS"?e("seconds"):s==="PIPESTATUS"?e("pipestatus"):s==="FUNCNAME"?e("funcname"):s==="UID"||s==="EUID"?e("uid"):s==="HOSTNAME"?e("hostname"):/^BASH_|^BASHPID$|^BASHOPTS$|^EPOCH(SECONDS|REALTIME)$/.test(s)&&e("bashVar")}function ta(s,e,t){let n=e.filter(r=>/^-[a-zA-Z]+$/.test(r)).join("").replace(/-/g,"");switch(s){case"declare":t(e.some(r=>/^-\w*A/.test(r))?"assoc":"declare");break;case"typeset":t(e.some(r=>/^-\w*A/.test(r))?"assoc":"typeset");break;case"local":t("local");break;case"readarray":case"mapfile":t("readarray");break;case"source":t("source");break;case"let":t("let");break;case"shopt":t("shopt");break;case"pushd":case"popd":case"dirs":t("pushd");break;case"coproc":t("coproc");break;case"print":t("print");break;case"whence":t("whence");break;case"export":/f/.test(n)&&t("exportF");break;case"wait":/n/.test(n)&&t("waitN");break;case"type":/t/.test(n)&&t("typeT");break;case"printf":e[0]==="-v"&&t("printfV"),e.some(r=>/%q/.test(r))&&t("printfQ");break;case"echo":{let r=e.filter((a,o)=>/^-[neE]+$/.test(a)&&e.slice(0,o).every(l=>/^-[neE]+$/.test(l))).join("");/e/.test(r)&&t("echoE"),/n/.test(r)&&t("echoN");break}case"read":/a/.test(n)&&t("readA"),/p/.test(n)&&t("readP"),/[nstd]/.test(n)&&t("readOpts");break;case"set":e.some((r,a)=>r==="pipefail"&&/^-\w*o$/.test(e[a-1]??""))&&t("pipefail"),(/E/.test(n)||e.some((r,a)=>r==="errtrace"&&/^-\w*o$/.test(e[a-1]??"")))&&t("errtrace");break;case"trap":e.slice(1).some(r=>r==="ERR")&&t("trapErr");break}}function Al(s,e,t){let n=O(t),r=Sl[s],a=n(r.ja,r.en),o=r.altJa?n(`\u4EE3\u308F\u308A\u306B ${r.altJa}\u3002`,` Instead, ${r.altEn}.`):"";if(e==="sh"){if(r.posix)return;let l=["dash","ash"].filter(c=>!Qi(r,c)).map(c=>xe[c]);return n(`\u26A0 ${a}\u306F POSIX sh \u306B\u306A\u3044\u66F8\u304D\u65B9\u3067\u3059${l.length?`\uFF08${l.join("\u30FB")} \u3067\u306F\u52D5\u304D\u307E\u305B\u3093\uFF09`:"\uFF08dash\u30FBbusybox ash \u3067\u306F\u52D5\u304D\u307E\u3059\u304C\u3001POSIX \u306B\u306F\u3042\u308A\u307E\u305B\u3093\uFF09"}\u3002${o}`,`\u26A0 ${a} is not POSIX sh${l.length?` (it fails in ${l.join(" and ")})`:" (dash and busybox ash accept it, but POSIX does not have it)"}.${o}`)}if(!(e==="bash"||Qi(r,e)))return n(`\u26A0 ${a}\u306F ${xe[e]} \u3067\u306F\u4F7F\u3048\u307E\u305B\u3093\u3002${o}`,`\u26A0 ${a} is not available in ${xe[e]}.${o}`)}function Cl(s,e,t){let n=O(t),r=Nl[s],a=e==="sh"?["dash","ash"].filter(o=>r.differs.includes(Ns[o])):e!=="bash"&&r.differs.includes(Ns[e])?[e]:[];return a.length?"\u2139 "+n(r.ja(a.map(o=>xe[o]).join("\u30FB")),r.en(a.map(o=>xe[o]).join(" and "))):void 0}function Ts(s,e,t,n=[]){return!s.hasError||s.startPosition.row>t||s.endPosition.row<e||((s.type==="ERROR"||s.isMissing)&&s.startPosition.row>=e&&!n.some(r=>r.startPosition.row===s.startPosition.row)&&n.push(s),s.children.forEach(r=>Ts(r,e,t,n))),n}var sa=["\u3053\u306E\u884C\u306B\u306F\u89E3\u6790\u3067\u304D\u306A\u3044\u90E8\u5206\u304C\u3042\u308A\u307E\u3059\u3002zsh \u72EC\u81EA\u306E\u66F8\u304D\u65B9\uFF08\u30B0\u30ED\u30D6\u4FEE\u98FE\u5B50 `*(.)`\u3001\u30D1\u30E9\u30E1\u30FC\u30BF\u30D5\u30E9\u30B0 `${(f)var}` \u306A\u3069\uFF09\u306F\u89E3\u8AAC\u3067\u304D\u307E\u305B\u3093\u3002","Part of this line could not be parsed. zsh-only syntax (glob qualifiers like `*(.)`, parameter flags like `${(f)var}`\u2026) is not explained."];function At(s,e,t,n=0,r=s.endPosition.row){if(e==="bash")return[];let a=[];if(e==="zsh")for(let o of Ts(s,n,r))a.push({id:"zshSyntax",kind:"parse",node:o,message:sa[t==="ja"?0:1]});for(let o of Tl(s,n,r)){let l=Cl(o.id,e,t);l&&a.push({id:o.id,kind:"behaviour",message:l,node:o.node})}for(let o of Ml(s,n,r)){let l=Al(o.id,e,t);l&&a.push({id:o.id,kind:"unsupported",message:l,node:o.node})}return a}function ra(s,e,t,n){let r=At(s,t,n,e,e).filter(o=>o.kind!=="parse"),a=t==="zsh"&&Ts(s,0,s.endPosition.row).some(o=>o.startPosition.row<=e&&o.endPosition.row>=e)?[sa[n==="ja"?0:1]]:[];return[...new Set([...a,...r.map(o=>o.message)])]}var ia={">":(s,e)=>x(`${ne(s,"1").ja}\u3092\u30D5\u30A1\u30A4\u30EB \`${e}\` \u306B\u66F8\u304D\u8FBC\u3080\uFF08\u65E2\u5B58\u306E\u5185\u5BB9\u306F\u4E0A\u66F8\u304D\uFF09`,`Write ${ne(s,"1").en} to file \`${e}\` (overwrite)`),">>":(s,e)=>x(`${ne(s,"1").ja}\u3092\u30D5\u30A1\u30A4\u30EB \`${e}\` \u306E\u672B\u5C3E\u306B\u8FFD\u8A18\u3059\u308B`,`Append ${ne(s,"1").en} to the end of file \`${e}\``),"<":(s,e)=>x(`\u30D5\u30A1\u30A4\u30EB \`${e}\` \u306E\u5185\u5BB9\u3092${ne(s,"0").ja}\u3068\u3057\u3066\u8AAD\u307F\u8FBC\u3080`,`Read file \`${e}\` as ${ne(s,"0").en}`),">|":(s,e)=>x(`${ne(s,"1").ja}\u3092\u30D5\u30A1\u30A4\u30EB \`${e}\` \u306B\u66F8\u304D\u8FBC\u3080\uFF08\`set -o noclobber\` \u3067\u3082\u5F37\u5236\u7684\u306B\u4E0A\u66F8\u304D\uFF09`,`Write ${ne(s,"1").en} to \`${e}\`, overwriting even with \`noclobber\` set`),"<>":(s,e)=>x(`\u30D5\u30A1\u30A4\u30EB \`${e}\` \u3092\u8AAD\u307F\u66F8\u304D\u4E21\u7528\u3067${ne(s,"0").ja}\u3068\u3057\u3066\u958B\u304F`,`Open \`${e}\` for reading and writing as ${ne(s,"0").en}`),"&>":(s,e)=>x(`\u6A19\u6E96\u51FA\u529B\u3068\u6A19\u6E96\u30A8\u30E9\u30FC\u51FA\u529B\u306E\u4E21\u65B9\u3092\u30D5\u30A1\u30A4\u30EB \`${e}\` \u306B\u66F8\u304D\u8FBC\u3080\uFF08\u4E0A\u66F8\u304D\uFF09`,`Write both stdout and stderr to \`${e}\` (overwrite)`),"&>>":(s,e)=>x(`\u6A19\u6E96\u51FA\u529B\u3068\u6A19\u6E96\u30A8\u30E9\u30FC\u51FA\u529B\u306E\u4E21\u65B9\u3092\u30D5\u30A1\u30A4\u30EB \`${e}\` \u306B\u8FFD\u8A18\u3059\u308B`,`Append both stdout and stderr to \`${e}\``),">&":(s,e)=>Il(s,e),"<&":(s,e)=>e==="-"?x(`${ne(s,"0").ja}\u3092\u9589\u3058\u308B`,`Close ${ne(s,"0").en}`):x(`${ne(s,"0").ja}\u3092 ${ne(e,e).ja} \u306E\u8907\u88FD\u306B\u3059\u308B\uFF08\u5165\u529B\u5143\u3092\u5171\u6709\uFF09`,`Make ${ne(s,"0").en} a copy of ${ne(e,e).en}`)};function Il(s,e){return e==="-"?x(`${ne(s,"1").ja}\u3092\u9589\u3058\u308B`,`Close ${ne(s,"1").en}`):/^\d+$/.test(e)?x(`${ne(s,"1").ja}\u3092 ${ne(e,e).ja} \u3068\u540C\u3058\u51FA\u529B\u5148\u306B\u5411\u3051\u308B`,`Send ${ne(s,"1").en} to the same place as ${ne(e,e).en}`):x(`\u6A19\u6E96\u51FA\u529B\u3068\u6A19\u6E96\u30A8\u30E9\u30FC\u51FA\u529B\u306E\u4E21\u65B9\u3092\u30D5\u30A1\u30A4\u30EB \`${e}\` \u306B\u66F8\u304D\u8FBC\u3080`,`Write both stdout and stderr to \`${e}\``)}function ne(s,e){let t=s||e;return t==="0"?x("\u6A19\u6E96\u5165\u529B(fd 0)","stdin (fd 0)"):t==="1"?x("\u6A19\u6E96\u51FA\u529B(fd 1)","stdout (fd 1)"):t==="2"?x("\u6A19\u6E96\u30A8\u30E9\u30FC\u51FA\u529B(fd 2)","stderr (fd 2)"):x(`\u30D5\u30A1\u30A4\u30EB\u30C7\u30A3\u30B9\u30AF\u30EA\u30D7\u30BF ${t}`,`file descriptor ${t}`)}var aa={"/dev/null":x("`/dev/null` \u306F\u66F8\u304D\u8FBC\u3093\u3060\u5185\u5BB9\u3092\u6368\u3066\u308B\u7279\u6B8A\u30D5\u30A1\u30A4\u30EB\uFF08\u51FA\u529B\u3092\u6368\u3066\u308B\u5B9A\u756A\uFF09","`/dev/null` discards everything written to it"),"/dev/stderr":x("`/dev/stderr` \u306F\u6A19\u6E96\u30A8\u30E9\u30FC\u51FA\u529B\u3092\u6307\u3059","`/dev/stderr` refers to standard error"),"/dev/stdout":x("`/dev/stdout` \u306F\u6A19\u6E96\u51FA\u529B\u3092\u6307\u3059","`/dev/stdout` refers to standard output")},Ms={":-":(s,e)=>x(`\`${s}\` \u304C\u672A\u8A2D\u5B9A\u307E\u305F\u306F\u7A7A\u306A\u3089 \`${e}\` \u3092\u4F7F\u3046\uFF08\u5909\u6570\u81EA\u4F53\u306F\u5909\u66F4\u3057\u306A\u3044\uFF09`,`Use \`${e}\` if \`${s}\` is unset or empty (does not assign)`),"-":(s,e)=>x(`\`${s}\` \u304C\u672A\u8A2D\u5B9A\u306A\u3089 \`${e}\` \u3092\u4F7F\u3046\uFF08\u7A7A\u6587\u5B57\u306F\u305D\u306E\u307E\u307E\uFF09`,`Use \`${e}\` if \`${s}\` is unset (empty is kept)`),":=":(s,e)=>x(`\`${s}\` \u304C\u672A\u8A2D\u5B9A\u307E\u305F\u306F\u7A7A\u306A\u3089 \`${e}\` \u3092\u4EE3\u5165\u3057\u3066\u305D\u306E\u5024\u3092\u4F7F\u3046`,`If \`${s}\` is unset or empty, assign \`${e}\` to it and use that`),"=":(s,e)=>x(`\`${s}\` \u304C\u672A\u8A2D\u5B9A\u306A\u3089 \`${e}\` \u3092\u4EE3\u5165\u3057\u3066\u305D\u306E\u5024\u3092\u4F7F\u3046`,`If \`${s}\` is unset, assign \`${e}\` to it`),":+":(s,e)=>x(`\`${s}\` \u304C\u8A2D\u5B9A\u6E08\u307F\u304B\u3064\u7A7A\u3067\u306A\u3051\u308C\u3070 \`${e}\` \u3092\u4F7F\u3044\u3001\u305D\u3046\u3067\u306A\u3051\u308C\u3070\u7A7A`,`Use \`${e}\` if \`${s}\` is set and non-empty, otherwise nothing`),"+":(s,e)=>x(`\`${s}\` \u304C\u8A2D\u5B9A\u6E08\u307F\u306A\u3089 \`${e}\` \u3092\u4F7F\u3044\u3001\u672A\u8A2D\u5B9A\u306A\u3089\u7A7A`,`Use \`${e}\` if \`${s}\` is set, otherwise nothing`),":?":(s,e)=>x(`\`${s}\` \u304C\u672A\u8A2D\u5B9A\u307E\u305F\u306F\u7A7A\u306A\u3089\u30A8\u30E9\u30FC\u30E1\u30C3\u30BB\u30FC\u30B8\u300C${e||"parameter null or not set"}\u300D\u3092\u51FA\u3057\u3066\u30B9\u30AF\u30EA\u30D7\u30C8\u3092\u7D42\u4E86`,`Exit with error "${e||"parameter null or not set"}" if \`${s}\` is unset or empty`),"?":(s,e)=>x(`\`${s}\` \u304C\u672A\u8A2D\u5B9A\u306A\u3089\u30A8\u30E9\u30FC\u30E1\u30C3\u30BB\u30FC\u30B8\u300C${e||"parameter not set"}\u300D\u3092\u51FA\u3057\u3066\u7D42\u4E86`,`Exit with error "${e||"parameter not set"}" if \`${s}\` is unset`),"#":(s,e)=>x(`\`${s}\` \u306E\u5148\u982D\u304B\u3089\u30D1\u30BF\u30FC\u30F3 \`${e}\` \u306B\u4E00\u81F4\u3059\u308B\u6700\u77ED\u90E8\u5206\u3092\u524A\u9664`,`Remove the shortest prefix of \`${s}\` matching \`${e}\``),"##":(s,e)=>x(`\`${s}\` \u306E\u5148\u982D\u304B\u3089\u30D1\u30BF\u30FC\u30F3 \`${e}\` \u306B\u4E00\u81F4\u3059\u308B\u6700\u9577\u90E8\u5206\u3092\u524A\u9664`,`Remove the longest prefix of \`${s}\` matching \`${e}\``),"%":(s,e)=>x(`\`${s}\` \u306E\u672B\u5C3E\u304B\u3089\u30D1\u30BF\u30FC\u30F3 \`${e}\` \u306B\u4E00\u81F4\u3059\u308B\u6700\u77ED\u90E8\u5206\u3092\u524A\u9664\uFF08\u62E1\u5F35\u5B50\u9664\u53BB\u306A\u3069\u306B\u4F7F\u3046\uFF09`,`Remove the shortest suffix of \`${s}\` matching \`${e}\` (e.g. strip an extension)`),"%%":(s,e)=>x(`\`${s}\` \u306E\u672B\u5C3E\u304B\u3089\u30D1\u30BF\u30FC\u30F3 \`${e}\` \u306B\u4E00\u81F4\u3059\u308B\u6700\u9577\u90E8\u5206\u3092\u524A\u9664`,`Remove the longest suffix of \`${s}\` matching \`${e}\``),"/":(s,e)=>we(e)===""?x(`\`${s}\` \u5185\u3067\u6700\u521D\u306B \`${le(e)}\` \u306B\u4E00\u81F4\u3057\u305F\u90E8\u5206\u3092\u524A\u9664`,`Delete the first match of \`${le(e)}\` in \`${s}\``):x(`\`${s}\` \u5185\u3067\u6700\u521D\u306B \`${le(e)}\` \u306B\u4E00\u81F4\u3057\u305F\u90E8\u5206\u3092 \`${we(e)}\` \u306B\u7F6E\u63DB`,`Replace the first match of \`${le(e)}\` in \`${s}\` with \`${we(e)}\``),"//":(s,e)=>we(e)===""?x(`\`${s}\` \u5185\u3067 \`${le(e)}\` \u306B\u4E00\u81F4\u3059\u308B\u90E8\u5206\u3092\u3059\u3079\u3066\u524A\u9664`,`Delete every match of \`${le(e)}\` in \`${s}\``):x(`\`${s}\` \u5185\u3067 \`${le(e)}\` \u306B\u4E00\u81F4\u3059\u308B\u90E8\u5206\u3092\u3059\u3079\u3066 \`${we(e)}\` \u306B\u7F6E\u63DB`,`Replace every match of \`${le(e)}\` in \`${s}\` with \`${we(e)}\``),"/#":(s,e)=>we(e)===""?x(`\`${s}\` \u306E\u5148\u982D\u304C \`${le(e)}\` \u306B\u4E00\u81F4\u3059\u308C\u3070\u524A\u9664`,`Delete \`${le(e)}\` at the start of \`${s}\``):x(`\`${s}\` \u306E\u5148\u982D\u304C \`${le(e)}\` \u306B\u4E00\u81F4\u3059\u308C\u3070 \`${we(e)}\` \u306B\u7F6E\u63DB`,`Replace \`${le(e)}\` at the start of \`${s}\` with \`${we(e)}\``),"/%":(s,e)=>we(e)===""?x(`\`${s}\` \u306E\u672B\u5C3E\u304C \`${le(e)}\` \u306B\u4E00\u81F4\u3059\u308C\u3070\u524A\u9664`,`Delete \`${le(e)}\` at the end of \`${s}\``):x(`\`${s}\` \u306E\u672B\u5C3E\u304C \`${le(e)}\` \u306B\u4E00\u81F4\u3059\u308C\u3070 \`${we(e)}\` \u306B\u7F6E\u63DB`,`Replace \`${le(e)}\` at the end of \`${s}\` with \`${we(e)}\``),"^":s=>x(`\`${s}\` \u306E\u5148\u982D\u6587\u5B57\u3092\u5927\u6587\u5B57\u306B\u3059\u308B`,`Uppercase the first character of \`${s}\``),"^^":s=>x(`\`${s}\` \u3092\u5168\u3066\u5927\u6587\u5B57\u306B\u3059\u308B`,`Uppercase all of \`${s}\``),",":s=>x(`\`${s}\` \u306E\u5148\u982D\u6587\u5B57\u3092\u5C0F\u6587\u5B57\u306B\u3059\u308B`,`Lowercase the first character of \`${s}\``),",,":s=>x(`\`${s}\` \u3092\u5168\u3066\u5C0F\u6587\u5B57\u306B\u3059\u308B`,`Lowercase all of \`${s}\``),":":(s,e)=>x(`\`${s}\` \u306E\u90E8\u5206\u6587\u5B57\u5217\uFF08\u30AA\u30D5\u30BB\u30C3\u30C8:\u9577\u3055 = \`${e}\`\uFF09\u3092\u53D6\u308A\u51FA\u3059`,`Substring of \`${s}\` (offset:length = \`${e}\`)`),"@":(s,e)=>x(`\`${s}\` \u306B\u5909\u63DB \`@${e}\` \u3092\u9069\u7528\uFF08Q:\u30AF\u30A9\u30FC\u30C8, E:\u30A8\u30B9\u30B1\u30FC\u30D7\u5C55\u958B, U/L:\u5927\u5C0F\u6587\u5B57, a:\u5C5E\u6027 \u306A\u3069\uFF09`,`Apply transformation \`@${e}\` to \`${s}\` (Q quote, E escapes, U/L case, a attributes\u2026)`)};function le(s){let e=s.indexOf("/");return e<0?s:s.slice(0,e)}function we(s){let e=s.indexOf("/");return e<0?"":s.slice(e+1)}var Rs={"?":x("\u76F4\u524D\u306B\u5B9F\u884C\u3057\u305F\u30B3\u30DE\u30F3\u30C9\u306E\u7D42\u4E86\u30B9\u30C6\u30FC\u30BF\u30B9\uFF080 \u306F\u6210\u529F\uFF09","Exit status of the last command (0 = success)"),"@":x('\u5168\u3066\u306E\u4F4D\u7F6E\u30D1\u30E9\u30E1\u30FC\u30BF\u3002`"$@"` \u3068\u3059\u308B\u3068\u5404\u5F15\u6570\u3092\u5225\u3005\u306E\u5358\u8A9E\u3068\u3057\u3066\u5C55\u958B','All positional parameters; `"$@"` expands each one as a separate word'),"*":x('\u5168\u3066\u306E\u4F4D\u7F6E\u30D1\u30E9\u30E1\u30FC\u30BF\u3002`"$*"` \u306F IFS \u306E\u5148\u982D\u6587\u5B57\u3067\u9023\u7D50\u3057\u305F1\u3064\u306E\u6587\u5B57\u5217\u306B\u306A\u308B','All positional parameters; `"$*"` joins them into one string with the first IFS char'),"#":x("\u4F4D\u7F6E\u30D1\u30E9\u30E1\u30FC\u30BF\uFF08\u5F15\u6570\uFF09\u306E\u500B\u6570","Number of positional parameters"),$:x("\u73FE\u5728\u306E\u30B7\u30A7\u30EB\u306E\u30D7\u30ED\u30BB\u30B9ID","Process ID of the current shell"),"!":x("\u6700\u5F8C\u306B\u30D0\u30C3\u30AF\u30B0\u30E9\u30A6\u30F3\u30C9\u5B9F\u884C\u3057\u305F\u30D7\u30ED\u30BB\u30B9\u306EID","PID of the most recent background job"),0:x("\u30B9\u30AF\u30EA\u30D7\u30C8\u540D\uFF08\u307E\u305F\u306F\u30B7\u30A7\u30EB\u540D\uFF09","Name of the script or shell"),"-":x("\u73FE\u5728\u6709\u52B9\u306A\u30B7\u30A7\u30EB\u30AA\u30D7\u30B7\u30E7\u30F3\u306E\u30D5\u30E9\u30B0","Current shell option flags"),_:x("\u76F4\u524D\u306E\u30B3\u30DE\u30F3\u30C9\u306E\u6700\u5F8C\u306E\u5F15\u6570","Last argument of the previous command")},As={HOME:x("\u30DB\u30FC\u30E0\u30C7\u30A3\u30EC\u30AF\u30C8\u30EA\u306E\u30D1\u30B9","Home directory"),PATH:x("\u30B3\u30DE\u30F3\u30C9\u3092\u63A2\u3059\u30C7\u30A3\u30EC\u30AF\u30C8\u30EA\u306E\u4E00\u89A7\uFF08`:` \u533A\u5207\u308A\uFF09","Colon-separated list of directories searched for commands"),PWD:x("\u30AB\u30EC\u30F3\u30C8\u30C7\u30A3\u30EC\u30AF\u30C8\u30EA","Current working directory"),OLDPWD:x("\u76F4\u524D\u306E\u30AB\u30EC\u30F3\u30C8\u30C7\u30A3\u30EC\u30AF\u30C8\u30EA","Previous working directory"),IFS:x("\u5358\u8A9E\u5206\u5272\u306B\u4F7F\u3046\u533A\u5207\u308A\u6587\u5B57\uFF08\u65E2\u5B9A\u306F\u7A7A\u767D\u30FB\u30BF\u30D6\u30FB\u6539\u884C\uFF09","Field separator used for word splitting"),USER:x("\u30ED\u30B0\u30A4\u30F3\u30E6\u30FC\u30B6\u30FC\u540D","Current user name"),SHELL:x("\u30ED\u30B0\u30A4\u30F3\u30B7\u30A7\u30EB\u306E\u30D1\u30B9","Path of the login shell"),RANDOM:x("\u53C2\u7167\u3059\u308B\u305F\u3073\u306B 0\u301C32767 \u306E\u4E71\u6570\u3092\u8FD4\u3059","A random integer 0\u201332767 on each reference"),LINENO:x("\u73FE\u5728\u306E\u884C\u756A\u53F7","Current line number"),SECONDS:x("\u30B7\u30A7\u30EB\u8D77\u52D5\u304B\u3089\u306E\u7D4C\u904E\u79D2\u6570","Seconds since the shell started"),BASH_SOURCE:x("\u30BD\u30FC\u30B9\u30D5\u30A1\u30A4\u30EB\u540D\u306E\u914D\u5217\uFF08`${BASH_SOURCE[0]}` \u306F\u73FE\u5728\u306E\u30B9\u30AF\u30EA\u30D7\u30C8\uFF09","Array of source file names; `${BASH_SOURCE[0]}` is the current script"),FUNCNAME:x("\u5B9F\u884C\u4E2D\u306E\u95A2\u6570\u540D\u306E\u914D\u5217","Array of function names on the call stack"),PIPESTATUS:x("\u76F4\u524D\u306E\u30D1\u30A4\u30D7\u30E9\u30A4\u30F3\u5404\u30B3\u30DE\u30F3\u30C9\u306E\u7D42\u4E86\u30B9\u30C6\u30FC\u30BF\u30B9\u306E\u914D\u5217","Exit statuses of each command in the last pipeline"),REPLY:x("`read` \u306B\u5909\u6570\u540D\u3092\u6E21\u3055\u306A\u304B\u3063\u305F\u3068\u304D\u306E\u683C\u7D0D\u5148","Default variable set by `read`"),OPTARG:x("`getopts` \u304C\u51E6\u7406\u4E2D\u306E\u30AA\u30D7\u30B7\u30E7\u30F3\u306E\u5F15\u6570","Argument of the option being processed by `getopts`"),OPTIND:x("`getopts` \u304C\u6B21\u306B\u51E6\u7406\u3059\u308B\u5F15\u6570\u306E\u4F4D\u7F6E","Index of the next argument for `getopts`"),HOSTNAME:x("\u30DB\u30B9\u30C8\u540D","Host name"),UID:x("\u5B9F\u30E6\u30FC\u30B6\u30FCID","Real user ID"),EUID:x("\u5B9F\u52B9\u30E6\u30FC\u30B6\u30FCID\uFF080 \u306A\u3089 root\uFF09","Effective user ID (0 = root)"),TMPDIR:x("\u4E00\u6642\u30D5\u30A1\u30A4\u30EB\u7528\u30C7\u30A3\u30EC\u30AF\u30C8\u30EA","Directory for temporary files"),LANG:x("\u30ED\u30B1\u30FC\u30EB\u8A2D\u5B9A","Locale setting"),EDITOR:x("\u65E2\u5B9A\u306E\u30C6\u30AD\u30B9\u30C8\u30A8\u30C7\u30A3\u30BF","Default text editor")},Cs={"-e":x("\u5B58\u5728\u3059\u308B\uFF08\u7A2E\u985E\u306F\u554F\u308F\u306A\u3044\uFF09","exists"),"-f":x("\u901A\u5E38\u30D5\u30A1\u30A4\u30EB\u3068\u3057\u3066\u5B58\u5728\u3059\u308B","is an existing regular file"),"-d":x("\u30C7\u30A3\u30EC\u30AF\u30C8\u30EA\u3068\u3057\u3066\u5B58\u5728\u3059\u308B","is an existing directory"),"-L":x("\u30B7\u30F3\u30DC\u30EA\u30C3\u30AF\u30EA\u30F3\u30AF\u3067\u3042\u308B","is a symbolic link"),"-h":x("\u30B7\u30F3\u30DC\u30EA\u30C3\u30AF\u30EA\u30F3\u30AF\u3067\u3042\u308B","is a symbolic link"),"-r":x("\u8AAD\u307F\u53D6\u308A\u53EF\u80FD\u3067\u3042\u308B","is readable"),"-w":x("\u66F8\u304D\u8FBC\u307F\u53EF\u80FD\u3067\u3042\u308B","is writable"),"-x":x("\u5B9F\u884C\u53EF\u80FD\u3067\u3042\u308B","is executable"),"-s":x("\u7A7A\u3067\u306A\u3044\u30D5\u30A1\u30A4\u30EB\u3067\u3042\u308B\uFF08\u30B5\u30A4\u30BA > 0\uFF09","is a non-empty file"),"-p":x("\u540D\u524D\u4ED8\u304D\u30D1\u30A4\u30D7(FIFO)\u3067\u3042\u308B","is a named pipe"),"-S":x("\u30BD\u30B1\u30C3\u30C8\u3067\u3042\u308B","is a socket"),"-b":x("\u30D6\u30ED\u30C3\u30AF\u30C7\u30D0\u30A4\u30B9\u3067\u3042\u308B","is a block device"),"-c":x("\u30AD\u30E3\u30E9\u30AF\u30BF\u30C7\u30D0\u30A4\u30B9\u3067\u3042\u308B","is a character device"),"-t":x("\u7AEF\u672B\u306B\u63A5\u7D9A\u3055\u308C\u305F\u30D5\u30A1\u30A4\u30EB\u30C7\u30A3\u30B9\u30AF\u30EA\u30D7\u30BF\u3067\u3042\u308B","is a file descriptor open on a terminal"),"-z":x("\u7A7A\u6587\u5B57\u5217\u3067\u3042\u308B\uFF08\u9577\u3055 0\uFF09","is an empty string"),"-n":x("\u7A7A\u6587\u5B57\u5217\u3067\u306A\u3044\uFF08\u9577\u3055 1 \u4EE5\u4E0A\uFF09","is a non-empty string"),"-v":x("\u8A2D\u5B9A\u6E08\u307F\u306E\u5909\u6570\u540D\u3067\u3042\u308B","is the name of a set variable"),"-o":x("\u6709\u52B9\u306B\u306A\u3063\u3066\u3044\u308B\u30B7\u30A7\u30EB\u30AA\u30D7\u30B7\u30E7\u30F3\u540D\u3067\u3042\u308B","is an enabled shell option")},ut={"=":x("\u6587\u5B57\u5217\u304C\u7B49\u3057\u3044","strings are equal"),"==":x("\u6587\u5B57\u5217\u304C\u7B49\u3057\u3044\uFF08`[[ ]]` \u3067\u306F\u53F3\u8FBA\u306F\u30B0\u30ED\u30D6\u30D1\u30BF\u30FC\u30F3\uFF09","strings are equal (right side is a glob pattern in `[[ ]]`)"),"!=":x("\u6587\u5B57\u5217\u304C\u7B49\u3057\u304F\u306A\u3044","strings differ"),"=~":x("\u5DE6\u8FBA\u304C\u53F3\u8FBA\u306E\u6B63\u898F\u8868\u73FE(ERE)\u306B\u4E00\u81F4\u3059\u308B\u3002\u4E00\u81F4\u7D50\u679C\u306F `BASH_REMATCH` \u306B\u5165\u308B","left side matches the regex (ERE) on the right; captures go to `BASH_REMATCH`"),"<":x("\u8F9E\u66F8\u9806\u3067\u5DE6\u304C\u5C0F\u3055\u3044","sorts before (lexicographically)"),">":x("\u8F9E\u66F8\u9806\u3067\u5DE6\u304C\u5927\u304D\u3044","sorts after (lexicographically)"),"-eq":x("\u6570\u5024\u304C\u7B49\u3057\u3044","numbers are equal"),"-ne":x("\u6570\u5024\u304C\u7B49\u3057\u304F\u306A\u3044","numbers are not equal"),"-lt":x("\u5DE6\u304C\u53F3\u3088\u308A\u5C0F\u3055\u3044(<)","less than"),"-le":x("\u5DE6\u304C\u53F3\u4EE5\u4E0B(<=)","less than or equal"),"-gt":x("\u5DE6\u304C\u53F3\u3088\u308A\u5927\u304D\u3044(>)","greater than"),"-ge":x("\u5DE6\u304C\u53F3\u4EE5\u4E0A(>=)","greater than or equal"),"-nt":x("\u5DE6\u306E\u30D5\u30A1\u30A4\u30EB\u306E\u65B9\u304C\u65B0\u3057\u3044","left file is newer"),"-ot":x("\u5DE6\u306E\u30D5\u30A1\u30A4\u30EB\u306E\u65B9\u304C\u53E4\u3044","left file is older"),"-ef":x("\u540C\u3058\u30D5\u30A1\u30A4\u30EB\uFF08\u540C\u3058 inode\uFF09\u3092\u6307\u3059","refer to the same file"),"&&":x("\u4E21\u65B9\u306E\u6761\u4EF6\u304C\u771F","both conditions are true"),"||":x("\u3069\u3061\u3089\u304B\u306E\u6761\u4EF6\u304C\u771F","either condition is true"),"-a":x("\u4E21\u65B9\u306E\u6761\u4EF6\u304C\u771F\uFF08AND\u3001\u975E\u63A8\u5968\uFF09","both are true (AND, obsolescent)"),"-o":x("\u3069\u3061\u3089\u304B\u306E\u6761\u4EF6\u304C\u771F\uFF08OR\u3001\u975E\u63A8\u5968\uFF09","either is true (OR, obsolescent)")},oa={"&&":x("\u5DE6\u306E\u30B3\u30DE\u30F3\u30C9\u304C\u6210\u529F\uFF08\u7D42\u4E86\u30B9\u30C6\u30FC\u30BF\u30B9 0\uFF09\u3057\u305F\u5834\u5408\u306E\u307F\u53F3\u3092\u5B9F\u884C","Run the right side only if the left succeeds (exit 0)"),"||":x("\u5DE6\u306E\u30B3\u30DE\u30F3\u30C9\u304C\u5931\u6557\uFF08\u7D42\u4E86\u30B9\u30C6\u30FC\u30BF\u30B9 0 \u4EE5\u5916\uFF09\u3057\u305F\u5834\u5408\u306E\u307F\u53F3\u3092\u5B9F\u884C","Run the right side only if the left fails (non-zero exit)"),";":x("\u30B3\u30DE\u30F3\u30C9\u306E\u533A\u5207\u308A\u3002\u5DE6\u304C\u7D42\u308F\u3063\u305F\u3089\u7D50\u679C\u306B\u95A2\u4FC2\u306A\u304F\u6B21\u3092\u5B9F\u884C","Command separator; run the next command regardless of the result"),"&":x("\u5DE6\u306E\u30B3\u30DE\u30F3\u30C9\u3092\u30D0\u30C3\u30AF\u30B0\u30E9\u30A6\u30F3\u30C9\u3067\u5B9F\u884C\u3057\u3001\u7D42\u4E86\u3092\u5F85\u305F\u305A\u306B\u6B21\u3078\u9032\u3080","Run the left command in the background and continue without waiting"),"|":x("\u30D1\u30A4\u30D7: \u5DE6\u306E\u30B3\u30DE\u30F3\u30C9\u306E\u6A19\u6E96\u51FA\u529B\u3092\u53F3\u306E\u30B3\u30DE\u30F3\u30C9\u306E\u6A19\u6E96\u5165\u529B\u306B\u6E21\u3059","Pipe: send stdout of the left command to stdin of the right"),"|&":x("\u30D1\u30A4\u30D7: \u5DE6\u306E\u30B3\u30DE\u30F3\u30C9\u306E\u6A19\u6E96\u51FA\u529B\u3068\u6A19\u6E96\u30A8\u30E9\u30FC\u51FA\u529B\u3092\u53F3\u306E\u6A19\u6E96\u5165\u529B\u306B\u6E21\u3059","Pipe stdout and stderr of the left command to stdin of the right"),";;":x("\u3053\u306E case \u5206\u5C90\u3092\u7D42\u4E86\u3059\u308B","End this case branch"),";&":x("\u6B21\u306E case \u5206\u5C90\u306E\u672C\u4F53\u3082\u7D9A\u3051\u3066\u5B9F\u884C\u3059\u308B\uFF08\u30D5\u30A9\u30FC\u30EB\u30B9\u30EB\u30FC\uFF09","Fall through into the next case branch"),";;&":x("\u6B21\u306E case \u30D1\u30BF\u30FC\u30F3\u306E\u5224\u5B9A\u3092\u7D9A\u3051\u308B","Continue testing the following case patterns")},Ct={if:x("\u6761\u4EF6\u5206\u5C90\u306E\u958B\u59CB\u3002\u7D9A\u304F\u30B3\u30DE\u30F3\u30C9\u306E\u7D42\u4E86\u30B9\u30C6\u30FC\u30BF\u30B9\u304C 0 \u306A\u3089 then \u7BC0\u3092\u5B9F\u884C","Start a conditional; run the `then` branch if the condition exits 0"),then:x("\u6761\u4EF6\u304C\u771F\u306E\u3068\u304D\u306B\u5B9F\u884C\u3059\u308B\u90E8\u5206\u306E\u958B\u59CB","Start of the branch run when the condition is true"),elif:x("\u524D\u306E\u6761\u4EF6\u304C\u507D\u306E\u3068\u304D\u3001\u6B21\u306E\u6761\u4EF6\u3092\u5224\u5B9A","Test another condition if the previous ones were false"),else:x("\u3069\u306E\u6761\u4EF6\u3082\u507D\u306E\u3068\u304D\u306B\u5B9F\u884C\u3059\u308B\u90E8\u5206","Branch run when no condition was true"),fi:x("if \u6587\u306E\u7D42\u308F\u308A","End of the `if` statement"),for:x("for \u30EB\u30FC\u30D7\u306E\u958B\u59CB","Start of a `for` loop"),while:x("\u6761\u4EF6\u304C\u771F\uFF08\u7D42\u4E86\u30B9\u30C6\u30FC\u30BF\u30B9 0\uFF09\u306E\u9593\u3001\u7E70\u308A\u8FD4\u3059","Repeat while the condition exits 0"),until:x("\u6761\u4EF6\u304C\u771F\u306B\u306A\u308B\u307E\u3067\uFF08\u507D\u306E\u9593\uFF09\u7E70\u308A\u8FD4\u3059","Repeat until the condition exits 0"),in:x("\u30EB\u30FC\u30D7\u3067\u9806\u306B\u53D6\u308A\u51FA\u3059\u5024\u306E\u4E00\u89A7\u3092\u6307\u5B9A","Introduces the list of values to iterate over"),do:x("\u30EB\u30FC\u30D7\u672C\u4F53\u306E\u958B\u59CB","Start of the loop body"),done:x("\u30EB\u30FC\u30D7\u672C\u4F53\u306E\u7D42\u308F\u308A","End of the loop body"),case:x("\u5024\u3092\u30D1\u30BF\u30FC\u30F3\u3068\u9806\u306B\u7167\u5408\u3057\u3001\u4E00\u81F4\u3057\u305F\u5206\u5C90\u3092\u5B9F\u884C","Match a value against patterns and run the matching branch"),esac:x("case \u6587\u306E\u7D42\u308F\u308A","End of the `case` statement"),select:x("\u4E00\u89A7\u304B\u3089\u30E6\u30FC\u30B6\u30FC\u306B\u756A\u53F7\u3067\u9078\u3070\u305B\u308B\u30E1\u30CB\u30E5\u30FC\u3092\u8868\u793A","Show a numbered menu for the user to pick from"),function:x("\u95A2\u6570\u5B9A\u7FA9","Function definition"),"{":x("\u30B3\u30DE\u30F3\u30C9\u306E\u30B0\u30EB\u30FC\u30D7\u5316\u306E\u958B\u59CB\uFF08\u73FE\u5728\u306E\u30B7\u30A7\u30EB\u3067\u5B9F\u884C\uFF09","Start of a command group (runs in the current shell)"),"}":x("\u30B3\u30DE\u30F3\u30C9\u306E\u30B0\u30EB\u30FC\u30D7\u5316\u306E\u7D42\u308F\u308A","End of a command group"),"(":x("\u30B5\u30D6\u30B7\u30A7\u30EB\u306E\u958B\u59CB\uFF08\u5225\u30D7\u30ED\u30BB\u30B9\u3067\u5B9F\u884C\u3055\u308C\u3001\u5909\u6570\u306E\u5909\u66F4\u306F\u5916\u306B\u5F71\u97FF\u3057\u306A\u3044\uFF09","Start of a subshell (changes do not affect the parent shell)"),")":x("\u30B5\u30D6\u30B7\u30A7\u30EB\u306E\u7D42\u308F\u308A","End of the subshell"),"!":x("\u7D9A\u304F\u30B3\u30DE\u30F3\u30C9\u306E\u7D42\u4E86\u30B9\u30C6\u30FC\u30BF\u30B9\u3092\u53CD\u8EE2\u3059\u308B","Negate the exit status of the following command"),time:x("\u7D9A\u304F\u30D1\u30A4\u30D7\u30E9\u30A4\u30F3\u306E\u5B9F\u884C\u6642\u9593\u3092\u8A08\u6E2C\u3057\u3066\u8868\u793A","Measure and report the run time of the pipeline"),coproc:x("\u30B3\u30D7\u30ED\u30BB\u30B9\uFF08\u53CC\u65B9\u5411\u30D1\u30A4\u30D7\u4ED8\u304D\u306E\u30D0\u30C3\u30AF\u30B0\u30E9\u30A6\u30F3\u30C9\u51E6\u7406\uFF09\u3092\u958B\u59CB","Start a coprocess with a two-way pipe")},la={"-a":x("\u30A4\u30F3\u30C7\u30C3\u30AF\u30B9\u914D\u5217\u3068\u3057\u3066\u5BA3\u8A00","declare an indexed array"),"-A":x("\u9023\u60F3\u914D\u5217\u3068\u3057\u3066\u5BA3\u8A00","declare an associative array"),"-i":x("\u6574\u6570\u3068\u3057\u3066\u6271\u3046\uFF08\u4EE3\u5165\u6642\u306B\u7B97\u8853\u8A55\u4FA1\uFF09","treat as integer (arithmetic on assignment)"),"-r":x("\u8AAD\u307F\u53D6\u308A\u5C02\u7528\u306B\u3059\u308B","make read-only"),"-x":x("\u74B0\u5883\u5909\u6570\u3068\u3057\u3066\u30A8\u30AF\u30B9\u30DD\u30FC\u30C8","export to the environment"),"-l":x("\u4EE3\u5165\u6642\u306B\u5C0F\u6587\u5B57\u3078\u5909\u63DB","lowercase on assignment"),"-u":x("\u4EE3\u5165\u6642\u306B\u5927\u6587\u5B57\u3078\u5909\u63DB","uppercase on assignment"),"-n":x("\u540D\u524D\u53C2\u7167\uFF08nameref\uFF09\u306B\u3059\u308B","make a name reference"),"-g":x("\u95A2\u6570\u5185\u3067\u3082\u30B0\u30ED\u30FC\u30D0\u30EB\u5909\u6570\u3068\u3057\u3066\u5BA3\u8A00","declare global even inside a function"),"-f":x("\u95A2\u6570\u540D\u3092\u5BFE\u8C61\u306B\u3059\u308B","operate on function names"),"-F":x("\u95A2\u6570\u540D\u306E\u307F\u8868\u793A","show function names only"),"-p":x("\u5C5E\u6027\u3068\u5024\u3092\u8868\u793A","print attributes and values")},ca={export:x("\u5909\u6570\u3092\u74B0\u5883\u5909\u6570\u3068\u3057\u3066\u30A8\u30AF\u30B9\u30DD\u30FC\u30C8\u3057\u3001\u5B50\u30D7\u30ED\u30BB\u30B9\u306B\u3082\u5F15\u304D\u7D99\u3050","Export variables so child processes inherit them"),local:x("\u95A2\u6570\u5185\u3060\u3051\u3067\u6709\u52B9\u306A\u30ED\u30FC\u30AB\u30EB\u5909\u6570\u3092\u5BA3\u8A00","Declare variables local to the current function"),declare:x("\u5909\u6570\u3092\u5BA3\u8A00\u3057\u3001\u5C5E\u6027\u3092\u8A2D\u5B9A\u3059\u308B","Declare variables and set attributes"),typeset:x("\u5909\u6570\u3092\u5BA3\u8A00\u3057\u3001\u5C5E\u6027\u3092\u8A2D\u5B9A\u3059\u308B\uFF08declare \u3068\u540C\u3058\uFF09","Declare variables and set attributes (same as declare)"),readonly:x("\u5909\u6570\u3092\u8AAD\u307F\u53D6\u308A\u5C02\u7528\uFF08\u5909\u66F4\u4E0D\u53EF\uFF09\u306B\u3059\u308B","Mark variables read-only")};var Fl=new Set(["for_statement","c_style_for_statement","while_statement","if_statement","elif_clause","else_clause","case_statement","case_item","function_definition","compound_statement","subshell","do_group","ERROR"]),Ol=new Set(["list","pipeline","redirected_statement","negated_command","program"]),Ll=new Set(["simple_expansion","expansion","command_substitution","arithmetic_expansion","process_substitution","string","raw_string"]),_n=s=>`${s}${s%100>=11&&s%100<=13?"th":["th","st","nd","rd"][s%10]??"th"}`,Pl=new Set(["\\;",";","';'",'"\\;"','"; "',"+"]),Os=s=>s.endPosition.column===0&&s.endPosition.row>s.startPosition.row?s.endPosition.row-1:s.endPosition.row,da=s=>Os(s)>s.startPosition.row,he=(s,e)=>s.startPosition.row<=e&&Os(s)>=e;function ye(s){return{start:{line:s.startPosition.row,character:s.startPosition.column},end:{line:s.endPosition.row,character:s.endPosition.column}}}function de(s,e=60){let t=s.split(`
89
+ `)[0],n=t.length>e?t.slice(0,e-1)+"\u2026":t;return t.length<s.length&&n===t?n+" \u2026":n}function xn(s){return Fl.has(s.type)?da(s):Ol.has(s.type)?s.namedChildren.some(xn):!1}var Se=(s,e)=>!!s&&!!e&&s.id===e.id,ua=(s,e)=>s.some(t=>t.id===e.id);function It(s,e){let t=[];for(let n=0;n<s.childCount;n++)s.fieldNameForChild(n)===e&&t.push(s.child(n));return t}var ce=s=>s.type==="word"||s.type==="number",Is=s=>/(^|[^\\])[*?]|\[[^\]]+\]/.test(s),ht=class{constructor(e){this.lang=e}lang;line=null;context=[];functions=new Map;extraNotes=[];opts={};source="";examples=[];argCtx;explainLine(e,t,n,r={}){let a=e.rootNode;this.opts=r,this.source=a.text,this.functions.clear();for(let u of a.descendantsOfType("function_definition")){let h=u.childForFieldName("name")?.text;h&&!this.functions.has(h)&&this.functions.set(h,u.startPosition.row)}this.line=t,this.context=[],this.extraNotes=[],this.examples=[];let o=this.flatten(a),l=a.descendantsOfType(["command","redirected_statement","list","pipeline","variable_assignment","test_command","while_statement"],{row:t,column:0},{row:t+1,column:0}).filter(u=>he(u,t)).map(u=>u.type==="while_statement"?u.text.split(`
90
+ `)[0]:u.text),c={line:t,...n&&n!=="bash"?{shell:n}:{},items:o,context:this.context,notes:[...this.notes(a,t,o),...n?ra(a,t,n,this.lang):[],...new Set(this.extraNotes),...this.opts.idioms===!1?[]:Gs(l,this.lang)],examples:this.titledExamples(a,t).filter(u=>this.wantsExample(u)).filter((u,h,d)=>d.findIndex(p=>JSON.stringify(p)===JSON.stringify(u))===h),summary:o.filter(u=>u.kind!=="comment"||o.length===1).map(bn).join(" ; ")};return this.line=null,c}s(e,t){return this.lang==="ja"?e:t}t(e){return e[this.lang]}lineRef(e){let t=e.startPosition.row+1,n=Os(e)+1;return t===n?"":this.s(`\uFF08\u884C ${t}\u301C${n}\uFF09`,` (lines ${t}\u2013${n})`)}tok(e,t,n,r=[],a=de(e.text)){return{kind:t,label:a,explanation:n,span:ye(e),children:r}}sub(e){return e?this.line===null?[this.explain(e)]:he(e,this.line)?xn(e)?e.startPosition.row===this.line?[this.explain(e)]:this.flatten(e):[this.full(e)]:[]:[]}subs(e){return e.flatMap(t=>this.sub(t))}full(e){let t=this.line;this.line=null;try{return this.explain(e)}finally{this.line=t}}flatten(e){let t=this.contextLabel(e);t&&this.context.push({label:t,line:e.startPosition.row});let n=[];for(let r of e.children)if(!(this.line!==null&&!he(r,this.line)))if(r.isNamed)n.push(...this.sub(r));else{let a=this.anon(r);a&&n.push(a)}return n}contextLabel(e){switch(e.type){case"for_statement":case"c_style_for_statement":return this.s("for \u30EB\u30FC\u30D7","for loop");case"while_statement":return e.child(0)?.type==="until"?this.s("until \u30EB\u30FC\u30D7","until loop"):this.s("while \u30EB\u30FC\u30D7","while loop");case"if_statement":return this.s("if \u6587","if statement");case"elif_clause":return"elif";case"else_clause":return"else";case"case_statement":return this.s("case \u6587","case statement");case"case_item":{let t=It(e,"value").map(n=>n.text);return this.s(`case \u5206\u5C90 \`${t.join("|")})\``,`case branch \`${t.join("|")})\``)}case"function_definition":return this.s(`\u95A2\u6570 \`${e.childForFieldName("name")?.text}\``,`function \`${e.childForFieldName("name")?.text}\``);case"compound_statement":return this.s("{ } \u30B0\u30EB\u30FC\u30D7","{ } group");case"subshell":return this.s("( ) \u30B5\u30D6\u30B7\u30A7\u30EB","( ) subshell");case"ERROR":return this.s("\u69CB\u6587\u30A8\u30E9\u30FC\u306E\u7BC4\u56F2","syntax error region");default:return}}anon(e){let t=Ct[e.type];if(t)return this.tok(e,"keyword",this.t(t));let n=oa[e.type];if(n)return this.tok(e,"operator",this.t(n))}kws(e){return this.anonOnLine(e.children.filter(t=>!t.isNamed))}anonOnLine(e){return e.filter(t=>this.line===null||he(t,this.line)).map(t=>t.type===";"?void 0:this.anon(t)).filter(t=>!!t)}ordered(e,t=()=>!1){let n=[];for(let r of e.children)t(r)||(r.isNamed?n.push(...this.sub(r)):n.push(...this.anonOnLine([r])));return n}notes(e,t,n){let r=[],a={row:t,column:0},o={row:t+1,column:0};for(let l of e.descendantsOfType("heredoc_redirect",a,o)){let c=l.namedChildren.find(d=>d.type==="heredoc_body"),u=l.namedChildren.find(d=>d.type==="heredoc_end"),h=l.namedChildren.find(d=>d.type==="heredoc_start")?.text??"";c&&he(c,t)&&c.startPosition.row<=t&&l.startPosition.row<t?r.push(this.s(`\u3053\u306E\u884C\u306F\u30D2\u30A2\u30C9\u30AD\u30E5\u30E1\u30F3\u30C8\uFF08\u884C ${l.startPosition.row+1} \u306E \`<<${h}\`\uFF09\u306E\u672C\u6587\u3067\u3059\u3002`,`This line is part of the here-document started by \`<<${h}\` on line ${l.startPosition.row+1}.`)):u&&u.startPosition.row===t&&r.push(this.s(`\`${u.text}\` \u306F\u30D2\u30A2\u30C9\u30AD\u30E5\u30E1\u30F3\u30C8\u306E\u7D42\u308F\u308A\u3092\u793A\u3059\u884C\u3067\u3059\u3002`,`\`${u.text}\` marks the end of the here-document.`))}for(let l of n)l.span.start.line<t&&!r.length&&l.kind!=="block"&&r.push(this.s(`\u3053\u306E\u6587\u306F\u884C ${l.span.start.line+1} \u304B\u3089\u7D9A\u3044\u3066\u3044\u307E\u3059\uFF08\u884C\u672B\u306E \`\\\` \u306B\u3088\u308B\u884C\u7D99\u7D9A\u306A\u3069\uFF09\u3002`,`This statement starts on line ${l.span.start.line+1} (e.g. continued with a trailing \`\\\`).`));return r}explain(e){switch(e.type){case"comment":return this.comment(e);case"command":return this.command(e);case"declaration_command":return this.declaration(e);case"unset_command":return this.unset(e);case"variable_assignment":return this.assignment(e);case"variable_assignments":return this.tok(e,"assignment",this.s("\u8907\u6570\u306E\u5909\u6570\u3078\u306E\u4EE3\u5165","Several variable assignments"),this.subs(e.namedChildren));case"pipeline":return this.pipeline(e);case"list":return this.list(e);case"redirected_statement":return this.redirected(e);case"file_redirect":return this.fileRedirect(e);case"heredoc_redirect":return this.heredoc(e);case"herestring_redirect":return this.herestring(e);case"negated_command":return this.tok(e,"operator",this.t(Ct["!"]),this.subs(e.namedChildren));case"test_command":return this.test(e);case"unary_expression":return this.unary(e);case"binary_expression":return this.binary(e);case"ternary_expression":return this.tok(e,"expansion",this.s("\u4E09\u9805\u6F14\u7B97\u5B50: \u6761\u4EF6 ? \u771F\u306E\u3068\u304D\u306E\u5024 : \u507D\u306E\u3068\u304D\u306E\u5024","Ternary: cond ? if-true : if-false"),this.subs(e.namedChildren));case"postfix_expression":return this.tok(e,"operator",this.s(`\u7B97\u8853: \`${e.text}\`\uFF08${e.text.endsWith("++")?"1 \u5897\u3084\u3059":"1 \u6E1B\u3089\u3059"}\uFF09`,`Arithmetic: \`${e.text}\` (${e.text.endsWith("++")?"increment":"decrement"})`));case"parenthesized_expression":return this.tok(e,"operator",this.s("\u62EC\u5F27\u3067\u307E\u3068\u3081\u305F\u5F0F","Parenthesized expression"),this.subs(e.namedChildren));case"expansion":return this.expansion(e);case"simple_expansion":return this.simpleExpansion(e);case"command_substitution":return this.commandSubstitution(e);case"process_substitution":return this.processSubstitution(e);case"arithmetic_expansion":return this.tok(e,"substitution",this.s("\u7B97\u8853\u5C55\u958B: \u4E2D\u306E\u5F0F\u3092\u6574\u6570\u3068\u3057\u3066\u8A08\u7B97\u3057\u305F\u7D50\u679C\u306B\u7F6E\u304D\u63DB\u3048\u308B","Arithmetic expansion: replaced by the integer result of the expression"),this.subs(e.namedChildren));case"string":return this.string(e);case"raw_string":return this.tok(e,"string",this.s("\u30B7\u30F3\u30B0\u30EB\u30AF\u30A9\u30FC\u30C8\u6587\u5B57\u5217: \u4E2D\u8EAB\u306F\u4E00\u5207\u5C55\u958B\u3055\u308C\u305A\u3001\u305D\u306E\u307E\u307E\u306E\u6587\u5B57\u5217\u306B\u306A\u308B","Single-quoted string: taken literally, nothing is expanded"));case"ansi_c_string":return this.tok(e,"string",this.s("`$'\u2026'` \u6587\u5B57\u5217: `\\n` `\\t` \u306A\u3069\u306E\u30A8\u30B9\u30B1\u30FC\u30D7\u3092\u89E3\u91C8\u3057\u305F\u6587\u5B57\u5217\u306B\u306A\u308B","`$'\u2026'` string: backslash escapes such as `\\n` are interpreted"));case"translated_string":return this.tok(e,"string",this.s('`$"\u2026"` \u6587\u5B57\u5217: \u30ED\u30B1\u30FC\u30EB\u306B\u5FDC\u3058\u3066\u7FFB\u8A33\u3055\u308C\u308B\u6587\u5B57\u5217','`$"\u2026"` string: translated according to the locale'),this.subs(e.namedChildren));case"concatenation":return this.tok(e,"argument",this.s("\u9023\u7D50: \u4EE5\u4E0B\u306E\u90E8\u5206\u3092\u7A7A\u767D\u306A\u3057\u3067\u3064\u306A\u3052\u30661\u3064\u306E\u5358\u8A9E\u306B\u3059\u308B","Concatenation: the parts below are joined into one word"),this.subs(e.namedChildren));case"word":return this.word(e);case"number":return this.tok(e,"number",this.s("\u6570\u5024","Number"));case"brace_expression":return this.tok(e,"expansion",this.s(`\u30D6\u30EC\u30FC\u30B9\u5C55\u958B: \`${e.text}\` \u306F\u9023\u7D9A\u3057\u305F\u5024\uFF08\u9023\u756A\u306A\u3069\uFF09\u306B\u5C55\u958B\u3055\u308C\u308B`,`Brace expansion: \`${e.text}\` expands to a sequence`));case"array":return this.tok(e,"expansion",this.s("\u914D\u5217: `( )` \u5185\u306E\u8981\u7D20\u304B\u3089\u914D\u5217\u3092\u4F5C\u308B","Array: built from the elements inside `( )`"),this.subs(e.namedChildren));case"subscript":return this.subscript(e);case"regex":return this.regexNode(e);case"extglob_pattern":return this.tok(e,"pattern",this.s("\u30D1\u30BF\u30FC\u30F3","Pattern"));case"variable_name":return this.variable(e.text,e);case"special_variable_name":return this.variable(e.text,e);case"test_operator":return this.tok(e,"operator",this.t(Cs[e.text]??ut[e.text]??{ja:"\u6F14\u7B97\u5B50",en:"Operator"}));case"subshell":return this.block(e,"block",this.s("\u30B5\u30D6\u30B7\u30A7\u30EB: `( )` \u5185\u3092\u5225\u30D7\u30ED\u30BB\u30B9\u3067\u5B9F\u884C\u3059\u308B\u3002\u4E2D\u3067\u306E\u5909\u6570\u5909\u66F4\u3084 cd \u306F\u5916\u306B\u5F71\u97FF\u3057\u306A\u3044","Subshell: runs `( )` in a child process; variable changes and cd do not leak out"));case"compound_statement":return this.block(e,"block",this.s("\u30B3\u30DE\u30F3\u30C9\u30B0\u30EB\u30FC\u30D7: `{ }` \u5185\u306E\u30B3\u30DE\u30F3\u30C9\u3092\u73FE\u5728\u306E\u30B7\u30A7\u30EB\u3067\u307E\u3068\u3081\u3066\u5B9F\u884C\u3059\u308B","Command group: runs the commands in `{ }` in the current shell"));case"do_group":return this.block(e,"block",this.s("\u30EB\u30FC\u30D7\u672C\u4F53: `do` \u304B\u3089 `done` \u307E\u3067\u3092\u7E70\u308A\u8FD4\u3057\u5B9F\u884C\u3059\u308B","Loop body: the commands between `do` and `done`"));case"function_definition":return this.functionDef(e);case"for_statement":return this.forStatement(e);case"c_style_for_statement":return this.block(e,"keyword",this.s("C \u8A00\u8A9E\u98A8 for \u30EB\u30FC\u30D7: `((\u521D\u671F\u5316; \u6761\u4EF6; \u66F4\u65B0))` \u3067\u56DE\u6570\u3092\u5236\u5FA1\u3057\u3066\u7E70\u308A\u8FD4\u3059","C-style for loop: `((init; condition; update))`")+this.lineRef(e));case"while_statement":return this.whileStatement(e);case"if_statement":return this.block(e,"keyword",this.s("if \u6587: \u6761\u4EF6\u30B3\u30DE\u30F3\u30C9\u306E\u7D42\u4E86\u30B9\u30C6\u30FC\u30BF\u30B9\u304C 0\uFF08\u6210\u529F\uFF09\u306A\u3089 then \u4EE5\u4E0B\u3092\u5B9F\u884C","if statement: runs the `then` branch if the condition exits 0")+this.lineRef(e));case"elif_clause":return this.block(e,"keyword",this.t(Ct.elif));case"else_clause":return this.block(e,"keyword",this.t(Ct.else));case"case_statement":return this.caseStatement(e);case"case_item":return this.caseItem(e);case"ERROR":return this.tok(e,"error",this.s("\u69CB\u6587\u30A8\u30E9\u30FC: \u3053\u306E\u90E8\u5206\u306F\u6B63\u3057\u304F\u89E3\u6790\u3067\u304D\u307E\u305B\u3093\u3067\u3057\u305F\uFF08\u30AF\u30A9\u30FC\u30C8\u3084\u62EC\u5F27\u306E\u9589\u3058\u5FD8\u308C\u306A\u3069\uFF09","Syntax error: this part could not be parsed (unclosed quote or bracket?)"),this.subs(e.namedChildren));default:return e.isNamed?this.tok(e,"argument",e.type,this.subs(e.namedChildren)):this.anon(e)??this.tok(e,"operator",e.type)}}comment(e){if(e.startPosition.row===0&&e.text.startsWith("#!")){let n=e.text.slice(2).trim();return this.tok(e,"comment",this.s(`\u30B7\u30D0\u30F3\uFF08shebang\uFF09: \u3053\u306E\u30B9\u30AF\u30EA\u30D7\u30C8\u3092 \`${n}\` \u3067\u5B9F\u884C\u3059\u308B\u3053\u3068\u3092\u6307\u5B9A\u3059\u308B`,`Shebang: run this script with \`${n}\``))}let t=_s.exec(e.text);if(t){let n=t[2].split(",").map(r=>`\`${r}\``).join(t[2].includes(",")?this.s("\u30FB",", "):"");return this.tok(e,"comment",t[1]==="disable-file"?this.s(`Bash Explainer \u3078\u306E\u6307\u793A\u30B3\u30E1\u30F3\u30C8: \u3053\u306E\u30D5\u30A1\u30A4\u30EB\u5168\u4F53\u3067\u8B66\u544A ${n} \u3092\u51FA\u3055\u306A\u3044`,`Bash Explainer directive: no ${n} warnings in this file`):this.s(`Bash Explainer \u3078\u306E\u6307\u793A\u30B3\u30E1\u30F3\u30C8: ${e.startPosition.column?"\u3053\u306E\u884C":"\u6B21\u306E\u884C"}\u3067\u8B66\u544A ${n} \u3092\u51FA\u3055\u306A\u3044`,`Bash Explainer directive: no ${n} warnings on ${e.startPosition.column?"this":"the next"} line`))}return/^#\s*shellcheck\s/.test(e.text)?this.tok(e,"comment",this.s("ShellCheck \u3078\u306E\u6307\u793A\u30B3\u30E1\u30F3\u30C8\uFF08\u8B66\u544A\u306E\u6291\u5236\u306A\u3069\uFF09","ShellCheck directive (e.g. disable a warning)")):this.tok(e,"comment",this.s("\u30B3\u30E1\u30F3\u30C8: `#` \u304B\u3089\u884C\u672B\u307E\u3067\u306F\u5B9F\u884C\u3055\u308C\u306A\u3044","Comment: everything after `#` is ignored"))}block(e,t,n){return this.tok(e,t,n,this.ordered(e))}functionDef(e){let t=e.childForFieldName("name"),n=t?.text??"?",r=t&&(this.line===null||he(t,this.line))?[this.tok(t,"function",this.s("\u95A2\u6570\u540D","Function name"))]:[];return this.tok(e,"function",this.s(`\u95A2\u6570 \`${n}\` \u306E\u5B9A\u7FA9: \u4EE5\u5F8C \`${n}\` \u3092\u30B3\u30DE\u30F3\u30C9\u306E\u3088\u3046\u306B\u547C\u3073\u51FA\u305B\u308B\uFF08\u5F15\u6570\u306F\u95A2\u6570\u5185\u3067 $1, $2\u2026 \u306B\u306A\u308B\uFF09${this.lineRef(e)}`,`Defines function \`${n}\`; call it like a command (arguments become $1, $2\u2026)${this.lineRef(e)}`),Fe([...r,...this.ordered(e,a=>Se(a,t)||a.type==="("||a.type===")")]))}forStatement(e){let t=e.childForFieldName("variable"),n=It(e,"value"),r=n.map(c=>c.text).join(" "),a=n.length?this.s(`for \u30EB\u30FC\u30D7: \`${r}\` \u306E\u5404\u5024\u3092\u9806\u306B\u5909\u6570 \`${t?.text}\` \u306B\u5165\u308C\u3066\u672C\u4F53\u3092\u7E70\u308A\u8FD4\u3059`,`for loop: assign each of \`${r}\` to \`${t?.text}\` and run the body`):this.s(`for \u30EB\u30FC\u30D7: \u4F4D\u7F6E\u30D1\u30E9\u30E1\u30FC\u30BF\uFF08"$@"\uFF09\u306E\u5404\u5024\u3092\u9806\u306B \`${t?.text}\` \u306B\u5165\u308C\u3066\u7E70\u308A\u8FD4\u3059`,`for loop over the positional parameters ("$@") as \`${t?.text}\``),o=this.ordered(e,c=>Se(c,t)||ua(n,c)),l=[];t&&(this.line===null||he(t,this.line))&&l.push(this.tok(t,"variable",this.s("\u30EB\u30FC\u30D7\u5909\u6570: \u7E70\u308A\u8FD4\u3057\u3054\u3068\u306B\u6B21\u306E\u5024\u304C\u5165\u308B","Loop variable: receives the next value on each iteration")));for(let c of n)for(let u of this.sub(c))u.explanation=this.s("\u7E70\u308A\u8FD4\u3059\u5024: ","Value to iterate: ")+u.explanation,l.push(u);return this.tok(e,"keyword",a+this.lineRef(e),Fe([...o,...l]))}whileStatement(e){let n=e.child(0)?.type==="until"?this.s("until \u30EB\u30FC\u30D7: \u6761\u4EF6\u30B3\u30DE\u30F3\u30C9\u304C\u6210\u529F\uFF08\u7D42\u4E86\u30B9\u30C6\u30FC\u30BF\u30B9 0\uFF09\u3059\u308B\u307E\u3067\u672C\u4F53\u3092\u7E70\u308A\u8FD4\u3059","until loop: repeat the body until the condition succeeds"):this.s("while \u30EB\u30FC\u30D7: \u6761\u4EF6\u30B3\u30DE\u30F3\u30C9\u304C\u6210\u529F\uFF08\u7D42\u4E86\u30B9\u30C6\u30FC\u30BF\u30B9 0\uFF09\u3059\u308B\u9593\u3001\u672C\u4F53\u3092\u7E70\u308A\u8FD4\u3059","while loop: repeat the body while the condition succeeds");return this.tok(e,"keyword",n+this.lineRef(e),this.ordered(e))}caseStatement(e){let t=e.childForFieldName("value"),n=this.ordered(e,a=>Se(a,t)),r=t?this.sub(t).map(a=>({...a,explanation:this.s("\u7167\u5408\u3059\u308B\u5024: ","Value to match: ")+a.explanation})):[];for(let a of n)a.kind==="keyword"&&a.label==="in"&&(a.explanation=this.s("\u5024\u306E\u5F8C\u306B\u3001\u30D1\u30BF\u30FC\u30F3\u3054\u3068\u306E\u5206\u5C90\u3092\u4E26\u3079\u308B","Introduces the list of pattern branches"));return this.tok(e,"keyword",this.s(`case \u6587: \`${t?.text}\` \u3092\u5404\u30D1\u30BF\u30FC\u30F3\u3068\u4E0A\u304B\u3089\u9806\u306B\u7167\u5408\u3057\u3001\u6700\u521D\u306B\u4E00\u81F4\u3057\u305F\u5206\u5C90\u3092\u5B9F\u884C`,`case statement: match \`${t?.text}\` against each pattern in order and run the first match`)+this.lineRef(e),Fe([...n,...r]))}caseItem(e){let t=It(e,"value"),n=t.map(c=>c.text).join(" | "),r=t.length===1&&t[0].text==="*",a=r?this.s("\u65E2\u5B9A\u306E\u5206\u5C90: \u3069\u306E\u30D1\u30BF\u30FC\u30F3\u306B\u3082\u4E00\u81F4\u3057\u306A\u304B\u3063\u305F\u5834\u5408\u306B\u5B9F\u884C\uFF08`*` \u306F\u4F55\u306B\u3067\u3082\u4E00\u81F4\uFF09","Default branch: runs when nothing else matched (`*` matches anything)"):this.s(`\u5206\u5C90: \u5024\u304C\u30D1\u30BF\u30FC\u30F3 \`${n}\` \u306B\u4E00\u81F4\u3057\u305F\u5834\u5408\u306B\u5B9F\u884C\uFF08\`|\` \u306F\u300C\u307E\u305F\u306F\u300D\uFF09`,`Branch: runs when the value matches \`${n}\` (\`|\` means "or")`),o=t.filter(c=>this.line===null||he(c,this.line)).map(c=>this.tok(c,"pattern",Is(c.text)?this.s(`\u30D1\u30BF\u30FC\u30F3 \`${c.text}\`\uFF08\u30B0\u30ED\u30D6: \`*\` \u306F\u4EFB\u610F\u306E\u6587\u5B57\u5217, \`?\` \u306F\u4EFB\u610F\u306E1\u6587\u5B57\uFF09`,`Pattern \`${c.text}\` (glob: \`*\` any string, \`?\` any char)`):this.s(`\u30D1\u30BF\u30FC\u30F3 \`${c.text}\``,`Pattern \`${c.text}\``))),l=this.ordered(e,c=>ua(t,c)||c.type==="|"||c.type===")"||c.type==="(");if(!r&&(this.line===null||t.some(c=>he(c,this.line)))){let c=this.examples.length;this.caseExample(t),this.anchorExamples(c,e)}return this.tok(e,"pattern",a+this.lineRef(e),Fe([...o,...l]))}pipeline(e){let t=this.examples.length,n=this.ordered(e),r=this.pipelineExample(e);r&&(this.examples.length=t,this.examples.push({...r,anchor:ye(e),kind:"pipeline"}));let a=n.filter(l=>l.kind!=="operator"&&l.kind!=="keyword"),o=this.tok(e,"operator",this.s("\u30D1\u30A4\u30D7\u30E9\u30A4\u30F3: \u5404\u30B3\u30DE\u30F3\u30C9\u306E\u6A19\u6E96\u51FA\u529B\u3092\u6B21\u306E\u30B3\u30DE\u30F3\u30C9\u306E\u6A19\u6E96\u5165\u529B\u306B\u3064\u306A\u3044\u3067\u3001\u540C\u6642\u306B\u5B9F\u884C\u3059\u308B","Pipeline: each command's stdout feeds the next command's stdin; they run concurrently"),n);return o.summary=a.map(bn).join(" | "),o}list(e){let t=[],n=o=>{for(let l of o.children)l.type==="list"&&!xn(l)?n(l):t.push(l)};n(e);let r=[];for(let o of t)o.isNamed?r.push(...this.sub(o)):r.push(...this.anonOnLine([o]));let a=this.tok(e,"operator",this.s("\u30B3\u30DE\u30F3\u30C9\u30EA\u30B9\u30C8: `&&`\uFF08\u6210\u529F\u3057\u305F\u3089\u6B21\u3078\uFF09\u3084 `||`\uFF08\u5931\u6557\u3057\u305F\u3089\u6B21\u3078\uFF09\u3067\u6761\u4EF6\u4ED8\u304D\u306B\u3064\u306A\u3044\u3060\u30B3\u30DE\u30F3\u30C9\u5217","Command list joined by `&&` (run next on success) or `||` (run next on failure)"),r);return a.summary=r.map(o=>o.kind==="operator"&&!o.children.length?o.label:bn(o)).join(" "),a}redirected(e){let t=e.childForFieldName("body"),n=e.namedChildren.filter(c=>!Se(c,t)),r=Hs(n.flatMap(c=>this.redirectInfo(c)),this.lang);r&&this.extraNotes.push(r);let a=this.sub(t),o=this.subs(n);if(a.length===1&&t&&!xn(t)&&["command","declaration_command"].includes(t.type)){let c=a[0];return{...c,span:ye(e),label:de(e.text),children:Fe([...c.children,...o])}}if(this.line!==null&&o.length===0&&a.length===1)return a[0];let l=this.tok(e,"redirect",this.s(`\u5165\u51FA\u529B\u306E\u30EA\u30C0\u30A4\u30EC\u30AF\u30C8: ${t?`\`${de(t.text,30)}\` \u5168\u4F53`:"\u30B3\u30DE\u30F3\u30C9"}\u306E\u5165\u51FA\u529B\u3092\u5207\u308A\u66FF\u3048\u308B`,`Redirection applied to ${t?`\`${de(t.text,30)}\` as a whole`:"the command"}`),Fe([...a,...o]));return l.summary=[...a.map(bn),...o.map(c=>c.label)].join(" "),l}redirectInfo(e){return e.type==="file_redirect"?[{op:e.children.find(t=>!t.isNamed)?.type??">",fd:e.childForFieldName("descriptor")?.text??"",dest:It(e,"destination").map(t=>t.text).join(" ")}]:e.type==="heredoc_redirect"?[{op:"<<",fd:"",dest:""},...e.namedChildren.filter(t=>t.type==="file_redirect").flatMap(t=>this.redirectInfo(t))]:e.type==="herestring_redirect"?[{op:"<<<",fd:"",dest:""}]:[]}fileRedirect(e){let t=e.childForFieldName("descriptor")?.text??"",n=e.children.find(h=>!h.isNamed)?.type??">",r=It(e,"destination"),a=r.map(h=>h.text).join(" "),o=ia[n],l=o?this.t(o(t,a)):this.s(`\u30EA\u30C0\u30A4\u30EC\u30AF\u30C8 \`${n}\``,`Redirection \`${n}\``),c=aa[a];c&&(l+=this.s("\u3002",". ")+this.t(c)),t==="2"&&n===">&"&&a==="1"&&(l=this.s("\u6A19\u6E96\u30A8\u30E9\u30FC\u51FA\u529B(fd 2)\u3092\u6A19\u6E96\u51FA\u529B(fd 1)\u3068\u540C\u3058\u51FA\u529B\u5148\u306B\u5411\u3051\u308B\uFF08\u30A8\u30E9\u30FC\u3082\u4E00\u7DD2\u306B\u51FA\u529B\u30FB\u30D1\u30A4\u30D7\u3059\u308B\u5B9A\u756A\u306E\u66F8\u304D\u65B9\uFF09","Send stderr (fd 2) to wherever stdout (fd 1) goes (the classic way to capture errors too)")),(t===""||t==="1")&&n===">&"&&a==="2"&&(l=this.s("\u6A19\u6E96\u51FA\u529B\u3092\u6A19\u6E96\u30A8\u30E9\u30FC\u51FA\u529B(fd 2)\u306B\u5411\u3051\u308B\uFF08\u30E1\u30C3\u30BB\u30FC\u30B8\u3092\u30A8\u30E9\u30FC\u51FA\u529B\u306B\u51FA\u3059\u5B9A\u756A\u306E\u66F8\u304D\u65B9\uFF09","Send stdout to stderr (the usual way to print an error message)"));let u=r.filter(h=>!ce(h)).flatMap(h=>this.sub(h));return this.tok(e,"redirect",l,u)}heredoc(e){let t=e.children.find(d=>!d.isNamed)?.type??"<<",n=e.namedChildren.find(d=>d.type==="heredoc_start")?.text??"",r=e.namedChildren.find(d=>d.type==="heredoc_body"),a=n.replace(/^['"\\]|['"]$/g,""),o=n!==a,l=this.s(`\u30D2\u30A2\u30C9\u30AD\u30E5\u30E1\u30F3\u30C8: \u6B21\u306E\u884C\u304B\u3089 \`${a}\` \u3060\u3051\u306E\u884C\u307E\u3067\u3092\u6A19\u6E96\u5165\u529B\u3068\u3057\u3066\u6E21\u3059`,`Here-document: the following lines up to a line containing only \`${a}\` become stdin`);t==="<<-"&&(l+=this.s("\u3002`<<-` \u306A\u306E\u3067\u5404\u884C\u5148\u982D\u306E\u30BF\u30D6\u306F\u53D6\u308A\u9664\u304B\u308C\u308B",". With `<<-`, leading tabs are stripped")),l+=o?this.s("\u3002\u533A\u5207\u308A\u8A9E\u304C\u30AF\u30A9\u30FC\u30C8\u3055\u308C\u3066\u3044\u308B\u306E\u3067\u672C\u6587\u4E2D\u306E\u5909\u6570\u3084\u30B3\u30DE\u30F3\u30C9\u7F6E\u63DB\u306F\u5C55\u958B\u3055\u308C\u306A\u3044",". The delimiter is quoted, so nothing in the body is expanded"):this.s("\u3002\u672C\u6587\u4E2D\u306E `$\u5909\u6570` \u3084 `$(\u2026)` \u306F\u5C55\u958B\u3055\u308C\u308B",". `$vars` and `$(\u2026)` in the body are expanded"),l+=this.lineRef(e);let c=`${t}${n}`,u=[...r?this.subs(r.namedChildren.filter(d=>d.type!=="heredoc_content")):[],...this.subs(e.namedChildren.filter(d=>d.type.endsWith("redirect")))],h=e.namedChildren.find(d=>d.type==="heredoc_start")??e;return{kind:"redirect",label:c,explanation:l,children:u,span:{start:ye(e).start,end:ye(h).end}}}herestring(e){return this.tok(e,"redirect",this.s("\u30D2\u30A2\u30B9\u30C8\u30EA\u30F3\u30B0 `<<<`: \u7D9A\u304F\u6587\u5B57\u5217\uFF08\u672B\u5C3E\u306B\u6539\u884C\u304C\u4ED8\u304F\uFF09\u3092\u6A19\u6E96\u5165\u529B\u3068\u3057\u3066\u6E21\u3059","Here-string `<<<`: the following word (plus a newline) becomes stdin"),this.subs(e.namedChildren.filter(t=>!ce(t))))}assignment(e){let t=e.childForFieldName("name"),n=e.childForFieldName("value"),r=e.children.find(c=>!c.isNamed&&(c.type==="="||c.type==="+="))?.type??"=",a=t?.text??"?",o=r==="+="?this.s(`\u5909\u6570 \`${a}\` \u306B\u5024\u3092\u8FFD\u8A18\u3059\u308B\uFF08\u914D\u5217\u306A\u3089\u8981\u7D20\u3092\u8FFD\u52A0\uFF09`,`Append to variable \`${a}\` (adds elements for arrays)`):n?this.s(`\u5909\u6570 \`${a}\` \u306B\u5024\u3092\u4EE3\u5165\u3059\u308B\uFF08\`=\` \u306E\u524D\u5F8C\u306B\u7A7A\u767D\u306F\u5165\u308C\u3089\u308C\u306A\u3044\uFF09`,`Assign a value to variable \`${a}\` (no spaces around \`=\`)`):this.s(`\u5909\u6570 \`${a}\` \u306B\u7A7A\u6587\u5B57\u3092\u4EE3\u5165\u3059\u308B`,`Set variable \`${a}\` to the empty string`);t?.type==="subscript"&&(o=this.s(`\u914D\u5217 \`${t.childForFieldName("name")?.text}\` \u306E\u8981\u7D20 \`[${t.childForFieldName("index")?.text}]\` \u306B\u4EE3\u5165\u3059\u308B`,`Assign to element \`[${t.childForFieldName("index")?.text}]\` of array \`${t.childForFieldName("name")?.text}\``));let l=[];if(n)for(let c of this.sub(n))ce(n)&&(c.explanation=this.s(`\u4EE3\u5165\u3059\u308B\u5024 \`${n.text}\``,`Value \`${n.text}\``)),l.push(c);return this.tok(e,"assignment",o,l)}declaration(e){let t=e.child(0)?.type??"declare",n=ca[t],r=[];for(let o of e.namedChildren)if(!(this.line!==null&&!he(o,this.line)))if(o.type==="word"&&o.text.startsWith("-")){let l=o.text.slice(1).split("").map(c=>la["-"+c]).filter(Boolean);r.push(this.tok(o,"option",l.length?l.map(c=>this.t(c)).join(this.s("\u3001",", ")):this.s("\u30AA\u30D7\u30B7\u30E7\u30F3","Option")))}else o.type==="variable_name"||o.type==="word"?r.push(this.tok(o,"variable",this.s(`\u5909\u6570 \`${o.text}\` \u3092\u5BFE\u8C61\u306B\u3059\u308B`,`Variable \`${o.text}\``))):r.push(...this.sub(o));let a=this.tok(e,"builtin",n?this.t(n):t,r);return a.summary=`${t}: ${a.explanation}`,a}unset(e){let t=this.tok(e,"builtin",this.t(jt.unset.summary),this.subs(e.namedChildren.filter(n=>!ce(n)&&n.type!=="variable_name")));return t.summary=`unset: ${t.explanation}`,t}wantsExample(e){let t=this.opts.examples;return t?t.enabled&&!(e.kind&&t.disabled.includes(e.kind)):!0}titledExamples(e,t){return e.descendantsOfType(["command","test_command"],{row:t,column:0},{row:t+1,column:0}).filter(r=>he(r,t)).length<2?this.examples:this.examples.map(r=>{if(!r.target)return r;let a=`\`${r.target}\``,o=this.lang==="ja"?r.title.replace(/^例/,`${a} \u306E\u4F8B`):r.title.replace(/^Example/,`Example for ${a}`);return{...r,title:o}})}command(e){let t=this.examples.length,n=this.commandToken(e);return this.tagExamples(t,e),n}tagExamples(e,t){let n=de(t.text.replace(/\s*\\\n\s*/g," "),40);for(let r of this.examples.slice(e))r.target??=n;this.anchorExamples(e,t)}anchorExamples(e,t){for(let n of this.examples.slice(e))n.anchor??=ye(t)}commandToken(e){let t=e.childForFieldName("name"),n=[],r=[],a=[],o=!1;for(let p=0;p<e.childCount;p++){let f=e.child(p);if(Se(f,t)){o=!0;continue}if(f.type.endsWith("redirect")){a.push(f);continue}if(!o&&f.type==="variable_assignment"){for(let m of this.sub(f))m.explanation=this.s(`\u3053\u306E\u30B3\u30DE\u30F3\u30C9\u306E\u5B9F\u884C\u4E2D\u3060\u3051\u8A2D\u5B9A\u3055\u308C\u308B\u74B0\u5883\u5909\u6570: ${m.explanation}`,`Environment variable set only for this command: ${m.explanation}`),n.push(m);continue}f.isNamed&&r.push(f)}if(!t)return this.tok(e,"assignment",this.s("\u5909\u6570\u3078\u306E\u4EE3\u5165","Variable assignment"),[...n,...this.subs(a)]);let l=t.namedChildren.length===1&&t.namedChildren[0].type==="arithmetic_expansion"&&t.text.startsWith("((")?t.namedChildren[0]:void 0;if(l&&!r.length&&!n.length){(this.line===null||e.startPosition.row===this.line)&&l.namedChildren.length===1&&this.testExampleFor("((",l.namedChildren[0]);let p=this.tok(e,"test",this.arithTestExplanation(),[...this.subs(l.namedChildren),...this.subs(a)]);return p.summary=this.s(`\u6761\u4EF6\u5224\u5B9A ${de(e.text,40)}`,`test ${de(e.text,40)}`),p}let c=this.commandHead(t);if(c.name.split("/").pop()==="yq"){let p=pi(r.map(f=>se(f)?.text),{doc:this.source,host:this.opts.host,setting:this.opts.yqFlavor});c.doc=vi[p.flavor],c.explanation=this.t(c.doc.summary),(this.line===null||e.startPosition.row===this.line)&&this.extraNotes.push(...mi(p,this.lang))}let u=this.args(c.doc,r,c.name);this.commandExampleFor(c.name,r),c.name==="read"&&this.readExample(e,r);for(let p of r){let f=this.examples.length;this.wordExample(p),this.anchorExamples(f,p)}let h=this.tok(e,c.kind,c.explanation,Fe([...n,...c.nameTokens,...u,...this.subs(a)]));h.summary=`${c.name}: ${c.explanation}`;let d=c.doc?.subcommands&&u.find(p=>p.kind==="command"&&!p.children.length);return d&&(h.summary=`${c.name} ${d.label}: ${this.t(c.doc.subcommands[d.label]?.summary??c.doc.summary)}`),h}commandHead(e){let t=e.namedChildren[0]??e,n=ce(t)?t.text:e.text;if(!ce(t)&&t.type!=="raw_string")return{name:n,kind:"command",nameTokens:this.sub(t),explanation:this.s("\u5909\u6570\uFF08\u5C55\u958B\u7D50\u679C\uFF09\u3092\u30B3\u30DE\u30F3\u30C9\u540D\u3068\u3057\u3066\u5B9F\u884C\u3059\u308B","Run the expanded value as a command")};let r=this.functions.get(n);if(r!==void 0)return{name:n,kind:"function",nameTokens:[],explanation:this.s(`\u3053\u306E\u30B9\u30AF\u30EA\u30D7\u30C8\u306E\u884C ${r+1} \u3067\u5B9A\u7FA9\u3055\u308C\u305F\u95A2\u6570 \`${n}\` \u3092\u547C\u3073\u51FA\u3059`,`Call the function \`${n}\` defined on line ${r+1}`),doc:{summary:{ja:"",en:""},positional:[]}};let a=gs(this.opts.customCommands?.[n.split("/").pop()??n]);if(a)return{name:n,doc:a,kind:"command",nameTokens:[],explanation:this.t(a.summary)+this.s("\uFF08\u8A2D\u5B9A customCommands \u3067\u5B9A\u7FA9\uFF09"," (from the customCommands setting)")};let o=ha(n);if(o)return{name:n,doc:o,kind:o.builtin?"builtin":"command",nameTokens:[],explanation:this.t(o.summary)+(o.builtin?this.s("\uFF08\u30B7\u30A7\u30EB\u7D44\u307F\u8FBC\u307F\uFF09"," (shell builtin)"):"")};let l=n.includes("/")?this.s(`\u30D1\u30B9 \`${n}\` \u306B\u3042\u308B\u30D7\u30ED\u30B0\u30E9\u30E0\u30FB\u30B9\u30AF\u30EA\u30D7\u30C8\u3092\u5B9F\u884C\u3059\u308B`,`Run the program or script at \`${n}\``):this.s(`\u5916\u90E8\u30B3\u30DE\u30F3\u30C9 \`${n}\` \u3092\u5B9F\u884C\u3059\u308B\uFF08\u8F9E\u66F8\u306B\u672A\u767B\u9332\u3002\`man ${n}\` \u3084 \`${n} --help\` \u3092\u53C2\u7167\uFF09`,`Run the external command \`${n}\` (not in the dictionary; see \`man ${n}\`)`);return{name:n,kind:"command",nameTokens:[],explanation:l}}args(e,t,n){if(e&&n.split("/").pop()==="find"){let u=this.findArgs(e,t);if(u)return u}let r=[],a=jl(e,t)?1:0,o=!1,l=this.functions.has(n),c=this.argCtx;this.argCtx={cmd:n,args:t};try{for(let u=0;u<t.length;u++){let h=t[u],d=h.text;if(!o&&ce(h)&&d==="--"){r.push(this.tok(h,"option",this.s("\u30AA\u30D7\u30B7\u30E7\u30F3\u306E\u7D42\u308F\u308A: \u4EE5\u964D\u306F `-` \u3067\u59CB\u307E\u3063\u3066\u3044\u3066\u3082\u901A\u5E38\u306E\u5F15\u6570\u3068\u3057\u3066\u6271\u3046","End of options: everything after is a plain argument"))),o=!0;continue}let p=h.type==="concatenation"&&/^--[\w-]+=/.test(h.namedChildren[0]?.text??"");if(!o&&(ce(h)||p)&&d.length>1&&(d.startsWith("-")||n==="set"&&d.startsWith("+"))){u=this.option(e,t,u,n,r);continue}if(a===0&&e?.wraps){r.push(this.wrapped(t.slice(u)));break}if(a===0&&ce(h)&&e?.subcommands?.[d]){let _=e.subcommands[d],b=this.args(_,t.slice(u+1),`${n} ${d}`);r.push({...this.tok(h,"command",this.s(`\u30B5\u30D6\u30B3\u30DE\u30F3\u30C9 \`${n} ${d}\`: `,`Subcommand \`${n} ${d}\`: `)+this.t(_.summary)),children:[]},...b);break}let m;l?m=this.s(`\u95A2\u6570\u3078\u306E\u5F15\u6570 $${a+1}`,`Argument $${a+1} to the function`):e?.positional?.length&&(m=this.t(e.positional[Math.min(a,e.positional.length-1)]));let g=l?void 0:e?.positionalLang?.[a];a++,!(this.line!==null&&!he(h,this.line))&&r.push(this.positional(h,m,g))}}finally{this.argCtx=c}return r}positional(e,t,n){let r=n&&this.embedded(e,n);if(r&&t&&r.note&&(t+=` \u2014 ${r.note}`),ce(e)){if(r)return this.tok(e,"argument",t??this.s("\u5F15\u6570","Argument"),r.tokens);let o=this.word(e);if(!t)return o;let l=Is(e.text)?this.s("\uFF08\u30B0\u30ED\u30D6: \u4E00\u81F4\u3059\u308B\u30D5\u30A1\u30A4\u30EB\u540D\u306E\u4E00\u89A7\u306B\u5C55\u958B\u3055\u308C\u308B\uFF09"," (glob: expands to matching file names)"):"";return this.tok(e,"argument",t+l)}let a=this.sub(e);return r&&a[0]&&(a[0].children=Fe([...a[0].children,...r.tokens])),t?this.tok(e,"argument",t,a):a[0]??this.tok(e,"argument",this.s("\u5F15\u6570","Argument"))}embedded(e,t){let n=se(e);return n&&this.embeddedText(n,t,e)}embeddedText(e,t,n){let r=this.examples.length,a=this.embeddedTextInner(e,t,n);return this.anchorExamples(r,n),a}embeddedTextInner(e,t,n){let r,a;switch(t){case"regex":{let o=this.regexFlavor();a=Qs(o,this.lang),r=o==="fixed"?[]:Ne(e.text,o,this.lang);let l=this.cmdFlags(),c=l.has("-i")||l.has("--ignore-case"),u=o==="fixed"?Ut(e.text,c):ie(e.text,o,{ignoreCase:c});if(u){let h=zt(u,l.has("-x")||l.has("--line-regexp"),l.has("-w")||l.has("--word-regexp"));this.regexExample(h,l.has("-v")||l.has("--invert-match")?"inverted":"lines")}break}case"sed":{let o=this.regexFlavor();r=Xi(e.text,o==="ere"?"ere":"bre",this.lang);let l=this.cmdFlags(),c=this.sedScripts()??[e.text],u=Xt(c.join(`
91
91
  `),{quiet:l.has("-n")||l.has("--quiet")||l.has("--silent"),extended:o==="ere"});u&&this.ioExample(u.input,u.output,l.has("-i")||l.has("--in-place"),{kind:"sed",script:c.join(`
92
- `),quiet:l.has("-n")||l.has("--quiet")||l.has("--silent"),extended:o==="ere",highlight:Pl(c.join(`
93
- `),o==="ere"?"ere":"bre")});break}case"jq":{if(r=Bn(e.text,this.lang),this.argCtx?.cmd.split("/").pop()==="yq"){this.yqExample(e.text,"kislyuk");break}let o=this.cmdFlags(),l=Xn(e.text,{raw:o.has("-r")||o.has("--raw-output")||o.has("-j")||o.has("--join-output"),nullInput:o.has("-n")||o.has("--null-input"),vars:this.jqVars()});l&&this.jqExamples(l,{kind:"jq",filter:e.text,raw:o.has("-r")||o.has("--raw-output")||o.has("-j")||o.has("--join-output"),vars:this.jqVars()});break}case"awk":{r=Zs(e.text,this.lang);let o=this.awkOptions(),l=Jt(e.text,o);l&&this.ioExample(l.input,l.output,!1,{kind:"awk",program:e.text,fs:o.fs,vars:o.vars});break}case"printf":r=ft(e.text,this.lang),a=Gs(e.text,this.lang);break;case"mode":case"umask":{let o=t==="mode"?Oi(e.text,this.lang):Pi(e.text,this.lang);if(!o)return;r=o.tokens,a=o.note;break}case"sortkey":case"cutfields":case"cutchars":{let o=t==="sortkey"?qi(e.text,this.lang):Ui(e.text,t==="cutfields"?"field":"char",this.lang);if(!o)return;r=o.tokens,a=o.note;break}case"trset":{let{role:o,sets:l}=this.trContext(n),c=Di(e.text,o,this.lang);if(!c)return;r=c.tokens;let u=o==="to"?zi(l[0]??"",e.text,this.lang):void 0;a=u?`${c.note}${this.s("\u3002\u3064\u307E\u308A","; that is, it ")}${u}`:c.note;break}case"yq4":r=Bn(e.text,this.lang,"yq"),this.yqExample(e.text,"mikefarah");break;case"yq3path":{let o=li(e.text,this.lang);if(!o)return;r=o.tokens;break}case"getoptshort":case"getoptlong":{let o=t==="getoptshort"?xi(e.text,this.lang):wi(e.text,this.lang);if(!o)return;r=o.tokens,a=o.note;break}case"getopts":{let o=ti(e.text,this.lang);if(!o)return;r=o.tokens,a=o.note;break}case"perl":{r=Ci(e.text,this.lang);let o=new Set;for(let l of this.argCtx?.args??[]){let c=/^-([a-zA-Z0-9]+)/.exec(l.text);if(c&&!l.text.startsWith("--")){for(let u of c[1])if(o.add(u),"eEiFM0".includes(u))break}}a=Ii(o,this.lang);break}case"gitformat":case"gitdate":{let o=t==="gitformat"?Ei(e.text,this.lang):Si(e.text,this.lang);if(!o)return;r=o.tokens,a=o.note,this.gitLogExample(t,e.text);break}case"glob":{if(r=[],a=ei(e.text,this.lang),!a)return;let o=n.previousNamedSibling?.text??"";/^-i/.test(o)||this.globExample(e.text,"value",this.s(`\u4F8B\uFF08\`${o}\` \u306E\u30D1\u30BF\u30FC\u30F3\uFF09`,`Example (the \`${o}\` pattern)`),o==="-name"?[this.s("\u4E00\u81F4\u3059\u308B\u30D5\u30A1\u30A4\u30EB\u540D","Matching names"),this.s("\u4E00\u81F4\u3057\u306A\u3044\u30D5\u30A1\u30A4\u30EB\u540D","Non-matching names")]:[this.s("\u4E00\u81F4\u3059\u308B\u30D1\u30B9","Matching paths"),this.s("\u4E00\u81F4\u3057\u306A\u3044\u30D1\u30B9","Non-matching paths")]);break}case"date":{if(!e.text.startsWith("+"))return;r=zt(e.text,this.lang);let o=Ys(e.text);o!==void 0&&(a=this.s(`\u4ECA\u306A\u3089\u300C${o}\u300D\u306E\u3088\u3046\u306B\u8868\u793A\u3055\u308C\u308B`,`right now this prints "${o}"`));break}}return{tokens:r.map(o=>this.fromEmbedded(o,n,e)),note:a}}fromEmbedded(e,t,n){let r=t.text,a=(l,c=!1)=>{let u=Ss(n,l,c),h=r.slice(0,u),d=h.lastIndexOf(`
92
+ `),quiet:l.has("-n")||l.has("--quiet")||l.has("--silent"),extended:o==="ere",highlight:ql(c.join(`
93
+ `),o==="ere"?"ere":"bre")});break}case"jq":{if(r=es(e.text,this.lang),this.argCtx?.cmd.split("/").pop()==="yq"){this.yqExample(e.text,"kislyuk");break}let o=this.cmdFlags(),l=is(e.text,{raw:o.has("-r")||o.has("--raw-output")||o.has("-j")||o.has("--join-output"),nullInput:o.has("-n")||o.has("--null-input"),vars:this.jqVars()});l&&this.jqExamples(l,{kind:"jq",filter:e.text,raw:o.has("-r")||o.has("--raw-output")||o.has("-j")||o.has("--join-output"),vars:this.jqVars()});break}case"awk":{r=rr(e.text,this.lang);let o=this.awkOptions(),l=Bt(e.text,o);l&&this.ioExample(l.input,l.output,!1,{kind:"awk",program:e.text,fs:o.fs,vars:o.vars});break}case"printf":r=mt(e.text,this.lang),a=nr(e.text,this.lang);break;case"mode":case"umask":{let o=t==="mode"?Wi(e.text,this.lang):Vi(e.text,this.lang);if(!o)return;r=o.tokens,a=o.note;break}case"sortkey":case"cutfields":case"cutchars":{let o=t==="sortkey"?Hi(e.text,this.lang):Gi(e.text,t==="cutfields"?"field":"char",this.lang);if(!o)return;r=o.tokens,a=o.note;break}case"trset":{let{role:o,sets:l}=this.trContext(n),c=Yi(e.text,o,this.lang);if(!c)return;r=c.tokens;let u=o==="to"?Zi(l[0]??"",e.text,this.lang):void 0;a=u?`${c.note}${this.s("\u3002\u3064\u307E\u308A","; that is, it ")}${u}`:c.note;break}case"yq4":r=es(e.text,this.lang,"yq"),this.yqExample(e.text,"mikefarah");break;case"yq3path":{let o=gi(e.text,this.lang);if(!o)return;r=o.tokens;break}case"getoptshort":case"getoptlong":{let o=t==="getoptshort"?Ni(e.text,this.lang):Ti(e.text,this.lang);if(!o)return;r=o.tokens,a=o.note;break}case"getopts":{let o=ci(e.text,this.lang);if(!o)return;r=o.tokens,a=o.note;break}case"perl":{r=Ui(e.text,this.lang);let o=new Set;for(let l of this.argCtx?.args??[]){let c=/^-([a-zA-Z0-9]+)/.exec(l.text);if(c&&!l.text.startsWith("--")){for(let u of c[1])if(o.add(u),"eEiFM0".includes(u))break}}a=zi(o,this.lang);break}case"gitformat":case"gitdate":{let o=t==="gitformat"?Ii(e.text,this.lang):Fi(e.text,this.lang);if(!o)return;r=o.tokens,a=o.note,this.gitLogExample(t,e.text);break}case"glob":{if(r=[],a=li(e.text,this.lang),!a)return;let o=n.previousNamedSibling?.text??"";/^-i/.test(o)||this.globExample(e.text,"value",this.s(`\u4F8B\uFF08\`${o}\` \u306E\u30D1\u30BF\u30FC\u30F3\uFF09`,`Example (the \`${o}\` pattern)`),o==="-name"?[this.s("\u4E00\u81F4\u3059\u308B\u30D5\u30A1\u30A4\u30EB\u540D","Matching names"),this.s("\u4E00\u81F4\u3057\u306A\u3044\u30D5\u30A1\u30A4\u30EB\u540D","Non-matching names")]:[this.s("\u4E00\u81F4\u3059\u308B\u30D1\u30B9","Matching paths"),this.s("\u4E00\u81F4\u3057\u306A\u3044\u30D1\u30B9","Non-matching paths")]);break}case"date":{if(!e.text.startsWith("+"))return;r=Wt(e.text,this.lang);let o=sr(e.text);o!==void 0&&(a=this.s(`\u4ECA\u306A\u3089\u300C${o}\u300D\u306E\u3088\u3046\u306B\u8868\u793A\u3055\u308C\u308B`,`right now this prints "${o}"`));break}}return{tokens:r.map(o=>this.fromEmbedded(o,n,e)),note:a}}fromEmbedded(e,t,n){let r=t.text,a=(l,c=!1)=>{let u=Fs(n,l,c),h=r.slice(0,u),d=h.lastIndexOf(`
94
94
  `),p=h.split(`
95
- `).length-1;return p===0?{line:t.startPosition.row,character:t.startPosition.column+u}:{line:t.startPosition.row+p,character:u-d-1}},o=e.label??r.slice(Ss(n,e.start,!1),Ss(n,e.end,!0));return{kind:e.kind,label:de(o),explanation:e.explanation,span:{start:a(e.start),end:a(e.end,!0)},children:e.children.map(l=>this.fromEmbedded(l,t,n)),...e.group?{group:e.group}:{}}}findArgs(e,t){let n=[],r=e.options??{},a=m=>this.line===null||he(m,this.line),o=0;for(;o<t.length&&/^-[HLP]$/.test(t[o].text);)o=this.option(e,t,o,"find",n)+1;for(;o<t.length&&!Zr(t[o].text);)a(t[o])&&n.push(this.positional(t[o],this.t(e.positional[0]))),o++;if(o>=t.length)return n;let l=t.slice(o),c=l.map(m=>ns(m.text)),u=Xr(c,m=>r[m]?.untilTerminator?"until":r[m]?.arg?1:0);if(!u)return;let h=(m,g,_)=>a(l[m])?[this.tok(l[m],"operator",this.s(g,_))]:[],d=m=>{switch(m.type){case"primary":{let g=[];return this.option(e,l,m.from,"find",g),g}case"not":return[...h(m.op,"`!`: \u76F4\u5F8C\u306E\u6761\u4EF6\u3092\u5426\u5B9A\u3059\u308B","`!`: negates what follows"),...d(m.child)];case"group":{let g=[...h(m.open,"`\\(`: \u30B0\u30EB\u30FC\u30D7\u306E\u958B\u59CB\uFF08\u30B7\u30A7\u30EB\u306B\u89E3\u91C8\u3055\u308C\u306A\u3044\u3088\u3046 `\\` \u3067\u30A8\u30B9\u30B1\u30FC\u30D7\u3059\u308B\uFF09","`\\(`: start of a group (escaped so the shell leaves it alone)"),...d(m.child),...h(m.close,"`\\)`: \u30B0\u30EB\u30FC\u30D7\u306E\u7D42\u308F\u308A","`\\)`: end of the group")],_={start:we(l[m.open]).start,end:we(l[m.close]).end};return[{kind:"block",label:de(c.slice(m.open,m.close+1).join(" ")),span:_,children:g,explanation:this.s("\u30B0\u30EB\u30FC\u30D7: \u62EC\u5F27\u306E\u4E2D\u3092\u5148\u306B\u307E\u3068\u3081\u3066\u8A55\u4FA1\u3059\u308B","Group: evaluated as one condition")}]}case"and":case"or":{let g=new Set(m.ops),_=m.children.flatMap(d);for(let b of g)_.push(...m.type==="or"?h(b,"`-o`: \u307E\u305F\u306F\uFF08\u5DE6\u53F3\u3069\u3061\u3089\u304B\u304C\u771F\u306A\u3089\u771F\u3002`-a` \u3088\u308A\u512A\u5148\u9806\u4F4D\u304C\u4F4E\u3044\uFF09","`-o`: or (lower precedence than `-a`)"):h(b,"`-a`: \u304B\u3064\uFF08\u7701\u7565\u3057\u3066\u3082\u540C\u3058\uFF09","`-a`: and (the default when omitted)"));return Ie(_)}}},p=l[0],f=l[l.length-1];return n.push({kind:"test",label:de(c.join(" ")),explanation:Qr(u,this.lang),span:{start:we(p).start,end:we(f).end},children:d(u)}),n}trContext(e){let t=this.argCtx?.args??[],n=t.filter(l=>/^-[a-zA-Z]+$/.test(l.text)).map(l=>l.text.slice(1)).join(""),r=t.filter(l=>!/^-[a-zA-Z]+$/.test(l.text)),a=r.findIndex(l=>Ee(l,e)),o=r.map(l=>se(l)?.text??l.text);return n.includes("d")?{role:a===0?"delete":"squeeze",sets:o}:n.includes("s")&&r.length===1?{role:"squeeze",sets:o}:{role:a===0?"from":"to",sets:o}}cmdFlags(){let e=new Set;for(let t of this.argCtx?.args??[]){let n=t.text;if(n==="--")break;if(n.startsWith("--"))e.add(n.split("=")[0]);else if(/^-[A-Za-z]+$/.test(n))for(let r of n.slice(1))e.add("-"+r)}return e}regexExample(e,t){let n=be(e);if(!n)return;let r=n.matching,a=n.nonMatching,o;t==="inverted"?o=[{label:this.s("\u8868\u793A\u3055\u308C\u308B\u884C\uFF08\u4E00\u81F4\u3057\u306A\u3044\u884C\uFF09","Printed (lines that do not match)"),lines:a},{label:this.s("\u8868\u793A\u3055\u308C\u306A\u3044\u884C\uFF08\u4E00\u81F4\u3059\u308B\u884C\uFF09","Not printed (lines that match)"),lines:r}]:t==="values"?o=[{label:this.s("\u4E00\u81F4\u3059\u308B\u5024","Matches"),lines:r},{label:this.s("\u4E00\u81F4\u3057\u306A\u3044\u5024","Does not match"),lines:a}]:o=[{label:this.s("\u4E00\u81F4\u3059\u308B\u884C","Matching lines"),lines:r},{label:this.s("\u4E00\u81F4\u3057\u306A\u3044\u884C","Non-matching lines"),lines:a}],this.examples.push({kind:"regex",title:t==="inverted"?this.s("\u4F8B\uFF08`-v` \u306A\u306E\u3067\u4E00\u81F4\u3057\u306A\u3044\u884C\u304C\u8868\u793A\u3055\u308C\u308B\uFF09","Example (with `-v`, lines that do not match are printed)"):this.s("\u4F8B","Example"),sections:o.filter(l=>l.lines.length),interactive:this.interactive({kind:"regex",regex:e,mode:t},[...r,...a],this.s("\u8A66\u3059\u6587\u5B57\u5217\uFF081\u884C\u305A\u3064\u5224\u5B9A\u3057\u3001\u4E00\u81F4\u3057\u305F\u90E8\u5206\u3092\u8272\u4ED8\u3051\uFF09","Test strings (one per line; matches are highlighted)"))})}sedScripts(){let e=this.argCtx?.args??[],t=[];for(let n=0;n<e.length;n++){let r=e[n].text;if(r.startsWith("--expression="))t.push(se(e[n])?.text.slice(13)??"");else if(r==="--expression"||/^-[a-zA-Z]*e$/.test(r)){let a=e[++n];if(!a)break;let o=se(a);if(!o)return;t.push(o.text)}}return t.length?t:void 0}jqVars(){let e=this.argCtx?.args??[],t={};for(let n=0;n+2<e.length;n++){let r=e[n].text;if(r!=="--arg"&&r!=="--argjson")continue;let a=se(e[n+1])?.text,o=se(e[n+2])?.text;if(a!==void 0&&o!==void 0)try{t[a]=r==="--arg"?o:JSON.parse(o)}catch{}n+=2}return t}yqExample(e,t){let n=this.cmdFlags(),r=(this.argCtx?.args??[]).map(h=>se(h)?.text??"");if(t==="mikefarah"&&!ci(e))return;let a=r.map((h,d)=>/^(-o|--output-format)$/.test(h)?r[d+1]:/^-o=?(.+)$/.exec(h)?.[1]??/^--output-format=(.+)$/.exec(h)?.[1]).find(Boolean),o=t==="mikefarah"?a==="json"||a==="j":!(n.has("-y")||n.has("--yaml-output")||n.has("-Y")||n.has("--yaml-roundtrip"));if(t==="mikefarah"&&a&&!o&&a!=="yaml"&&a!=="y")return;let l=t==="mikefarah"?!o:n.has("-r")||n.has("--raw-output"),c=Xn(e,{raw:l,nullInput:n.has("-n")||n.has("--null-input"),vars:t==="kislyuk"?this.jqVars():{}});if(t==="mikefarah"&&(c=c?.filter(h=>!h.error)),!c?.length)return;let u=n.has("-i")||n.has("--inplace")||n.has("--in-place");try{c.forEach((h,d)=>{let p=Je(h.input,t),f=h.error?[h.error]:o?h.values.map(m=>l&&typeof m=="string"?m:ue(m)):fi(h.values,t);this.examples.push({kind:"yq",title:u?this.s("\u4F8B\uFF08\u30D5\u30A1\u30A4\u30EB\u306E\u4E2D\u8EAB\u304C\u3053\u3046\u66F8\u304D\u63DB\u308F\u308B\uFF09","Example (the file is rewritten like this)"):d===0?this.s("\u4F8B","Example"):this.s("\u4F8B\uFF08\u5024\u304C\u7121\u3044\u3068\u304D\uFF09","Example (when the value is missing)"),sections:[{label:this.s("\u5165\u529B\uFF08YAML\uFF09","Input (YAML)"),lines:p},h.error?{label:this.s("\u30A8\u30E9\u30FC","Error"),lines:f}:{label:this.s(`\u51FA\u529B\uFF08${o?"JSON":"YAML"}\uFF09`,`Output (${o?"JSON":"YAML"})`),lines:f,empty:this.s("\uFF08\u51FA\u529B\u306A\u3057\uFF09","(no output)")}]})})}catch(h){if(!(h instanceof Be))throw h}}jqExamples(e,t){e.forEach((n,r)=>{let a=ue(n.input),o=a.length<=60?[a]:JSON.stringify(n.input,null,2).split(`
95
+ `).length-1;return p===0?{line:t.startPosition.row,character:t.startPosition.column+u}:{line:t.startPosition.row+p,character:u-d-1}},o=e.label??r.slice(Fs(n,e.start,!1),Fs(n,e.end,!0));return{kind:e.kind,label:de(o),explanation:e.explanation,span:{start:a(e.start),end:a(e.end,!0)},children:e.children.map(l=>this.fromEmbedded(l,t,n)),...e.group?{group:e.group}:{}}}findArgs(e,t){let n=[],r=e.options??{},a=m=>this.line===null||he(m,this.line),o=0;for(;o<t.length&&/^-[HLP]$/.test(t[o].text);)o=this.option(e,t,o,"find",n)+1;for(;o<t.length&&!ri(t[o].text);)a(t[o])&&n.push(this.positional(t[o],this.t(e.positional[0]))),o++;if(o>=t.length)return n;let l=t.slice(o),c=l.map(m=>us(m.text)),u=ii(c,m=>r[m]?.untilTerminator?"until":r[m]?.arg?1:0);if(!u)return;let h=(m,g,_)=>a(l[m])?[this.tok(l[m],"operator",this.s(g,_))]:[],d=m=>{switch(m.type){case"primary":{let g=[];return this.option(e,l,m.from,"find",g),g}case"not":return[...h(m.op,"`!`: \u76F4\u5F8C\u306E\u6761\u4EF6\u3092\u5426\u5B9A\u3059\u308B","`!`: negates what follows"),...d(m.child)];case"group":{let g=[...h(m.open,"`\\(`: \u30B0\u30EB\u30FC\u30D7\u306E\u958B\u59CB\uFF08\u30B7\u30A7\u30EB\u306B\u89E3\u91C8\u3055\u308C\u306A\u3044\u3088\u3046 `\\` \u3067\u30A8\u30B9\u30B1\u30FC\u30D7\u3059\u308B\uFF09","`\\(`: start of a group (escaped so the shell leaves it alone)"),...d(m.child),...h(m.close,"`\\)`: \u30B0\u30EB\u30FC\u30D7\u306E\u7D42\u308F\u308A","`\\)`: end of the group")],_={start:ye(l[m.open]).start,end:ye(l[m.close]).end};return[{kind:"block",label:de(c.slice(m.open,m.close+1).join(" ")),span:_,children:g,explanation:this.s("\u30B0\u30EB\u30FC\u30D7: \u62EC\u5F27\u306E\u4E2D\u3092\u5148\u306B\u307E\u3068\u3081\u3066\u8A55\u4FA1\u3059\u308B","Group: evaluated as one condition")}]}case"and":case"or":{let g=new Set(m.ops),_=m.children.flatMap(d);for(let b of g)_.push(...m.type==="or"?h(b,"`-o`: \u307E\u305F\u306F\uFF08\u5DE6\u53F3\u3069\u3061\u3089\u304B\u304C\u771F\u306A\u3089\u771F\u3002`-a` \u3088\u308A\u512A\u5148\u9806\u4F4D\u304C\u4F4E\u3044\uFF09","`-o`: or (lower precedence than `-a`)"):h(b,"`-a`: \u304B\u3064\uFF08\u7701\u7565\u3057\u3066\u3082\u540C\u3058\uFF09","`-a`: and (the default when omitted)"));return Fe(_)}}},p=l[0],f=l[l.length-1];return n.push({kind:"test",label:de(c.join(" ")),explanation:oi(u,this.lang),span:{start:ye(p).start,end:ye(f).end},children:d(u)}),n}trContext(e){let t=this.argCtx?.args??[],n=t.filter(l=>/^-[a-zA-Z]+$/.test(l.text)).map(l=>l.text.slice(1)).join(""),r=t.filter(l=>!/^-[a-zA-Z]+$/.test(l.text)),a=r.findIndex(l=>Se(l,e)),o=r.map(l=>se(l)?.text??l.text);return n.includes("d")?{role:a===0?"delete":"squeeze",sets:o}:n.includes("s")&&r.length===1?{role:"squeeze",sets:o}:{role:a===0?"from":"to",sets:o}}cmdFlags(){let e=new Set;for(let t of this.argCtx?.args??[]){let n=t.text;if(n==="--")break;if(n.startsWith("--"))e.add(n.split("=")[0]);else if(/^-[A-Za-z]+$/.test(n))for(let r of n.slice(1))e.add("-"+r)}return e}regexExample(e,t){let n=be(e);if(!n)return;let r=n.matching,a=n.nonMatching,o;t==="inverted"?o=[{label:this.s("\u8868\u793A\u3055\u308C\u308B\u884C\uFF08\u4E00\u81F4\u3057\u306A\u3044\u884C\uFF09","Printed (lines that do not match)"),lines:a},{label:this.s("\u8868\u793A\u3055\u308C\u306A\u3044\u884C\uFF08\u4E00\u81F4\u3059\u308B\u884C\uFF09","Not printed (lines that match)"),lines:r}]:t==="values"?o=[{label:this.s("\u4E00\u81F4\u3059\u308B\u5024","Matches"),lines:r},{label:this.s("\u4E00\u81F4\u3057\u306A\u3044\u5024","Does not match"),lines:a}]:o=[{label:this.s("\u4E00\u81F4\u3059\u308B\u884C","Matching lines"),lines:r},{label:this.s("\u4E00\u81F4\u3057\u306A\u3044\u884C","Non-matching lines"),lines:a}],this.examples.push({kind:"regex",title:t==="inverted"?this.s("\u4F8B\uFF08`-v` \u306A\u306E\u3067\u4E00\u81F4\u3057\u306A\u3044\u884C\u304C\u8868\u793A\u3055\u308C\u308B\uFF09","Example (with `-v`, lines that do not match are printed)"):this.s("\u4F8B","Example"),sections:o.filter(l=>l.lines.length),interactive:this.interactive({kind:"regex",regex:e,mode:t},[...r,...a],this.s("\u8A66\u3059\u6587\u5B57\u5217\uFF081\u884C\u305A\u3064\u5224\u5B9A\u3057\u3001\u4E00\u81F4\u3057\u305F\u90E8\u5206\u3092\u8272\u4ED8\u3051\uFF09","Test strings (one per line; matches are highlighted)"))})}sedScripts(){let e=this.argCtx?.args??[],t=[];for(let n=0;n<e.length;n++){let r=e[n].text;if(r.startsWith("--expression="))t.push(se(e[n])?.text.slice(13)??"");else if(r==="--expression"||/^-[a-zA-Z]*e$/.test(r)){let a=e[++n];if(!a)break;let o=se(a);if(!o)return;t.push(o.text)}}return t.length?t:void 0}jqVars(){let e=this.argCtx?.args??[],t={};for(let n=0;n+2<e.length;n++){let r=e[n].text;if(r!=="--arg"&&r!=="--argjson")continue;let a=se(e[n+1])?.text,o=se(e[n+2])?.text;if(a!==void 0&&o!==void 0)try{t[a]=r==="--arg"?o:JSON.parse(o)}catch{}n+=2}return t}yqExample(e,t){let n=this.cmdFlags(),r=(this.argCtx?.args??[]).map(h=>se(h)?.text??"");if(t==="mikefarah"&&!_i(e))return;let a=r.map((h,d)=>/^(-o|--output-format)$/.test(h)?r[d+1]:/^-o=?(.+)$/.exec(h)?.[1]??/^--output-format=(.+)$/.exec(h)?.[1]).find(Boolean),o=t==="mikefarah"?a==="json"||a==="j":!(n.has("-y")||n.has("--yaml-output")||n.has("-Y")||n.has("--yaml-roundtrip"));if(t==="mikefarah"&&a&&!o&&a!=="yaml"&&a!=="y")return;let l=t==="mikefarah"?!o:n.has("-r")||n.has("--raw-output"),c=is(e,{raw:l,nullInput:n.has("-n")||n.has("--null-input"),vars:t==="kislyuk"?this.jqVars():{}});if(t==="mikefarah"&&(c=c?.filter(h=>!h.error)),!c?.length)return;let u=n.has("-i")||n.has("--inplace")||n.has("--in-place");try{c.forEach((h,d)=>{let p=Je(h.input,t),f=h.error?[h.error]:o?h.values.map(m=>l&&typeof m=="string"?m:ue(m)):ki(h.values,t);this.examples.push({kind:"yq",title:u?this.s("\u4F8B\uFF08\u30D5\u30A1\u30A4\u30EB\u306E\u4E2D\u8EAB\u304C\u3053\u3046\u66F8\u304D\u63DB\u308F\u308B\uFF09","Example (the file is rewritten like this)"):d===0?this.s("\u4F8B","Example"):this.s("\u4F8B\uFF08\u5024\u304C\u7121\u3044\u3068\u304D\uFF09","Example (when the value is missing)"),sections:[{label:this.s("\u5165\u529B\uFF08YAML\uFF09","Input (YAML)"),lines:p},h.error?{label:this.s("\u30A8\u30E9\u30FC","Error"),lines:f}:{label:this.s(`\u51FA\u529B\uFF08${o?"JSON":"YAML"}\uFF09`,`Output (${o?"JSON":"YAML"})`),lines:f,empty:this.s("\uFF08\u51FA\u529B\u306A\u3057\uFF09","(no output)")}]})})}catch(h){if(!(h instanceof Be))throw h}}jqExamples(e,t){e.forEach((n,r)=>{let a=ue(n.input),o=a.length<=60?[a]:JSON.stringify(n.input,null,2).split(`
96
96
  `);this.examples.push({kind:"jq",title:r===0?this.s("\u4F8B","Example"):this.s("\u4F8B\uFF08\u5024\u304C\u7121\u3044\u3068\u304D\uFF09","Example (when the value is missing)"),sections:[{label:this.s("\u5165\u529B","Input"),lines:o},n.error?{label:this.s("\u30A8\u30E9\u30FC","Error"),lines:[n.error]}:{label:this.s("\u51FA\u529B","Output"),lines:n.outputs,empty:this.s("\uFF08\u51FA\u529B\u306A\u3057\uFF09","(no output)")}],...t&&r===0&&n.input!==null?{interactive:this.interactive(t,JSON.stringify(n.input,null,2).split(`
97
- `),this.s("\u5165\u529B\uFF08JSON\uFF09","Input (JSON)"))}:{}})})}awkOptions(){let e=this.argCtx?.args??[],t={vars:{}},n=(r,a)=>{let o=se(e[r]);return o?o.text.slice(a):void 0};for(let r=0;r<e.length;r++){let a=e[r].text,o;if(a==="-F"||a==="-v")o=e[r+1]&&n(++r,0);else if(/^-[Fv]./.test(a))o=n(r,2);else if(a.startsWith("--field-separator="))o=n(r,18);else continue;if(o!==void 0)if(a.startsWith("-v")){let l=o.indexOf("=");l>0&&(t.vars[o.slice(0,l)]=o.slice(l+1))}else t.fs=o==="t"?" ":o.replace(/\\t/g," ")}return t}pipelineExample(e){if(this.line!==null&&e.startPosition.row!==this.line&&!ia(e))return;let t=[],n=!1;for(let[c,u]of e.namedChildren.entries()){let h=u;if(u.type==="redirected_statement"){let f=u.childForFieldName("body");if(!f||f.type!=="command")return;for(let m of u.namedChildren.filter(g=>!Ee(g,f))){let g=m.children.find(_=>!_.isNamed)?.type;if(m.type==="file_redirect"&&g==="<"&&c===0)n=!0;else if(!(m.type==="file_redirect"&&m.childForFieldName("descriptor")?.text==="2"))return}h=f}if(h.type!=="command")return;let d=h.childForFieldName("name");if(!d||!ce(d.namedChildren[0]??d))return;let p=h.namedChildren.filter(f=>!Ee(f,d)&&f.type!=="variable_assignment"&&!f.type.endsWith("redirect"));t.push({cmd:d.text.split("/").pop(),words:p.map(f=>se(f)?.text),text:de(h.text,40)})}let r=en(t,n);if(!r)return;let a=c=>(c.length>8?[...c.slice(0,7),"\u2026"]:c).map(De),o=[],l=n||Ir(t[0]);return r.input&&o.push({label:l?this.s("\u5165\u529B\uFF08\u30D5\u30A1\u30A4\u30EB\u306E\u4E2D\u8EAB\u306E\u4F8B\uFF09","Input (sample file contents)"):this.s("\u5165\u529B","Input"),lines:a(r.input)}),r.steps.forEach((c,u)=>{if(c.stage.cmd==="cat"&&u<r.steps.length-1)return;let h=u===r.steps.length-1,d=c.stage.cmd==="xargs"?this.s(`\`${c.stage.text}\` \u304C\u5B9F\u884C\u3059\u308B\u30B3\u30DE\u30F3\u30C9`,`Commands run by \`${c.stage.text}\``):h?this.s(`\u51FA\u529B\uFF08\`${c.stage.text}\` \u306E\u5F8C\uFF09`,`Output (after \`${c.stage.text}\`)`):this.s(`\`${c.stage.text}\` \u306E\u5F8C`,`After \`${c.stage.text}\``);o.push({label:d,lines:a(c.output),empty:this.s("\uFF08\u306A\u3057\uFF09","(nothing)")})}),{title:this.s("\u4F8B\uFF08\u30D1\u30A4\u30D7\u30E9\u30A4\u30F3\u5168\u4F53\uFF09","Example (the whole pipeline)"),sections:o,...r.input?{interactive:this.interactive({kind:"pipeline",stages:t},r.input,o[0].label)}:{}}}commandExampleFor(e,t){let n=e.split("/").pop()??e;if(n==="printf"){this.printfExample(t);return}if(n==="xargs"){this.xargsExample(t);return}if(n==="getopt"){this.getoptExample(t);return}if(n==="perl"){let o=t.map(h=>se(h)?.text),l=bt(o),c=l&&Ht(l.code,l.opts);if(!c)return;let u=o.some(h=>/^-[a-zA-Z]*i/.test(h??""));c.input.length?this.ioExample(c.input,c.output,u,{kind:"perl",code:l.code,opts:l.opts}):this.examples.push({kind:"perl",title:this.s("\u4F8B","Example"),sections:[{label:this.s("\u51FA\u529B","Output"),lines:c.output.map(De),empty:this.s("\uFF08\u51FA\u529B\u306A\u3057\uFF09","(no output)")}]});return}if(!(n in je)&&!["seq","basename","dirname"].includes(n))return;let r=t.map(o=>se(o)?.text),a=Er(n,r);a&&(a.input?this.ioExample(a.input,a.output,!1,je[n]?{kind:"filter",cmd:n,words:r}:void 0):this.examples.push({kind:"textFilters",title:this.s("\u4F8B","Example"),sections:[{label:this.s("\u51FA\u529B","Output"),lines:a.output.map(De)}]}))}unquotedWord(e){let t=n=>n.type==="word"||n.type==="number"||n.type==="brace_expression";if(t(e)||e.type==="concatenation"&&e.namedChildren.every(t))return e.text}wordExample(e){if(this.line!==null&&!he(e,this.line))return;let t=this.unquotedWord(e);if(t){try{let n=pr(t);if(n){this.examples.push({kind:"glob",title:this.s(`\u4F8B\uFF08\u30D6\u30EC\u30FC\u30B9\u5C55\u958B \`${t}\`\uFF09`,`Example (brace expansion \`${t}\`)`),sections:[{label:this.s("\u5C55\u958B\u5F8C\u306E\u5358\u8A9E","Resulting words"),lines:n.length>12?[...n.slice(0,11),"\u2026"]:n}]});return}}catch(n){if(!(n instanceof $e))throw n;return}fr(t)&&this.globExample(t,"file",this.s(`\u4F8B\uFF08\u30B0\u30ED\u30D6 \`${t}\`\uFF09`,`Example (glob \`${t}\`)`))}}globExample(e,t,n,r){let a=wt(e,t);if(!a)return;let[o,l]=r??(t==="file"?[this.s("\u4E00\u81F4\u3059\u308B\u30D5\u30A1\u30A4\u30EB\u540D","Matching file names"),this.s("\u4E00\u81F4\u3057\u306A\u3044\u30D5\u30A1\u30A4\u30EB\u540D","Non-matching file names")]:[this.s("\u4E00\u81F4\u3059\u308B\u5024","Matches"),this.s("\u4E00\u81F4\u3057\u306A\u3044\u5024","Does not match")]);this.examples.push({kind:"glob",title:n,sections:[{label:o,lines:a.matching},{label:l,lines:a.nonMatching}].filter(c=>c.lines.length),interactive:this.interactive({kind:"glob",pattern:e,mode:t},[...a.matching,...a.nonMatching],this.s("\u8A66\u3059\u540D\u524D\uFF081\u884C\u306B1\u3064\uFF09","Names to try (one per line)"))})}interactive(e,t,n=this.s("\u5165\u529B","Input")){return{spec:e,inputLabel:n,input:t,result:Br(e,t,this.lang)}}caseExample(e){let t=e.map(l=>this.unquotedWord(l)??(l.type==="extglob_pattern"?l.text:void 0));if(t.some(l=>l===void 0))return;let n=t,r=[],a=[];for(let l of n){let c=wt(l,"value");if(!c)return;r.push(...c.matching.slice(0,n.length>1?1:3)),a.push(...c.nonMatching)}let o=[...new Set(a)].filter(l=>!n.some(c=>Ae(c,l,"value"))).slice(0,2);this.examples.push({kind:"glob",title:this.s(`\u4F8B\uFF08\u30D1\u30BF\u30FC\u30F3 \`${n.join("|")}\`\uFF09`,`Example (pattern \`${n.join("|")}\`)`),sections:[{label:this.s("\u3053\u306E\u5206\u5C90\u306B\u5165\u308B\u5024","Values that take this branch"),lines:[...new Set(r)]},{label:this.s("\u5165\u3089\u306A\u3044\u5024","Values that do not"),lines:o}].filter(l=>l.lines.length)})}gitLogExample(e,t){let n=(this.argCtx?.args??[]).map(h=>se(h)?.text??""),r=h=>n.map(d=>h.exec(d)?.[1]).filter(d=>d!==void 0).pop(),a=e==="gitformat"?t:r(/^--(?:pretty|format)=([\s\S]*)$/)??(n.includes("--oneline")?"oneline":void 0),o=e==="gitdate"?t:r(/^--date=([\s\S]*)$/)??"default",l=Date.now(),c=Ti(l),u=r(/^(?:-n|--max-count=)(\d+)$/)??r(/^-(\d+)$/)??n.find((h,d)=>n[d-1]==="-n"&&/^\d+$/.test(h));u!==void 0&&(c=c.slice(0,Math.max(1,Number(u))));try{if(e==="gitdate"){this.examples.push({kind:"gitLog",title:this.s("\u4F8B\uFF08\u3053\u306E\u5F62\u5F0F\u3067\u8868\u793A\u3057\u305F\u65E5\u6642\uFF09","Example (dates in this style)"),sections:[{label:this.s("\u4F8B\u306E\u30B3\u30DF\u30C3\u30C8\u306E\u65E5\u6642\u304C\u3053\u3046\u8868\u793A\u3055\u308C\u308B\uFF08`%ad`\u30FB`%cd` \u3084 Date: \u884C\uFF09","How the sample commits' dates are shown (`%ad`, `%cd`, the Date: line)"),lines:c.map(p=>De(Ye(p.time,o,l)))}]});return}let h=!a||["short","medium","full","fuller"].includes(a),d=Ri(h?c.slice(0,2):c,a,o,l);this.examples.push({kind:"gitLog",title:this.s("\u4F8B\uFF08\u3053\u306E\u66F8\u5F0F\u3067\u306E `git log` \u306E\u51FA\u529B\uFF09","Example (`git log` output with this format)"),sections:[{label:this.s("\u4F8B\u306E\u30B3\u30DF\u30C3\u30C8\u3067\u306E\u51FA\u529B","Output for sample commits"),lines:d.map(De)}]})}catch(h){if(!(h instanceof Ue))throw h}}getoptExample(e){let t=e.map(l=>se(l)?.text),n={short:"",long:[]},r=0,a=(l,c,u)=>{if(l===c||u.includes(l))return t[++r];if(l.startsWith(c)&&l.length>2)return l.slice(2);let h=u.find(d=>l.startsWith(`${d}=`));return h?l.slice(h.length+1):void 0},o=!1;for(;r<t.length;r++){let l=t[r];if(l===void 0)return;if(l==="--")break;if(!l.startsWith("-")){o||(n.short=l,n.legacy=!0);break}if(/^-(o|-options)/.test(l)){let c=a(l,"-o",["--options"]);if(c===void 0)return;n.short=c,o=!0}else if(/^-(l|-long)/.test(l)){let c=a(l,"-l",["--longoptions","--long"]);if(c===void 0)return;n.long.push(...c.split(","))}else if(/^-(n|s|-name|-shell)/.test(l))(!l.includes("=")&&l.length===2||["--name","--shell"].includes(l))&&r++;else if(l==="-a"||l==="--alternative")n.alternative=!0;else if(/^-(Q|T|-quiet-output|-test)$/.test(l))return}if(!(!n.short&&!n.long.length))try{let l=$i(n),c=ki(n,l),u=l.map(h=>/^[\w.,=\/-]+$/.test(h)?h:`'${h.replace(/'/g,"'\\''")}'`).join(" ");this.examples.push({kind:"getopt",title:this.s("\u4F8B","Example"),sections:[{label:this.s("\u30B9\u30AF\u30EA\u30D7\u30C8\u306B\u6E21\u3055\u308C\u305F\u5F15\u6570\u306E\u4F8B","Sample arguments given to the script"),lines:[u]},{label:n.legacy?this.s("getopt \u306E\u51FA\u529B\uFF08`set --` \u306B\u6E21\u3059\u3068\u5F15\u6570\u304C\u3053\u306E\u9806\u306B\u4E26\u3073\u76F4\u308B\u3002\u65E7\u5F62\u5F0F\u306F\u30AF\u30A9\u30FC\u30C8\u3057\u306A\u3044\u306E\u3067\u7A7A\u767D\u3092\u542B\u3080\u5F15\u6570\u304C\u58CA\u308C\u308B\uFF09","What getopt prints (`set --` puts the arguments in this order; the old form does not quote, so arguments with spaces break)"):this.s("getopt \u306E\u51FA\u529B\uFF08`eval set --` \u306B\u6E21\u3059\u3068\u5F15\u6570\u304C\u3053\u306E\u9806\u306B\u4E26\u3073\u76F4\u308B\uFF09","What getopt prints (`eval set --` puts the arguments in this order)"),lines:[c.trimStart()]}]})}catch(l){if(!(l instanceof Ce))throw l}}xargsExample(e){let t=Tr(e.map(r=>se(r)?.text));if(!t)return;let n=t.input.endsWith(`
97
+ `),this.s("\u5165\u529B\uFF08JSON\uFF09","Input (JSON)"))}:{}})})}awkOptions(){let e=this.argCtx?.args??[],t={vars:{}},n=(r,a)=>{let o=se(e[r]);return o?o.text.slice(a):void 0};for(let r=0;r<e.length;r++){let a=e[r].text,o;if(a==="-F"||a==="-v")o=e[r+1]&&n(++r,0);else if(/^-[Fv]./.test(a))o=n(r,2);else if(a.startsWith("--field-separator="))o=n(r,18);else continue;if(o!==void 0)if(a.startsWith("-v")){let l=o.indexOf("=");l>0&&(t.vars[o.slice(0,l)]=o.slice(l+1))}else t.fs=o==="t"?" ":o.replace(/\\t/g," ")}return t}pipelineExample(e){if(this.line!==null&&e.startPosition.row!==this.line&&!da(e))return;let t=[],n=!1;for(let[c,u]of e.namedChildren.entries()){let h=u;if(u.type==="redirected_statement"){let f=u.childForFieldName("body");if(!f||f.type!=="command")return;for(let m of u.namedChildren.filter(g=>!Se(g,f))){let g=m.children.find(_=>!_.isNamed)?.type;if(m.type==="file_redirect"&&g==="<"&&c===0)n=!0;else if(!(m.type==="file_redirect"&&m.childForFieldName("descriptor")?.text==="2"))return}h=f}if(h.type!=="command")return;let d=h.childForFieldName("name");if(!d||!ce(d.namedChildren[0]??d))return;let p=h.namedChildren.filter(f=>!Se(f,d)&&f.type!=="variable_assignment"&&!f.type.endsWith("redirect"));t.push({cmd:d.text.split("/").pop(),words:p.map(f=>se(f)?.text),text:de(h.text,40)})}let r=tn(t,n);if(!r)return;let a=c=>(c.length>8?[...c.slice(0,7),"\u2026"]:c).map(Ue),o=[],l=n||zr(t[0]);return r.input&&o.push({label:l?this.s("\u5165\u529B\uFF08\u30D5\u30A1\u30A4\u30EB\u306E\u4E2D\u8EAB\u306E\u4F8B\uFF09","Input (sample file contents)"):this.s("\u5165\u529B","Input"),lines:a(r.input)}),r.steps.forEach((c,u)=>{if(c.stage.cmd==="cat"&&u<r.steps.length-1)return;let h=u===r.steps.length-1,d=c.stage.cmd==="xargs"?this.s(`\`${c.stage.text}\` \u304C\u5B9F\u884C\u3059\u308B\u30B3\u30DE\u30F3\u30C9`,`Commands run by \`${c.stage.text}\``):h?this.s(`\u51FA\u529B\uFF08\`${c.stage.text}\` \u306E\u5F8C\uFF09`,`Output (after \`${c.stage.text}\`)`):this.s(`\`${c.stage.text}\` \u306E\u5F8C`,`After \`${c.stage.text}\``);o.push({label:d,lines:a(c.output),empty:this.s("\uFF08\u306A\u3057\uFF09","(nothing)")})}),{title:this.s("\u4F8B\uFF08\u30D1\u30A4\u30D7\u30E9\u30A4\u30F3\u5168\u4F53\uFF09","Example (the whole pipeline)"),sections:o,...r.input?{interactive:this.interactive({kind:"pipeline",stages:t},r.input,o[0].label)}:{}}}commandExampleFor(e,t){let n=e.split("/").pop()??e;if(n==="printf"){this.printfExample(t);return}if(n==="xargs"){this.xargsExample(t);return}if(n==="getopt"){this.getoptExample(t);return}if(n==="perl"){let o=t.map(h=>se(h)?.text),l=xt(o),c=l&&Gt(l.code,l.opts);if(!c)return;let u=o.some(h=>/^-[a-zA-Z]*i/.test(h??""));c.input.length?this.ioExample(c.input,c.output,u,{kind:"perl",code:l.code,opts:l.opts}):this.examples.push({kind:"perl",title:this.s("\u4F8B","Example"),sections:[{label:this.s("\u51FA\u529B","Output"),lines:c.output.map(Ue),empty:this.s("\uFF08\u51FA\u529B\u306A\u3057\uFF09","(no output)")}]});return}if(!(n in je)&&!["seq","basename","dirname"].includes(n))return;let r=t.map(o=>se(o)?.text),a=Ir(n,r);a&&(a.input?this.ioExample(a.input,a.output,!1,je[n]?{kind:"filter",cmd:n,words:r}:void 0):this.examples.push({kind:"textFilters",title:this.s("\u4F8B","Example"),sections:[{label:this.s("\u51FA\u529B","Output"),lines:a.output.map(Ue)}]}))}unquotedWord(e){let t=n=>n.type==="word"||n.type==="number"||n.type==="brace_expression";if(t(e)||e.type==="concatenation"&&e.namedChildren.every(t))return e.text}wordExample(e){if(this.line!==null&&!he(e,this.line))return;let t=this.unquotedWord(e);if(t){try{let n=yr(t);if(n){this.examples.push({kind:"glob",title:this.s(`\u4F8B\uFF08\u30D6\u30EC\u30FC\u30B9\u5C55\u958B \`${t}\`\uFF09`,`Example (brace expansion \`${t}\`)`),sections:[{label:this.s("\u5C55\u958B\u5F8C\u306E\u5358\u8A9E","Resulting words"),lines:n.length>12?[...n.slice(0,11),"\u2026"]:n}]});return}}catch(n){if(!(n instanceof ve))throw n;return}kr(t)&&this.globExample(t,"file",this.s(`\u4F8B\uFF08\u30B0\u30ED\u30D6 \`${t}\`\uFF09`,`Example (glob \`${t}\`)`))}}globExample(e,t,n,r){let a=yt(e,t);if(!a)return;let[o,l]=r??(t==="file"?[this.s("\u4E00\u81F4\u3059\u308B\u30D5\u30A1\u30A4\u30EB\u540D","Matching file names"),this.s("\u4E00\u81F4\u3057\u306A\u3044\u30D5\u30A1\u30A4\u30EB\u540D","Non-matching file names")]:[this.s("\u4E00\u81F4\u3059\u308B\u5024","Matches"),this.s("\u4E00\u81F4\u3057\u306A\u3044\u5024","Does not match")]);this.examples.push({kind:"glob",title:n,sections:[{label:o,lines:a.matching},{label:l,lines:a.nonMatching}].filter(c=>c.lines.length),interactive:this.interactive({kind:"glob",pattern:e,mode:t},[...a.matching,...a.nonMatching],this.s("\u8A66\u3059\u540D\u524D\uFF081\u884C\u306B1\u3064\uFF09","Names to try (one per line)"))})}interactive(e,t,n=this.s("\u5165\u529B","Input")){return{spec:e,inputLabel:n,input:t,result:ei(e,t,this.lang)}}caseExample(e){let t=e.map(l=>this.unquotedWord(l)??(l.type==="extglob_pattern"?l.text:void 0));if(t.some(l=>l===void 0))return;let n=t,r=[],a=[];for(let l of n){let c=yt(l,"value");if(!c)return;r.push(...c.matching.slice(0,n.length>1?1:3)),a.push(...c.nonMatching)}let o=[...new Set(a)].filter(l=>!n.some(c=>Ae(c,l,"value"))).slice(0,2);this.examples.push({kind:"glob",title:this.s(`\u4F8B\uFF08\u30D1\u30BF\u30FC\u30F3 \`${n.join("|")}\`\uFF09`,`Example (pattern \`${n.join("|")}\`)`),sections:[{label:this.s("\u3053\u306E\u5206\u5C90\u306B\u5165\u308B\u5024","Values that take this branch"),lines:[...new Set(r)]},{label:this.s("\u5165\u3089\u306A\u3044\u5024","Values that do not"),lines:o}].filter(l=>l.lines.length)})}gitLogExample(e,t){let n=(this.argCtx?.args??[]).map(h=>se(h)?.text??""),r=h=>n.map(d=>h.exec(d)?.[1]).filter(d=>d!==void 0).pop(),a=e==="gitformat"?t:r(/^--(?:pretty|format)=([\s\S]*)$/)??(n.includes("--oneline")?"oneline":void 0),o=e==="gitdate"?t:r(/^--date=([\s\S]*)$/)??"default",l=Date.now(),c=Li(l),u=r(/^(?:-n|--max-count=)(\d+)$/)??r(/^-(\d+)$/)??n.find((h,d)=>n[d-1]==="-n"&&/^\d+$/.test(h));u!==void 0&&(c=c.slice(0,Math.max(1,Number(u))));try{if(e==="gitdate"){this.examples.push({kind:"gitLog",title:this.s("\u4F8B\uFF08\u3053\u306E\u5F62\u5F0F\u3067\u8868\u793A\u3057\u305F\u65E5\u6642\uFF09","Example (dates in this style)"),sections:[{label:this.s("\u4F8B\u306E\u30B3\u30DF\u30C3\u30C8\u306E\u65E5\u6642\u304C\u3053\u3046\u8868\u793A\u3055\u308C\u308B\uFF08`%ad`\u30FB`%cd` \u3084 Date: \u884C\uFF09","How the sample commits' dates are shown (`%ad`, `%cd`, the Date: line)"),lines:c.map(p=>Ue(Ye(p.time,o,l)))}]});return}let h=!a||["short","medium","full","fuller"].includes(a),d=ji(h?c.slice(0,2):c,a,o,l);this.examples.push({kind:"gitLog",title:this.s("\u4F8B\uFF08\u3053\u306E\u66F8\u5F0F\u3067\u306E `git log` \u306E\u51FA\u529B\uFF09","Example (`git log` output with this format)"),sections:[{label:this.s("\u4F8B\u306E\u30B3\u30DF\u30C3\u30C8\u3067\u306E\u51FA\u529B","Output for sample commits"),lines:d.map(Ue)}]})}catch(h){if(!(h instanceof De))throw h}}getoptExample(e){let t=e.map(l=>se(l)?.text),n={short:"",long:[]},r=0,a=(l,c,u)=>{if(l===c||u.includes(l))return t[++r];if(l.startsWith(c)&&l.length>2)return l.slice(2);let h=u.find(d=>l.startsWith(`${d}=`));return h?l.slice(h.length+1):void 0},o=!1;for(;r<t.length;r++){let l=t[r];if(l===void 0)return;if(l==="--")break;if(!l.startsWith("-")){o||(n.short=l,n.legacy=!0);break}if(/^-(o|-options)/.test(l)){let c=a(l,"-o",["--options"]);if(c===void 0)return;n.short=c,o=!0}else if(/^-(l|-long)/.test(l)){let c=a(l,"-l",["--longoptions","--long"]);if(c===void 0)return;n.long.push(...c.split(","))}else if(/^-(n|s|-name|-shell)/.test(l))(!l.includes("=")&&l.length===2||["--name","--shell"].includes(l))&&r++;else if(l==="-a"||l==="--alternative")n.alternative=!0;else if(/^-(Q|T|-quiet-output|-test)$/.test(l))return}if(!(!n.short&&!n.long.length))try{let l=Ai(n),c=Ri(n,l),u=l.map(h=>/^[\w.,=\/-]+$/.test(h)?h:`'${h.replace(/'/g,"'\\''")}'`).join(" ");this.examples.push({kind:"getopt",title:this.s("\u4F8B","Example"),sections:[{label:this.s("\u30B9\u30AF\u30EA\u30D7\u30C8\u306B\u6E21\u3055\u308C\u305F\u5F15\u6570\u306E\u4F8B","Sample arguments given to the script"),lines:[u]},{label:n.legacy?this.s("getopt \u306E\u51FA\u529B\uFF08`set --` \u306B\u6E21\u3059\u3068\u5F15\u6570\u304C\u3053\u306E\u9806\u306B\u4E26\u3073\u76F4\u308B\u3002\u65E7\u5F62\u5F0F\u306F\u30AF\u30A9\u30FC\u30C8\u3057\u306A\u3044\u306E\u3067\u7A7A\u767D\u3092\u542B\u3080\u5F15\u6570\u304C\u58CA\u308C\u308B\uFF09","What getopt prints (`set --` puts the arguments in this order; the old form does not quote, so arguments with spaces break)"):this.s("getopt \u306E\u51FA\u529B\uFF08`eval set --` \u306B\u6E21\u3059\u3068\u5F15\u6570\u304C\u3053\u306E\u9806\u306B\u4E26\u3073\u76F4\u308B\uFF09","What getopt prints (`eval set --` puts the arguments in this order)"),lines:[c.trimStart()]}]})}catch(l){if(!(l instanceof Ie))throw l}}xargsExample(e){let t=Lr(e.map(r=>se(r)?.text));if(!t)return;let n=t.input.endsWith(`
98
98
  `)?t.input.slice(0,-1).split(`
99
- `):[t.input];this.examples.push({kind:"xargs",title:this.s("\u4F8B","Example"),sections:[{label:this.s("\u5165\u529B\uFF08\u6A19\u6E96\u5165\u529B\uFF09","Input (stdin)"),lines:n.map(De)},{label:this.s("\u5B9F\u884C\u3055\u308C\u308B\u30B3\u30DE\u30F3\u30C9","Commands that run"),lines:t.commands,empty:this.s("\uFF08\u5B9F\u884C\u3055\u308C\u306A\u3044\uFF09","(none)")}],...e.some(r=>/^(-0|--null|-d|--delimiter)/.test(r.text))?{}:{interactive:this.interactive({kind:"xargs",words:e.map(r=>se(r)?.text)},n,this.s("\u5165\u529B\uFF08\u6A19\u6E96\u5165\u529B\uFF09","Input (stdin)"))}})}readExample(e,t){let n=`
99
+ `):[t.input];this.examples.push({kind:"xargs",title:this.s("\u4F8B","Example"),sections:[{label:this.s("\u5165\u529B\uFF08\u6A19\u6E96\u5165\u529B\uFF09","Input (stdin)"),lines:n.map(Ue)},{label:this.s("\u5B9F\u884C\u3055\u308C\u308B\u30B3\u30DE\u30F3\u30C9","Commands that run"),lines:t.commands,empty:this.s("\uFF08\u5B9F\u884C\u3055\u308C\u306A\u3044\uFF09","(none)")}],...e.some(r=>/^(-0|--null|-d|--delimiter)/.test(r.text))?{}:{interactive:this.interactive({kind:"xargs",words:e.map(r=>se(r)?.text)},n,this.s("\u5165\u529B\uFF08\u6A19\u6E96\u5165\u529B\uFF09","Input (stdin)"))}})}readExample(e,t){let n=`
100
100
  `;for(let p of e.namedChildren){if(p.type!=="variable_assignment"||p.childForFieldName("name")?.text!=="IFS")continue;let f=p.childForFieldName("value"),m=f?se(f):{text:""};if(!m)return;n=m.text.replace(/\\t/g," ").replace(/\\n/g,`
101
- `)}let r=t.map(p=>se(p)?.text);if(r.some(p=>p===void 0))return;let a;try{a=te(r,{flags:"rse",values:"aptu",long:{}})}catch{return}let o=a.opts.find(([p])=>p==="a")?.[1],l=a.operands.length?a.operands:o?[]:["REPLY"],c=a.opts.some(([p])=>p==="r"),u=Rr(l.length,n,!!o),h=Mr(u,l,{ifs:n,raw:c,array:o}),d=h.array?[`${h.array[0]}=(${h.array[1].map(p=>JSON.stringify(p)).join(" ")})`]:h.vars.map(([p,f])=>`${p}=${JSON.stringify(f)}`);this.examples.push({kind:"read",title:this.s("\u4F8B","Example"),sections:[{label:this.s("\u8AAD\u307F\u8FBC\u3080\u884C","Line read"),lines:[JSON.stringify(u)]},{label:this.s("\u5909\u6570\u306B\u5165\u308B\u5024","Values stored"),lines:d}]})}testExample(e){e.namedChildren.length===1&&this.testExampleFor(e.child(0)?.type,e.namedChildren[0])}testExampleFor(e,t){let n=o=>{if(!o)return;if(o.type==="simple_expansion"||o.type==="expansion"&&/^\$\{\w+\}$/.test(o.text))return{var:o.text.replace(/^\$\{?|\}$/g,"")};if(o.type==="variable_name")return{var:o.text};if(o.type==="string"&&o.namedChildren.length===1&&o.namedChildren[0].type==="simple_expansion"&&o.text===`"${o.namedChildren[0].text}"`)return n(o.namedChildren[0]);let l=se(o);return l?{lit:l.text}:void 0},r;if(t.type==="unary_expression"){let o=t.childForFieldName("operator")?.text??t.child(0)?.text??"";r=Dn(e,o,void 0,n(t.namedChildren.find(l=>l.type!=="test_operator")))}else if(t.type==="binary_expression"){let o=t.childForFieldName("left"),l=t.childForFieldName("right"),c=t.childForFieldName("operator")?.text??"";r=Dn(e,c,n(o),n(l),l?.type==="string"||l?.type==="raw_string")}if(!r)return;let a=o=>Object.entries(o).map(([l,c])=>/^\d+$/.test(l)?`$${l}=${JSON.stringify(c)}`:`${l}=${JSON.stringify(c)}`).join(" ");this.examples.push({kind:"test",title:this.s("\u4F8B","Example"),sections:[{label:this.s("\u771F\u306B\u306A\u308B\u5024","True when"),lines:r.filter(o=>o.result).map(o=>a(o.vars))},{label:this.s("\u507D\u306B\u306A\u308B\u5024","False when"),lines:r.filter(o=>!o.result).map(o=>a(o.vars))}]})}printfExample(e){let t=e.map(u=>se(u)?.text);if(t.some(u=>u===void 0))return;let n=t,r;if(n[0]==="-v"&&(r=n[1],n=n.slice(2)),n[0]==="--"&&(n=n.slice(1)),!n.length)return;let a;try{a=Kt(n[0],n.slice(1))}catch(u){if(u instanceof $e)return;throw u}let o=a.endsWith(`
101
+ `)}let r=t.map(p=>se(p)?.text);if(r.some(p=>p===void 0))return;let a;try{a=te(r,{flags:"rse",values:"aptu",long:{}})}catch{return}let o=a.opts.find(([p])=>p==="a")?.[1],l=a.operands.length?a.operands:o?[]:["REPLY"],c=a.opts.some(([p])=>p==="r"),u=jr(l.length,n,!!o),h=Pr(u,l,{ifs:n,raw:c,array:o}),d=h.array?[`${h.array[0]}=(${h.array[1].map(p=>JSON.stringify(p)).join(" ")})`]:h.vars.map(([p,f])=>`${p}=${JSON.stringify(f)}`);this.examples.push({kind:"read",title:this.s("\u4F8B","Example"),sections:[{label:this.s("\u8AAD\u307F\u8FBC\u3080\u884C","Line read"),lines:[JSON.stringify(u)]},{label:this.s("\u5909\u6570\u306B\u5165\u308B\u5024","Values stored"),lines:d}]})}testExample(e){e.namedChildren.length===1&&this.testExampleFor(e.child(0)?.type,e.namedChildren[0])}testExampleFor(e,t){let n=o=>{if(!o)return;if(o.type==="simple_expansion"||o.type==="expansion"&&/^\$\{\w+\}$/.test(o.text))return{var:o.text.replace(/^\$\{?|\}$/g,"")};if(o.type==="variable_name")return{var:o.text};if(o.type==="string"&&o.namedChildren.length===1&&o.namedChildren[0].type==="simple_expansion"&&o.text===`"${o.namedChildren[0].text}"`)return n(o.namedChildren[0]);let l=se(o);return l?{lit:l.text}:void 0},r;if(t.type==="unary_expression"){let o=t.childForFieldName("operator")?.text??t.child(0)?.text??"";r=Yn(e,o,void 0,n(t.namedChildren.find(l=>l.type!=="test_operator")))}else if(t.type==="binary_expression"){let o=t.childForFieldName("left"),l=t.childForFieldName("right"),c=t.childForFieldName("operator")?.text??"";r=Yn(e,c,n(o),n(l),l?.type==="string"||l?.type==="raw_string")}if(!r)return;let a=o=>Object.entries(o).map(([l,c])=>/^\d+$/.test(l)?`$${l}=${JSON.stringify(c)}`:`${l}=${JSON.stringify(c)}`).join(" ");this.examples.push({kind:"test",title:this.s("\u4F8B","Example"),sections:[{label:this.s("\u771F\u306B\u306A\u308B\u5024","True when"),lines:r.filter(o=>o.result).map(o=>a(o.vars))},{label:this.s("\u507D\u306B\u306A\u308B\u5024","False when"),lines:r.filter(o=>!o.result).map(o=>a(o.vars))}]})}printfExample(e){let t=e.map(u=>se(u)?.text);if(t.some(u=>u===void 0))return;let n=t,r;if(n[0]==="-v"&&(r=n[1],n=n.slice(2)),n[0]==="--"&&(n=n.slice(1)),!n.length)return;let a;try{a=Qt(n[0],n.slice(1))}catch(u){if(u instanceof ve)return;throw u}let o=a.endsWith(`
102
102
  `),l=(o?a.slice(0,-1):a).split(`
103
- `).map(De),c=r?this.s(`\u5909\u6570 \`${r}\` \u306B\u5165\u308B\u5024`,`Value stored in \`${r}\``):o?this.s("\u51FA\u529B","Output"):this.s("\u51FA\u529B\uFF08\u672B\u5C3E\u306B\u6539\u884C\u306A\u3057\uFF09","Output (no trailing newline)");this.examples.push({kind:"printf",title:this.s("\u4F8B","Example"),sections:[{label:c,lines:l,empty:this.s("\uFF08\u7A7A\u6587\u5B57\uFF09","(empty)")}]})}ioExample(e,t,n=!1,r){let a=o=>o.map(De);this.examples.push({kind:r?.kind==="sed"||r?.kind==="awk"||r?.kind==="perl"?r.kind:"textFilters",...r?{interactive:this.interactive(r,e)}:{},title:n?this.s("\u4F8B\uFF08\u30D5\u30A1\u30A4\u30EB\u306E\u4E2D\u8EAB\u304C\u3053\u3046\u66F8\u304D\u63DB\u308F\u308B\uFF09","Example (the file is rewritten like this)"):this.s("\u4F8B","Example"),sections:[{label:this.s("\u5165\u529B","Input"),lines:a(e)},{label:n?this.s("\u66F8\u304D\u63DB\u3048\u5F8C","After"):this.s("\u51FA\u529B","Output"),lines:a(t),empty:this.s("\uFF08\u51FA\u529B\u306A\u3057\uFF09","(no output)")}]})}regexFlavor(){let e=this.argCtx;if(!e)return"ere";let t=e.cmd.split("/").pop()??e.cmd,n=new Set;for(let r of e.args){let a=r.text;if(a==="--")break;if(a.startsWith("--"))n.add(a.split("=")[0]);else if(/^-[A-Za-z]+$/.test(a))for(let o of a.slice(1))n.add("-"+o)}return t==="sed"?n.has("-E")||n.has("-r")||n.has("--regexp-extended")?"ere":"bre":n.has("-P")||n.has("--perl-regexp")?"pcre":n.has("-F")||n.has("--fixed-strings")||t==="fgrep"?"fixed":n.has("-E")||n.has("--extended-regexp")||t==="egrep"?"ere":"bre"}option(e,t,n,r,a){let o=t[n],l=o.text,c=e?.options??{},u=M=>this.line===null||he(M,this.line),h=this.s(`\u30AA\u30D7\u30B7\u30E7\u30F3\uFF08\u8F9E\u66F8\u306B\u672A\u767B\u9332\u3002\`man ${r.split(" ")[0]}\` \u3092\u53C2\u7167\uFF09`,`Option (not in the dictionary; see \`man ${r.split(" ")[0]}\`)`),d=!1;r==="set"&&l.startsWith("+")&&(d=!0,l="-"+l.slice(1));let p=d?this.s("\u7121\u52B9\u5316: ","Disable: "):"",f=(M,N,P)=>{if(M.lang)return this.positional(P,this.s(`\`${N}\` \u30AA\u30D7\u30B7\u30E7\u30F3\u306E\u5024`,`Value for \`${N}\``)+": "+this.t(M.text),M.lang);let V=M.values?.[P.text];return this.tok(P,"argument",V?`${P.text}: ${this.t(V)}`:this.s(`\`${N}\` \u30AA\u30D7\u30B7\u30E7\u30F3\u306E\u5024`,`Value for \`${N}\``),ce(P)?[]:this.sub(P))},m=l.indexOf("=");if(l.startsWith("--")&&m>0){let M=l.slice(0,m),N=c[M];if(u(o)){let P=se(o),V=P?.text.indexOf("=")??-1,I=P&&V>=0?P.text.slice(V+1):l.slice(m+1),H=N?.values?.[I],q=P&&V>=0?P.offsets?{text:I,offsets:P.offsets.slice(V+1)}:{text:I,base:(P.base??0)+V+1}:void 0,G=N?.lang&&q?this.embeddedText(q,N.lang,o):void 0,ee=G?.note?` \u2014 ${G.note}`:"";a.push(this.tok(o,"option",(N?this.t(N.text):h)+this.s(`\uFF08\u5024: \`${I}\`${H?" \u2014 "+this.t(H):""}\uFF09`,` (value: \`${I}\`${H?" \u2014 "+this.t(H):""})`)+ee,G?.tokens??[]))}return n}let g=c[l];if(g||l.startsWith("--")||e?.longSingleDash){let M=g,N=n,P=[];if(M?.untilTerminator){let V=n+1;for(;V<t.length&&!Il.has(t[V].text);)V++;let I=t.slice(n+1,V);if(I.length){let H=this.wrapped(I,this.s("\u5B9F\u884C\u3059\u308B\u30B3\u30DE\u30F3\u30C9: ","Command to run: ")),q=G=>G.forEach(ee=>{ee.label==="{}"?(ee.explanation=this.s("`{}`: \u898B\u3064\u304B\u3063\u305F\u30D5\u30A1\u30A4\u30EB\u306E\u30D1\u30B9\u306B\u7F6E\u304D\u63DB\u308F\u308B","`{}`: replaced with the path that was found"),ee.children=[]):q(ee.children)});q(H.children),P.push(H)}if(V<t.length){let H=t[V];u(H)&&P.push(this.tok(H,"operator",H.text==="+"?this.s("`-exec` \u306E\u7D42\u308F\u308A: \u898B\u3064\u304B\u3063\u305F\u30D5\u30A1\u30A4\u30EB\u3092\u307E\u3068\u3081\u30661\u56DE\u306E\u30B3\u30DE\u30F3\u30C9\u306B\u6E21\u3059","End of `-exec`: pass all matches to one command invocation"):this.s("`-exec` \u306E\u7D42\u308F\u308A: \u898B\u3064\u304B\u3063\u305F\u30D5\u30A1\u30A4\u30EB1\u4EF6\u3054\u3068\u306B\u30B3\u30DE\u30F3\u30C9\u3092\u5B9F\u884C\uFF08`;` \u306F\u30B7\u30A7\u30EB\u306B\u89E3\u91C8\u3055\u308C\u306A\u3044\u3088\u3046\u30A8\u30B9\u30B1\u30FC\u30D7\u304C\u5FC5\u8981\uFF09","End of `-exec`: run once per match (`;` must be escaped from the shell)")))}N=Math.min(V,t.length-1)}else M?.arg&&n+1<t.length&&(N=n+1,u(t[N])&&P.push(f(M,l,t[N])));return u(o)&&a.push(this.tok(o,"option",p+(M?this.t(M.text):h),[])),a.push(...P),N}let _=l.slice(1),b=[],w=n,k=o.startPosition.column,v=o.startPosition.row,R=(M,N,P,V,I)=>({kind:P,label:I,explanation:V,children:[],span:{start:{line:v,character:k+M},end:{line:v,character:k+N}}});for(let M=0;M<_.length;M++){let N="-"+_[M],P=c[N],V=M+1;if(!P){b.push(R(V,V+1,"option",h,N));continue}if(b.push(R(V,V+1,"option",p+this.t(P.text),N)),P.attachedOnly){if(M+1<_.length){let I=_.slice(M+1),H=/^[a-zA-Z]/.test(I)&&c["-"+I[0]]&&this.s(`\u3002\u6CE8\u610F: \`${I}\` \u306F\u5225\u306E\u30AA\u30D7\u30B7\u30E7\u30F3\u3067\u306F\u306A\u304F \`${N}\` \u306E\u5024\u3068\u3057\u3066\u6271\u308F\u308C\u308B`,`. Note: \`${I}\` is taken as the value of \`${N}\`, not as more options`);b.push(R(V+1,l.length,"argument",this.s(`\`${N}\` \u306E\u5024 \`${I}\``,`Value \`${I}\` for \`${N}\``)+(H||""),I))}break}if(P.arg){if(M+1<_.length){let I=_.slice(M+1),H=R(V+1,l.length,"argument",P.values?.[I]?`${I}: ${this.t(P.values[I])}`:this.s(`\`${N}\` \u306E\u5024`,`Value for \`${N}\``),I),q=P.lang&&!/[\\'"$`]/.test(l)?this.embeddedText({text:I,base:V+1},P.lang,o):void 0;q&&(H.children=q.tokens,q.note&&(H.explanation+=` \u2014 ${q.note}`)),b.push(H)}else n+1<t.length&&(w=n+1,u(t[w])&&b.push(f(P,N,t[w])));break}}let W=b.filter(M=>M.span.start.line===v&&M.span.end.character<=k+l.length),j=b.filter(M=>!W.includes(M));if(u(o)){let M=W.filter(N=>N.kind==="option");a.push(this.tok(o,"option",M.length>1?this.s(`\u77ED\u3044\u30AA\u30D7\u30B7\u30E7\u30F3 ${M.map(N=>`\`${N.label}\``).join(" ")} \u3092\u307E\u3068\u3081\u3066\u6307\u5B9A`,`Combined short options ${M.map(N=>`\`${N.label}\``).join(" ")}`):M[0]?.explanation??h,M.length>1?W:W.filter(N=>N.kind==="argument")))}return a.push(...j),w}wrapped(e,t=""){let n=e[0],r=n.text,a=os(this.opts.customCommands?.[r.split("/").pop()??r])??ra(r),o=a?this.t(a.summary):this.s(`\u30B3\u30DE\u30F3\u30C9 \`${r}\``,`Command \`${r}\``),l=this.args(a,e.slice(1),r),c={start:we(n).start,end:we(e[e.length-1]).end},u=e.map(h=>h.text).join(" ");return{kind:a?.builtin?"builtin":"command",label:de(u),explanation:t+this.s(`\`${r}\` \u3092\u5B9F\u884C: `,`runs \`${r}\`: `)+o,span:c,children:l,summary:`${r}: ${o}`}}arithTestExplanation(){return this.s("\u7B97\u8853\u8A55\u4FA1 `(( ))`: \u5F0F\u3092\u8A08\u7B97\u3057\u3001\u7D50\u679C\u304C 0 \u4EE5\u5916\u306A\u3089\u6210\u529F(0)\u3092\u8FD4\u3059","Arithmetic evaluation `(( ))`: succeeds if the result is non-zero")}test(e){let t=this.examples.length;(this.line===null||e.startPosition.row===this.line)&&this.testExample(e);let n=e.child(0)?.type,r=n==="[["?this.s("\u62E1\u5F35\u6761\u4EF6\u5F0F `[[ ]]`: \u6761\u4EF6\u3092\u8A55\u4FA1\u3057\u3001\u771F\u306A\u3089\u6210\u529F(0)\u3092\u8FD4\u3059\uFF08bash \u5C02\u7528\u3002\u5909\u6570\u3092\u30AF\u30A9\u30FC\u30C8\u3057\u306A\u304F\u3066\u3082\u5B89\u5168\u3067\u3001`&&` `||` `=~` \u304C\u4F7F\u3048\u308B\uFF09","Extended test `[[ ]]`: evaluates a condition (bash-only; safe without quoting, supports `&&`, `||`, `=~`)"):n==="(("?this.arithTestExplanation():this.s("\u6761\u4EF6\u5F0F `[ ]`: \u6761\u4EF6\u3092\u8A55\u4FA1\u3057\u3001\u771F\u306A\u3089\u6210\u529F(0)\u3092\u8FD4\u3059\uFF08`test` \u30B3\u30DE\u30F3\u30C9\u3068\u540C\u3058\u3002`[` \u306E\u5F8C\u3068 `]` \u306E\u524D\u306B\u306F\u7A7A\u767D\u304C\u5FC5\u8981\uFF09","Test `[ ]`: evaluates a condition (same as `test`; spaces after `[` and before `]` are required)"),a=this.tok(e,"test",r,this.subs(e.namedChildren));return a.summary=this.s(`\u6761\u4EF6\u5224\u5B9A ${de(e.text,40)}`,`test ${de(e.text,40)}`),this.tagExamples(t,e),a}regexNode(e){if((e.parent?.type==="binary_expression"?e.parent.childForFieldName("operator")?.text??e.parent.children.find(n=>n.type==="=~")?.text:void 0)==="=~"&&!/\$[\w{(@*#?!-]|[`"']/.test(e.text)&&e.startPosition.row===e.endPosition.row){let n=Se(e.text,"ere",this.lang).map(a=>this.fromEmbedded(a,e,{text:e.text,base:0})),r=ie(e.text,"ere");return r&&this.regexExample(r,"values"),this.tok(e,"pattern",this.s("\u6B63\u898F\u8868\u73FE\uFF08\u62E1\u5F35\u6B63\u898F\u8868\u73FE ERE\uFF09","Regular expression (extended, ERE)"),n)}return this.tok(e,"pattern",this.s("\u6B63\u898F\u8868\u73FE\uFF08\u307E\u305F\u306F\u30D1\u30BF\u30FC\u30F3\uFF09","Regular expression (or pattern)"))}inArithmetic(e){for(let t=e.parent;t;t=t.parent){if(t.type==="arithmetic_expansion"||t.type==="c_style_for_statement")return!0;if(t.type==="test_command")return t.child(0)?.type==="(("}return!1}unary(e){let t=e.childForFieldName("operator")??e.child(0),n=t?.text??"",r=e.namedChildren.find(o=>!Ee(o,t));if(n==="!"&&!this.inArithmetic(e))return this.tok(e,"test",this.s(`\u5426\u5B9A: \`${r?.text??""}\` \u304C\u507D\u306A\u3089\u771F`,`Negation: true if \`${r?.text??""}\` is false`),this.sub(r));let a=vs[n];return a&&!this.inArithmetic(e)?this.tok(e,"test",this.s(`\u6761\u4EF6: \`${r?.text??""}\` \u304C${this.t(a)}`,`Condition: \`${r?.text??""}\` ${this.t(a)}`),this.subs([r].filter(o=>o&&!ce(o)))):this.tok(e,"operator",this.s(`\u7B97\u8853\u306E\u5358\u9805\u6F14\u7B97 \`${n}\``,`Arithmetic unary operator \`${n}\``),this.subs(e.namedChildren))}binary(e){let t=e.childForFieldName("left"),n=e.childForFieldName("right")??e.namedChildren[e.namedChildren.length-1],a=(e.childForFieldName("operator")??e.children.find(c=>!Ee(c,t)&&!Ee(c,n)))?.text??"",o=this.subs([t,n].filter(c=>c&&!ce(c)));if(!this.inArithmetic(e)&&ut[a])return a==="&&"||a==="||"||a==="-a"||a==="-o"?this.tok(e,"test",this.t(ut[a]),this.subs([t,n])):this.tok(e,"test",this.s(`\u6761\u4EF6: \`${t?.text}\` \u3068 \`${n?.text}\` \u3092\u6BD4\u8F03 \u2014 ${this.t(ut[a])}`,`Condition: \`${t?.text}\` vs \`${n?.text}\` \u2014 ${this.t(ut[a])}`),o);let l=["=","+=","-=","*=","/=","%="];return this.tok(e,"operator",l.includes(a)?this.s(`\u7B97\u8853\u4EE3\u5165: \`${t?.text}\` ${a} \`${n?.text}\``,`Arithmetic assignment: \`${t?.text}\` ${a} \`${n?.text}\``):this.s(`\u7B97\u8853\u6F14\u7B97: \`${t?.text}\` ${a} \`${n?.text}\``,`Arithmetic: \`${t?.text}\` ${a} \`${n?.text}\``),o)}word(e){let t=e.text;return t.startsWith("~")?this.tok(e,"expansion",this.s("\u30C1\u30EB\u30C0\u5C55\u958B: `~` \u306F\u30DB\u30FC\u30E0\u30C7\u30A3\u30EC\u30AF\u30C8\u30EA\u306B\u7F6E\u304D\u63DB\u308F\u308B","Tilde expansion: `~` becomes the home directory")):Es(t)?this.tok(e,"pattern",this.s(`\u30B0\u30ED\u30D6 \`${t}\`: \u4E00\u81F4\u3059\u308B\u30D5\u30A1\u30A4\u30EB\u540D\u306E\u4E00\u89A7\u306B\u5C55\u958B\u3055\u308C\u308B\uFF08\`*\` \u306F\u4EFB\u610F\u306E\u6587\u5B57\u5217, \`?\` \u306F\u4EFB\u610F\u306E1\u6587\u5B57\uFF09`,`Glob \`${t}\`: expands to matching file names (\`*\` any string, \`?\` any char)`)):this.tok(e,"argument",this.s(`\u6587\u5B57\u5217 \`${t}\``,`Word \`${t}\``))}string(e){return this.tok(e,"string",this.s("\u30C0\u30D6\u30EB\u30AF\u30A9\u30FC\u30C8\u6587\u5B57\u5217: \u4E2D\u306E `$\u5909\u6570` \u3084 `$(\u2026)` \u306F\u5C55\u958B\u3055\u308C\u308B\u304C\u3001\u5358\u8A9E\u5206\u5272\u3084\u30B0\u30ED\u30D6\u5C55\u958B\u306F\u3055\u308C\u306A\u3044\uFF081\u3064\u306E\u5F15\u6570\u306E\u307E\u307E\uFF09","Double-quoted string: `$vars` and `$(\u2026)` expand, but no word splitting or globbing (stays one argument)"),this.subs(e.namedChildren.filter(t=>t.type!=="string_content")))}varDesc(e){if(ks[e])return this.t(ks[e]);if(/^\d+$/.test(e))return this.s(`\u4F4D\u7F6E\u30D1\u30E9\u30E1\u30FC\u30BF: ${e} \u756A\u76EE\u306E\u5F15\u6570`,`Positional parameter: argument #${e}`);if($s[e])return this.t($s[e])}variable(e,t){let n=this.varDesc(e);return this.tok(t,"variable",n?`\`$${e}\`: ${n}`:this.s(`\u5909\u6570 \`${e}\``,`Variable \`${e}\``))}simpleExpansion(e){let t=e.text.slice(1),n=this.varDesc(t),r=this.tok(e,"variable",n?`${n}`:this.s(`\u5909\u6570 \`${t}\` \u306E\u5024\u306B\u7F6E\u304D\u63DB\u308F\u308B\uFF08\u30AF\u30A9\u30FC\u30C8\u3057\u306A\u3044\u3068\u7A7A\u767D\u3067\u5206\u5272\u3055\u308C\u3001\u30B0\u30ED\u30D6\u5C55\u958B\u3082\u3055\u308C\u308B\uFF09`,`Expands to the value of \`${t}\` (unquoted, it is word-split and globbed)`));return this.noSplit(e)&&(r.explanation=n??this.s(`\u5909\u6570 \`${t}\` \u306E\u5024\u306B\u7F6E\u304D\u63DB\u308F\u308B`,`Expands to the value of \`${t}\``)),r}noSplit(e){let t=e.parent;if(!t)return!1;if(["string","heredoc_body","variable_assignment","case_statement"].includes(t.type))return!0;for(let n=t;n;n=n.parent){if(n.type==="test_command")return n.child(0)?.type==="[["||n.child(0)?.type==="((";if(n.type==="arithmetic_expansion")return!0;if(n.type==="command"||n.type==="string")return!1}return!1}subscript(e){let t=e.childForFieldName("name")?.text??"",n=e.childForFieldName("index")?.text??"";return n==="@"||n==="*"?this.tok(e,"variable",this.s(`\u914D\u5217 \`${t}\` \u306E\u5168\u8981\u7D20`,`All elements of array \`${t}\``)):this.tok(e,"variable",this.s(`\u914D\u5217 \`${t}\` \u306E\u8981\u7D20 \`[${n}]\``,`Element \`[${n}]\` of array \`${t}\``))}expansion(e){let t=this.expansionSummary(e),n=e.text.trimStart(),r=e.text.length-n.length;r&&e.startPosition.row===e.endPosition.row&&(t.label=de(n),t.span={...t.span,start:{...t.span.start,character:t.span.start.character+r}});let a=e.startPosition.row===e.endPosition.row?vt(n):void 0;if(!a)return t;let o=a.op==="@"?es[a.parts.find(d=>d.role==="transform")?.text??""]:void 0;o&&(t.explanation=this.s(`\u30D1\u30E9\u30E1\u30FC\u30BF\u5C55\u958B: \`${a.name}\` \u306E\u5024\u3092${o[0]}`,`Parameter expansion: take the value of \`${a.name}\` and ${o[1]}`)),a.op===":"&&(t.explanation=this.s("\u30D1\u30E9\u30E1\u30FC\u30BF\u5C55\u958B: ","Parameter expansion: ")+this.substringSummary(a));let l=Yr(a,this.lang);l&&(this.line===null||e.startPosition.row===this.line)&&this.examples.push({kind:"expansion",title:this.s(`\`${n}\` \u306E\u4F8B`,`Example for \`${n}\``),target:"",anchor:t.span,sections:l.map(d=>({label:d.when,lines:d.result?[d.result]:[],empty:this.s("\uFF08\u7A7A\u6587\u5B57\uFF09","(empty string)")}))});let c=e.startPosition.row,u=e.startPosition.column+r,h=a.parts.find(d=>d.role==="op");return t.children=a.parts.flatMap(d=>{let p=this.expansionPart(a,d,d===h);if(!p||!d.text)return[];let f={start:{line:c,character:u+d.start},end:{line:c,character:u+d.end}},m=this.nestedIn(e,u+d.start,u+d.end);return[{kind:p[0],label:d.text,explanation:p[1],span:f,children:m}]}),t}substringSummary(e){let t=e.parts.find(u=>u.role==="offset")?.text??"",n=e.parts.find(u=>u.role==="length")?.text,r=e.name;if(!/^-?\d+$/.test(t)||n!==void 0&&!/^-?\d+$/.test(n))return this.s(`\`${r}\` \u306E\u90E8\u5206\u6587\u5B57\u5217\u3092\u53D6\u308A\u51FA\u3059\uFF08\u958B\u59CB\u4F4D\u7F6E \`${t}\`${n!==void 0?`\u3001\u9577\u3055 \`${n}\``:""}\uFF09`,`take a substring of \`${r}\` (offset \`${t}\`${n!==void 0?`, length \`${n}\``:""})`);let a=Number(t),o=a<0?`\u672B\u5C3E\u304B\u3089 ${-a} \u6587\u5B57\u76EE`:` ${a+1} \u6587\u5B57\u76EE`,l=a<0?`${-a} characters from the end`:`the ${mn(a+1)} character`;if(n===void 0&&a<0)return this.s(`\`${r}\` \u306E\u672B\u5C3E ${-a} \u6587\u5B57\u3092\u53D6\u308A\u51FA\u3059`,`take the last ${-a} characters of \`${r}\``);if(n===void 0)return this.s(`\`${r}\` \u306E${o}\u304B\u3089\u6700\u5F8C\u307E\u3067\u3092\u53D6\u308A\u51FA\u3059`,`take \`${r}\` from ${l} to the end`);let c=Number(n);return c<0?this.s(`\`${r}\` \u306E${o}\u304B\u3089\u3001\u672B\u5C3E\u306E ${-c} \u6587\u5B57\u3092\u9664\u3044\u305F\u4F4D\u7F6E\u307E\u3067\u3092\u53D6\u308A\u51FA\u3059`,`take \`${r}\` from ${l} up to ${-c} characters before the end`):this.s(`\`${r}\` \u306E${o}\u304B\u3089 ${c} \u6587\u5B57\u3092\u53D6\u308A\u51FA\u3059`,`take ${c} characters of \`${r}\` starting at ${l}`)}nestedIn(e,t,n){let r=[],a=o=>{for(let l of o.namedChildren)l.startPosition.column>=t&&l.endPosition.column<=n&&Cl.has(l.type)?r.push(l):a(l)};return a(e),r.map(o=>this.full(o))}expansionPart(e,t,n){let r=t.text,a=this.s.bind(this);switch(t.role){case"prefix":return r==="#"?["operator",a("`#`: \u5024\u306E\u9577\u3055\uFF08\u6587\u5B57\u6570\u3001\u914D\u5217\u306A\u3089\u8981\u7D20\u6570\uFF09\u3092\u8FD4\u3059","`#`: gives the length (characters, or elements for an array)")]:e.op==="*"||e.op==="@"?["operator",a("`!`: \u3053\u306E\u540D\u524D\u3067\u59CB\u307E\u308B\u5909\u6570\u540D\u306E\u4E00\u89A7\u3092\u8FD4\u3059","`!`: lists variable names starting with this prefix")]:e.subscript==="@"||e.subscript==="*"?["operator",a("`!`: \u914D\u5217\u306E\u5024\u3067\u306F\u306A\u304F\u30A4\u30F3\u30C7\u30C3\u30AF\u30B9\uFF08\u30AD\u30FC\uFF09\u3092\u8FD4\u3059","`!`: gives the indices (keys) instead of the values")]:["operator",a("`!`: \u9593\u63A5\u53C2\u7167\u3002\u5909\u6570\u306E\u5024\u3092\u5225\u306E\u5909\u6570\u540D\u3068\u3057\u3066\u4F7F\u3046","`!`: indirection; use the value as another variable's name")];case"name":{let o=this.varDesc(r);return e.prefix==="!"&&(e.op==="*"||e.op==="@")?["variable",a(`\u5909\u6570\u540D\u306E\u63A5\u982D\u8F9E \`${r}\``,`Variable name prefix \`${r}\``)]:e.subscript!==void 0?["variable",a(`\u914D\u5217 \`${r}\``,`Array \`${r}\``)]:["variable",o?`\`$${r}\`: ${o}`:a(`\u5909\u6570 \`${r}\``,`Variable \`${r}\``)]}case"subscript":{let o=e.subscript??"";if((o==="@"||o==="*")&&e.prefix)return["variable",a(`\`[${o}]\`: \u914D\u5217\u306E\u3059\u3079\u3066\u306E\u8981\u7D20\u3092\u5BFE\u8C61\u306B\u3059\u308B`,`\`[${o}]\`: applies to every element of the array`)];if(o==="@")return["variable",a('`[@]`: \u3059\u3079\u3066\u306E\u8981\u7D20\uFF08`"${a[@]}"` \u3068\u30AF\u30A9\u30FC\u30C8\u3059\u308B\u3068\u5404\u8981\u7D20\u304C\u5225\u3005\u306E\u5358\u8A9E\u306B\u306A\u308B\uFF09','`[@]`: every element (quoted, `"${a[@]}"` keeps each element a separate word)')];if(o==="*")return["variable",a('`[*]`: \u3059\u3079\u3066\u306E\u8981\u7D20\uFF08`"${a[*]}"` \u3068\u30AF\u30A9\u30FC\u30C8\u3059\u308B\u30681\u3064\u306E\u6587\u5B57\u5217\u306B\u9023\u7D50\u3055\u308C\u308B\uFF09','`[*]`: every element (quoted, `"${a[*]}"` joins them into one string)')];if(/^-?\d+$/.test(o)){let l=Number(o);return["variable",l<0?a(`\u30A4\u30F3\u30C7\u30C3\u30AF\u30B9 ${l}: \u672B\u5C3E\u304B\u3089 ${-l} \u756A\u76EE\u306E\u8981\u7D20`,`Index ${l}: the ${mn(-l)} element from the end`):a(`\u30A4\u30F3\u30C7\u30C3\u30AF\u30B9 ${l}: ${l+1} \u756A\u76EE\u306E\u8981\u7D20\uFF080 \u59CB\u307E\u308A\uFF09`,`Index ${l}: the ${mn(l+1)} element (0-based)`)]}return["variable",a(`\u30A4\u30F3\u30C7\u30C3\u30AF\u30B9\uFF08\u9023\u60F3\u914D\u5217\u306A\u3089\u30AD\u30FC\uFF09 \`${o}\``,`Index (or key, for associative arrays) \`${o}\``)]}case"op":return n?["operator",`\`${r}\`: `+(Qn[r]?Qn[r][this.lang==="ja"?0:1]:r)]:["operator",r===":"?a("`:` \u958B\u59CB\u4F4D\u7F6E\u3068\u9577\u3055\u306E\u533A\u5207\u308A","`:` separates the offset from the length"):e.parts.find(o=>o.role==="replacement")?.text?a("`/` \u30D1\u30BF\u30FC\u30F3\u3068\u7F6E\u63DB\u5F8C\u306E\u6587\u5B57\u5217\u306E\u533A\u5207\u308A","`/` separates the pattern from the replacement"):a("`/` \u306E\u5F8C\u308D\uFF08\u7F6E\u63DB\u5F8C\u306E\u6587\u5B57\u5217\uFF09\u304C\u7A7A\u306A\u306E\u3067\u3001\u4E00\u81F4\u3057\u305F\u90E8\u5206\u306F\u524A\u9664\u3055\u308C\u308B","Nothing follows this `/`, so the replacement is empty and matches are deleted")];case"word":{let o=e.op??"";return o===":-"||o==="-"?["argument",a(`\u65E2\u5B9A\u5024 \`${r}\`: \`${e.name}\` \u306E\u4EE3\u308F\u308A\u306B\u4F7F\u3046\u5024`,`Default \`${r}\`: used instead of \`${e.name}\``)]:o===":="||o==="="?["argument",a(`\u65E2\u5B9A\u5024 \`${r}\`: \`${e.name}\` \u306B\u4EE3\u5165\u3055\u308C\u3066\u304B\u3089\u4F7F\u308F\u308C\u308B`,`Default \`${r}\`: assigned to \`${e.name}\`, then used`)]:o===":+"||o==="+"?["argument",a(`\u4EE3\u66FF\u5024 \`${r}\`: \`${e.name}\` \u304C\u8A2D\u5B9A\u3055\u308C\u3066\u3044\u308B\u3068\u304D\u306B\u4EE3\u308F\u308A\u306B\u4F7F\u3046\u5024`,`Alternate value \`${r}\`: used when \`${e.name}\` is set`)]:["string",a(`\u30A8\u30E9\u30FC\u30E1\u30C3\u30BB\u30FC\u30B8\u300C${r}\u300D`,`Error message "${r}"`)]}case"pattern":{let o=at(r),c=/^[\^,]/.test(e.op??"")?a("\u5909\u63DB\u3059\u308B\u6587\u5B57\u306E\u30D1\u30BF\u30FC\u30F3","Pattern of characters to convert"):a("\u30D1\u30BF\u30FC\u30F3","Pattern");return o?["pattern",`${c} \`${r}\`: ${cn(o,this.lang)}`]:["pattern",a(`${c} \`${r}\`\uFF08\u5909\u6570\u306A\u3069\u3092\u542B\u3080\u305F\u3081\u3001\u5185\u5BB9\u306F\u5B9F\u884C\u6642\u306B\u6C7A\u307E\u308B\uFF09`,`${c} \`${r}\` (contains expansions, so it is decided at run time)`)]}case"replacement":return["string",r?a(`\u7F6E\u63DB\u5F8C\u306E\u6587\u5B57\u5217 \`${r}\``,`Replacement \`${r}\``):a("\u7F6E\u63DB\u5F8C\u306E\u6587\u5B57\u5217: \u7A7A\uFF08\u4E00\u81F4\u3057\u305F\u90E8\u5206\u3092\u524A\u9664\u3059\u308B\uFF09","Replacement: empty (the match is deleted)")];case"offset":{let o=r.trim();if(!/^-?\d+$/.test(o))return["number",a(`\u958B\u59CB\u4F4D\u7F6E \`${o}\`\uFF08\u7B97\u8853\u5F0F\u3068\u3057\u3066\u8A55\u4FA1\u3055\u308C\u308B\uFF09`,`Offset \`${o}\` (evaluated as arithmetic)`)];let l=Number(o);return l<0?["number",a(`\u958B\u59CB\u4F4D\u7F6E ${l}: \u672B\u5C3E\u304B\u3089 ${-l} \u6587\u5B57\u76EE\u304B\u3089\uFF08\u8CA0\u306E\u5024\u306F \`:-\` \u3068\u533A\u5225\u3059\u308B\u305F\u3081\u3001\u524D\u306B\u7A7A\u767D\u304B\u62EC\u5F27\u304C\u5FC5\u8981\uFF09`,`Offset ${l}: start ${-l} characters from the end (a space or parentheses is needed before a negative value, to tell it from \`:-\`)`)]:["number",a(`\u958B\u59CB\u4F4D\u7F6E ${l}: ${l+1} \u6587\u5B57\u76EE\u304B\u3089\uFF080 \u59CB\u307E\u308A\uFF09`,`Offset ${l}: start at the ${mn(l+1)} character (0-based)`)]}case"length":{let o=r.trim();if(!/^-?\d+$/.test(o))return["number",a(`\u9577\u3055 \`${o}\`\uFF08\u7B97\u8853\u5F0F\u3068\u3057\u3066\u8A55\u4FA1\u3055\u308C\u308B\uFF09`,`Length \`${o}\` (evaluated as arithmetic)`)];let l=Number(o);return["number",l<0?a(`\u9577\u3055 ${l}: \u672B\u5C3E\u306E ${-l} \u6587\u5B57\u3092\u9664\u3044\u305F\u4F4D\u7F6E\u307E\u3067`,`Length ${l}: up to ${-l} characters before the end`):a(`\u9577\u3055 ${l}: ${l} \u6587\u5B57\u5206`,`Length ${l}: ${l} characters`)]}case"transform":{let o=es[r];return["operator",o?`\`${r}\`: ${o[this.lang==="ja"?0:1]}`:a(`\u5909\u63DB \`${r}\``,`Transformation \`${r}\``)]}}}expansionSummary(e){let t=e.children,n=e.text.trimStart().slice(2,-1),r=t.find(p=>["variable_name","subscript","special_variable_name"].includes(p.type)),a=r?.text??n,o=r?.type==="subscript"&&/\[[@*]\]$/.test(a),l=t[1]&&!t[1].isNamed?t[1].type:"";if(l==="#"&&r)return this.tok(e,"expansion",o?this.s(`\u914D\u5217 \`${a.replace(/\[.*/,"")}\` \u306E\u8981\u7D20\u6570`,`Number of elements in array \`${a.replace(/\[.*/,"")}\``):this.s(`\u5909\u6570 \`${a}\` \u306E\u6587\u5B57\u6570\uFF08\u9577\u3055\uFF09`,`Length of \`${a}\` in characters`));if(l==="!"&&r)return this.tok(e,"expansion",o?this.s(`\u914D\u5217 \`${a.replace(/\[.*/,"")}\` \u306E\u30A4\u30F3\u30C7\u30C3\u30AF\u30B9\uFF08\u30AD\u30FC\uFF09\u4E00\u89A7`,`Indices (keys) of array \`${a.replace(/\[.*/,"")}\``):this.s(`\u9593\u63A5\u53C2\u7167: \u5909\u6570 \`${a}\` \u306E\u5024\u3092\u5909\u6570\u540D\u3068\u307F\u306A\u3057\u3001\u305D\u306E\u5909\u6570\u306E\u5024\u3092\u53D6\u308A\u51FA\u3059`,`Indirection: use the value of \`${a}\` as a variable name`));let c=t.findIndex((p,f)=>f>0&&e.fieldNameForChild(f)==="operator"),u=r?.type==="subscript"?this.t(o?{ja:`\u914D\u5217 \`${a.replace(/\[.*/,"")}\` \u306E\u5168\u8981\u7D20`,en:`all elements of array \`${a.replace(/\[.*/,"")}\``}:{ja:`\u914D\u5217\u8981\u7D20 \`${a}\``,en:`array element \`${a}\``}):void 0;if(c>0){let p=t[c].type,f=t[t.length-1],m=e.text.slice(t[c].endIndex-e.startIndex,f.type==="}"?f.startIndex-e.startIndex:void 0),g=ys[p];if(m===""&&(p===":-"||p==="-"))return this.tok(e,"expansion",this.s(`\u30D1\u30E9\u30E1\u30FC\u30BF\u5C55\u958B: \`${a}\` \u304C\u672A\u8A2D\u5B9A\u306A\u3089\u7A7A\u6587\u5B57\u3068\u3057\u3066\u6271\u3046\uFF08\`set -u\` \u3067\u3082\u30A8\u30E9\u30FC\u306B\u3057\u306A\u3044\u305F\u3081\u306E\u5B9A\u756A\uFF09`,`Parameter expansion: empty string if \`${a}\` is unset (avoids errors under \`set -u\`)`));if(g){let _=t.slice(c+1).filter(w=>w.isNamed&&!ce(w)&&w.type!=="regex"),b=/^[1-9]\d*$/.test(a)?`$${a}`:a;return this.tok(e,"expansion",this.s("\u30D1\u30E9\u30E1\u30FC\u30BF\u5C55\u958B: ","Parameter expansion: ")+this.t(g(b,m)),this.subs(_))}}let h=n.match(/^([A-Za-z_][A-Za-z0-9_]*|[0-9@*#?$!-]):(-?\d+|\s*-\d+|[^-=+?][^}]*)$/);if(h)return this.tok(e,"expansion",this.s("\u30D1\u30E9\u30E1\u30FC\u30BF\u5C55\u958B: ","Parameter expansion: ")+this.t(ys[":"](h[1],h[2])));let d=u??this.varDesc(a);return this.tok(e,"variable",d?this.s(`\`\${${a}}\`: ${d}`,`\`\${${a}}\`: ${d}`):this.s(`\u5909\u6570 \`${a}\` \u306E\u5024\u306B\u7F6E\u304D\u63DB\u308F\u308B\uFF08\`{}\` \u306F\u5909\u6570\u540D\u306E\u7BC4\u56F2\u3092\u660E\u793A\u3059\u308B\uFF09`,`Value of \`${a}\` (braces delimit the name)`))}commandSubstitution(e){let t=e.text.startsWith("`");return this.tok(e,"substitution",this.s(`\u30B3\u30DE\u30F3\u30C9\u7F6E\u63DB ${t?"`` `\u2026` ``\uFF08\u65E7\u5F0F\u3002`$(\u2026)` \u63A8\u5968\uFF09":"`$(\u2026)`"}: \u4E2D\u306E\u30B3\u30DE\u30F3\u30C9\u3092\u5B9F\u884C\u3057\u3001\u305D\u306E\u6A19\u6E96\u51FA\u529B\uFF08\u672B\u5C3E\u306E\u6539\u884C\u306F\u9664\u304F\uFF09\u306B\u7F6E\u304D\u63DB\u3048\u308B`,`Command substitution ${t?"`` `\u2026` `` (legacy; prefer `$(\u2026)`)":"`$(\u2026)`"}: runs the command and is replaced by its stdout (trailing newlines removed)`),this.subs(e.namedChildren))}processSubstitution(e){let t=e.text.startsWith(">(");return this.tok(e,"substitution",t?this.s("\u30D7\u30ED\u30BB\u30B9\u7F6E\u63DB `>(\u2026)`: \u66F8\u304D\u8FBC\u3080\u3068\u4E2D\u306E\u30B3\u30DE\u30F3\u30C9\u306E\u6A19\u6E96\u5165\u529B\u306B\u6E21\u308B\u30D5\u30A1\u30A4\u30EB\u540D\uFF08/dev/fd/N\uFF09\u306B\u7F6E\u304D\u63DB\u308F\u308B","Process substitution `>(\u2026)`: a file name whose writes go to the command's stdin"):this.s("\u30D7\u30ED\u30BB\u30B9\u7F6E\u63DB `<(\u2026)`: \u4E2D\u306E\u30B3\u30DE\u30F3\u30C9\u306E\u51FA\u529B\u3092\u3001\u30D5\u30A1\u30A4\u30EB\u306E\u3088\u3046\u306B\u8AAD\u3081\u308B\u30D5\u30A1\u30A4\u30EB\u540D\uFF08/dev/fd/N\uFF09\u306B\u7F6E\u304D\u63DB\u3048\u308B","Process substitution `<(\u2026)`: a file name from which the command's output can be read"),this.subs(e.namedChildren))}};function se(s){if(s.type==="raw_string")return{text:s.text.slice(1,-1),base:1};if(s.type==="string"&&s.namedChildren.every(e=>e.type==="string_content")&&!/[\\$`]/.test(s.text))return{text:s.text.slice(1,-1),base:1};if(ce(s)&&!/[\\'"$`]/.test(s.text))return{text:s.text,base:0};if(s.type==="concatenation"&&s.startPosition.row===s.endPosition.row){let e="",t=[];for(let n of s.namedChildren){let r=se(n);if(!r||r.offsets)return;let a=n.startIndex-s.startIndex+(r.base??0);for(let o=0;o<r.text.length;o++)t.push(a+o);e+=r.text}return{text:e,offsets:t}}}function Ss(s,e,t){return s.offsets?t?e===0?s.offsets[0]??0:s.offsets[e-1]+1:s.offsets[e]??(s.offsets[s.offsets.length-1]??0)+1:(s.base??0)+e}function De(s){return s.replace(/\t/g,"\u21E5").replace(/[\x00-\x08\x0b-\x1f\x7f]/g,e=>e==="\x7F"?"\u2421":String.fromCharCode(9216+e.charCodeAt(0)))}function Ol(s,e){let t=s?.options;if(!t)return!1;for(let n of e){let r=n.text;if(r==="--")break;if(t[r.split("=")[0]]?.fillsPositional)return!0;if(/^-[A-Za-z]+/.test(r)&&!r.startsWith("--"))for(let a of r.slice(1)){let o=t["-"+a];if(o?.fillsPositional)return!0;if(o?.arg||o?.attachedOnly)break}}return!1}function Pl(s,e){let t=/^\s*s(.)/.exec(s);if(!t||/[\s\\\n]/.test(t[1]))return;let n=t[1],r=t[0].length,a="";for(;r<s.length&&s[r]!==n;r++){if(s[r]==="\\"&&s[r+1]===n){a+=n,r++;continue}if(s[r]==="\\"){a+=s[r]+(s[r+1]??""),r++;continue}a+=s[r]}let o=/^[^;\n]*$/.test(s)?s.split(n).pop()??"":"";return ie(a,e,{ignoreCase:/[Ii]/.test(o),sedEscapes:!0})}function ra(s){if(Object.prototype.hasOwnProperty.call(Lt,s))return Lt[s];let e=s.includes("/")?s.slice(s.lastIndexOf("/")+1):s;if(Object.prototype.hasOwnProperty.call(Xe,e))return Xe[e];if(e==="egrep"||e==="fgrep")return Xe.grep;if(e==="python")return Xe.python3;if(e==="zsh"||e==="dash"||e==="ksh")return Xe.sh}function gn(s){return s.summary??s.explanation}function Ie(s){return s.sort((e,t)=>e.span.start.line-t.span.start.line||e.span.start.character-t.span.start.character)}var Ct=(s,e)=>({startLine:s.startPosition.row,startCol:s.startPosition.column,endLine:s.endPosition.row,endCol:s.endPosition.column,text:e});function oa(s){let e=s.node;switch(s.id){case"dbracket":{let t=e.namedChildren.length===1?e.namedChildren[0]:void 0,n=t&&Ll(t);return n?{title:["`[[ ]]` \u3092 `[ ]` \u306B\u66F8\u304D\u63DB\u3048\u308B","Rewrite `[[ ]]` as `[ ]`"],edits:[Ct(e,n)]}:void 0}case"eqeqTest":return{title:["`==` \u3092 `=` \u306B\u66F8\u304D\u63DB\u3048\u308B","Replace `==` with `=`"],edits:e.descendantsOfType("==").map(t=>Ct(t,"="))};case"source":{let t=e.childForFieldName("name");return t?{title:["`source` \u3092 `.` \u306B\u66F8\u304D\u63DB\u3048\u308B","Replace `source` with `.`"],edits:[Ct(t,".")]}:void 0}case"funcKeyword":{let t=e.child(0),n=e.childForFieldName("name");if(!t||!n)return;let a=e.children.find(o=>o.type===")")??n;return{title:["`function name` \u3092 `name()` \u306B\u66F8\u304D\u63DB\u3048\u308B","Rewrite `function name` as `name()`"],edits:[{startLine:t.startPosition.row,startCol:t.startPosition.column,endLine:a.endPosition.row,endCol:a.endPosition.column,text:`${n.text}()`}]}}case"ampRedirect":case"ampAppend":{let t=e.children.find(a=>a.type==="&>"||a.type==="&>>"),n=e.childForFieldName("destination");if(!t||!n)return;let r=t.type==="&>"?">":">>";return{title:[`\`${t.type}\` \u3092 \`${r}file 2>&1\` \u306B\u66F8\u304D\u63DB\u3048\u308B`,`Rewrite \`${t.type}\` as \`${r}file 2>&1\``],edits:[Ct(e,`${r} ${n.text} 2>&1`)]}}case"pipeAmp":return{title:["`|&` \u3092 `2>&1 |` \u306B\u66F8\u304D\u63DB\u3048\u308B","Rewrite `|&` as `2>&1 |`"],edits:e.children.filter(t=>t.type==="|&").map(t=>Ct(t,"2>&1 |"))}}}var aa=/^(-[a-zA-Z]|=|!=|-eq|-ne|-lt|-le|-gt|-ge|-nt|-ot|-ef)$/;function Ll(s){let e=new Set,t=[],n=a=>{let o=a.type==="binary_expression"?a.childForFieldName("operator")?.text:void 0;o==="&&"||o==="||"?(e.add(o),n(a.childForFieldName("left")),n(a.childForFieldName("right"))):t.push(a)};if(n(s),e.size>1)return;let r=t.map(la);if(!r.some(a=>a===void 0))return r.map(a=>`[ ${a} ]`).join(` ${[...e][0]??"&&"} `)}function la(s){if(s.type==="unary_expression"){let t=s.childForFieldName("operator")?.text??s.child(0)?.text??"",n=s.namedChildren.filter(a=>a.type!=="test_operator").pop();if(!n)return;if(t==="!"){let a=la(n);return a===void 0?void 0:`! ${a}`}let r=xn(n);return aa.test(t)&&r!==void 0?`${t} ${r}`:void 0}if(s.type==="binary_expression"){let t=s.childForFieldName("operator")?.text??"",n=s.childForFieldName("left"),r=s.childForFieldName("right");if(!n||!r||(t==="=="&&(t="="),!aa.test(t))||(t==="="||t==="!=")&&(/[*?[]/.test(ca(r))||ua(r)))return;let a=xn(n),o=xn(r);return a!==void 0&&o!==void 0?`${a} ${t} ${o}`:void 0}let e=xn(s);return e!==void 0?`-n ${e}`:void 0}function ca(s){return s.type==="string"||s.type==="raw_string"||s.type==="ansi_c_string"?"":s.type==="concatenation"?s.namedChildren.map(ca).join(""):s.type==="simple_expansion"||s.type==="expansion"||s.type==="command_substitution"?"":s.text}function ua(s){return["simple_expansion","expansion","command_substitution"].includes(s.type)?!0:s.type==="concatenation"&&s.namedChildren.some(ua)}function xn(s){switch(s.type){case"string":case"raw_string":case"number":return s.text;case"word":case"extglob_pattern":return/^[\w@%+=:,./-]+$/.test(s.text)?s.text:void 0;case"simple_expansion":case"expansion":case"command_substitution":return`"${s.text}"`;case"concatenation":return s.namedChildren.every(e=>e.type==="word"&&/^[\w@%+=:,./-]+$/.test(e.text)||["simple_expansion","expansion","command_substitution"].includes(e.type))?`"${s.text}"`:void 0}}function _a(s,e){let t=e.split(/[\\/]/).pop()??"";if(s==="dockerfile"||/^(Dockerfile|Containerfile)(\..*)?$|\.(dockerfile|containerfile)$/i.test(t))return"dockerfile";if(s==="makefile"||/^(GNU)?makefile$|\.mk$/i.test(t))return"makefile";if(t==="package.json")return"npm";if(s==="yaml"||s==="github-actions-workflow"||/\.ya?ml$/i.test(t))return"yaml";if(s==="markdown"||/\.md$/i.test(t))return"markdown";if(s==="python"||/\.py$/i.test(t))return"python"}var Me=class{text="";map=[];ends=[];inserted=[];copy(e,t,n){for(let r=t;r<n;r++)this.text+=e[r],this.map.push(r),this.ends.push(r+1)}insert(e,t,n,r){e.length>1&&this.inserted.push([this.text.length,this.text.length+e.length,r]);for(let a=0;a<e.length;a++)this.text+=e[a],this.map.push(t),this.ends.push(n)}finish(e){return[...this.map,this.ends.length?this.ends[this.ends.length-1]:e]}},Rs=class{lines;outs;regions=[];substitutions=[];constructor(e){this.lines=e.split(/\r?\n/),this.outs=this.lines.map(()=>{})}plain(e,t=0,n=this.lines[e].length){let r=this.outs[e]??=new Me;return r.copy(this.lines[e],t,n),r}region(e,t,n,r,a,o){t>=e&&this.regions.push({start:e,end:t,label:n,shell:r,notes:a,warnPipefail:o})}build(){let e=this.lines.map((t,n)=>this.outs[n]?.finish(t.length)??[t.length]);return{text:this.outs.map(t=>t?.text??"").join(`
104
- `),maps:e,inserted:this.outs.map(t=>t?.inserted??[]),regions:this.regions,substitutions:this.substitutions}}};function ba(s,e){let t=new Rs(e);switch(s){case"dockerfile":Ul(t);break;case"makefile":Dl(t);break;case"yaml":Vl(t);break;case"npm":Yl(t);break;case"markdown":Zl(t);break;case"python":Xl(t);break}return t.build()}function jl(s,e,t){let n=[],r=e,a=t+1;for(;;){let o=s[r];for(;a<o.length&&/[\s,]/.test(o[a]);)a++;if(a>=o.length||o[a]==="\\"&&!o.slice(a+1).trim()){if(++r>=s.length)return;a=0;continue}if(o[a]==="]")return{words:n,last:r};if(o[a]!=='"')return;let l={line:r,start:a,end:a,value:"",cols:[]};for(a++;a<o.length&&o[a]!=='"';a++)if(o[a]==="\\"){let c=o[++a];l.value+=c==="n"?`
105
- `:c==="t"?" ":c,l.cols.push(a-1)}else l.value+=o[a],l.cols.push(a);if(o[a]!=='"')return;l.end=++a,n.push(l)}}function As(s,e){e.forEach((t,n)=>{let r=s.outs[t.line]??=new Me,a=e[n+1],o=l=>r.insert(t.value[l],t.cols[l],t.cols[l]+1);if(t.placeholder)r.insert(t.placeholder[0],t.start,t.end,t.placeholder[1]);else if(/^[\w@%+=:,./-]+$/.test(t.value)){let l=t.value.length-1;for(let c=0;c<=l;c++)r.insert(t.value[c],c===0?t.start:t.cols[c],c===l?t.end:t.cols[c]+1)}else{r.insert("'",t.start,t.start+1);for(let l=0;l<t.value.length;l++)t.value[l]==="'"?r.insert("'\\''",t.cols[l],t.cols[l]+1):o(l);r.insert("'",t.end-1,t.end)}a&&a.line===t.line?r.insert(" ",t.end,a.start):a&&r.insert(" \\",t.end,t.end)})}var ql=/^(sh|bash|dash|ash|zsh|ksh|ksh93|mksh|yash|busybox)$/;function Ul(s){let e="sh",t=!1;for(let n=0;n<s.lines.length;n++){let r=s.lines[n],a=/^(\s*)(RUN|CMD|ENTRYPOINT|SHELL)(\s+(?:--[\w-]+(?:=\S*)?\s+)*)/i.exec(r);if(!a)continue;let o=a[0].length,l=a[2].toUpperCase();if(/^\[\s*"/.test(r.slice(o))){let h=jl(s.lines,n,o);if(!h||!h.words.length)continue;let{words:d,last:p}=h,f=d[0].value.split("/").pop();if(l==="SHELL"){e=f==="bash"?"bash":f==="zsh"?"zsh":f==="ash"||f==="busybox"?"ash":"sh",t=d.some((g,_)=>g.value==="pipefail"&&/^-\w*o$/.test(d[_-1]?.value??"")),As(s,d),s.region(n,p,["Dockerfile \u306E SHELL","Dockerfile SHELL"],"bash",[['\u4EE5\u964D\u306E RUN\u30FBCMD\u30FBENTRYPOINT \u306E\u30B7\u30A7\u30EB\u5F62\u5F0F\u306F\u3001\u3053\u306E\u30B3\u30DE\u30F3\u30C9\u306E\u6700\u5F8C\u306B\u547D\u4EE4\u306E\u5185\u5BB9\u3092\u4ED8\u3051\u3066\u5B9F\u884C\u3055\u308C\u307E\u3059\uFF08\u4F8B: `/bin/bash -o pipefail -c "<RUN \u306E\u5185\u5BB9>"`\uFF09\u3002','Later shell-form RUN, CMD and ENTRYPOINT instructions run with this command, followed by their text (e.g. `/bin/bash -o pipefail -c "<RUN text>"`).']]),n=p;continue}let m=d.findIndex((g,_)=>_>0&&/^-\w*c$/.test(g.value));if(ql.test(f)&&m>0&&d[m+1]){let g=d[m+1],_=s.outs[g.line]??=new Me;for(let w=0;w<g.value.length;w++)_.insert(g.value[w],g.cols[w],g.cols[w]+1);let b=f==="bash"?"bash":f==="zsh"?"zsh":f==="dash"?"dash":f==="ash"||f==="busybox"?"ash":f==="mksh"?"mksh":/^ksh/.test(f)?"ksh":f==="yash"?"yash":"sh";s.region(g.line,g.line,[`Dockerfile \u306E ${l}\uFF08exec \u5F62\u5F0F\u3067 \`${d[0].value} ${d[m].value}\` \u306B\u6E21\u3059\u30B9\u30AF\u30EA\u30D7\u30C8\uFF09`,`Dockerfile ${l} (a script passed to \`${d[0].value} ${d[m].value}\` in exec form)`],b),n=p;continue}As(s,d),s.region(n,p,[`Dockerfile \u306E ${l}\uFF08exec \u5F62\u5F0F\uFF09`,`Dockerfile ${l} (exec form)`],"bash",[["exec \u5F62\u5F0F\uFF08`[...]`\uFF09\u306F\u30B7\u30A7\u30EB\u3092\u901A\u3055\u305A\u306B\u30B3\u30DE\u30F3\u30C9\u3092\u76F4\u63A5\u5B9F\u884C\u3057\u307E\u3059\u3002`$VAR` \u306E\u5C55\u958B\u30FB\u30D1\u30A4\u30D7\u30FB\u30EA\u30C0\u30A4\u30EC\u30AF\u30C8\u30FB`&&` \u306A\u3069\u306F\u50CD\u304B\u305A\u3001\u5404\u8981\u7D20\u304C\u305D\u306E\u307E\u307E\u5F15\u6570\u306B\u306A\u308A\u307E\u3059\u3002","The exec form (`[...]`) runs the command directly, without a shell: `$VAR`, pipes, redirections and `&&` do not work, and each element is passed as it is."]]),n=p;continue}if(l==="SHELL")continue;let c=/^<<-?\s*["']?(\w+)["']?/.exec(r.slice(o));if(c){let h=n+1,d=h;for(;d<s.lines.length&&s.lines[d].trim()!==c[1];)s.plain(d++);s.region(h,d-1,[`Dockerfile \u306E ${l}\uFF08\u30D2\u30A2\u30C9\u30AD\u30E5\u30E1\u30F3\u30C8\uFF09`,`Dockerfile ${l} (here-document)`],e,void 0,l==="RUN"&&!t),n=d;continue}let u=n;for(s.plain(n,o);/\\\s*$/.test(s.lines[n])&&n+1<s.lines.length;){for(n++;/^\s*#/.test(s.lines[n])&&n+1<s.lines.length;)(s.outs[n]??=new Me).insert("\\",0,0),n++;s.plain(n)}s.region(u,n,[`Dockerfile \u306E ${l}`,`Dockerfile ${l}`],e,void 0,l==="RUN"&&!t)}}var ha={"@":["make_target","\u30BF\u30FC\u30B2\u30C3\u30C8\u540D","the target name"],"<":["make_first_prerequisite","\u6700\u521D\u306E\u4F9D\u5B58\u30D5\u30A1\u30A4\u30EB","the first prerequisite"],"^":["make_prerequisites","\u3059\u3079\u3066\u306E\u4F9D\u5B58\u30D5\u30A1\u30A4\u30EB","all prerequisites"],"?":["make_newer_prerequisites","\u30BF\u30FC\u30B2\u30C3\u30C8\u3088\u308A\u65B0\u3057\u3044\u4F9D\u5B58\u30D5\u30A1\u30A4\u30EB","the prerequisites newer than the target"],"*":["make_stem","\u30D1\u30BF\u30FC\u30F3\u30EB\u30FC\u30EB\u306E `%` \u306B\u5F53\u305F\u308B\u90E8\u5206","the stem matched by `%`"]};function Dl(s){let e="sh",t=!1;for(let n=0;n<s.lines.length;n++){let r=s.lines[n],a=/^\s*SHELL\s*:?=\s*(\S+)/.exec(r);if(a){let l=a[1].split("/").pop();e=l==="bash"?"bash":l==="zsh"?"zsh":"sh"}if(!r.startsWith(" ")){/^[^\s#=][^=]*:(?!=)/.test(r)&&!/^\s*(ifeq|ifneq|ifdef|ifndef|else|endif|define|endef|include|export)\b/.test(r)?t=!0:r.trim()&&!r.trimStart().startsWith("#")&&(t=!1);continue}if(!t)continue;let o=n;for(da(s,n,!0);/\\$/.test(s.lines[n])&&n+1<s.lines.length;)da(s,++n,!1);s.region(o,n,["Makefile \u306E\u30EC\u30B7\u30D4","Makefile recipe"],e)}}function da(s,e,t){let n=s.lines[e],r=s.outs[e]??=new Me,a=n.startsWith(" ")?1:0;if(t)for(;/[@+\-\s]/.test(n[a]??"")&&a<n.length;)a++;for(;a<n.length;){if(n[a]!=="$"){r.copy(n,a,a+1),a++;continue}let o=n[a+1];if(o==="$"){r.insert("$",a,a+2),a+=2;continue}if(o&&ha[o]){let[l,c,u]=ha[o],h=[`make \u306E\u81EA\u52D5\u5909\u6570\uFF08${c}\uFF09\u3067\u3001\u30B7\u30A7\u30EB\u304C\u5B9F\u884C\u3055\u308C\u308B\u524D\u306B make \u304C\u5C55\u958B\u3057\u307E\u3059`,`make's automatic variable (${u}), expanded by make before the shell runs`];r.insert(`\${${l}}`,a,a+2,h),s.substitutions.push({line:e,text:`$${o}`,meaning:h}),a+=2;continue}if(o==="("||o==="{"){let l=zl(n,a+1);if(l<0){r.copy(n,a,n.length);break}let c=n.slice(a+2,l),u=/^[\w.]+$/.test(c),h=u?c.replace(/\./g,"_"):`make_${c.split(/\s/)[0].replace(/\W/g,"_")}`,d=u?[`make \u306E\u5909\u6570 \`${c}\` \u3067\u3001\u30B7\u30A7\u30EB\u304C\u5B9F\u884C\u3055\u308C\u308B\u524D\u306B make \u304C\u5C55\u958B\u3057\u307E\u3059`,`the make variable \`${c}\`, expanded by make before the shell runs`]:[`make \u306E\u95A2\u6570 \`${c.split(/\s/)[0]}\` \u306E\u547C\u3073\u51FA\u3057\u3067\u3001\u30B7\u30A7\u30EB\u304C\u5B9F\u884C\u3055\u308C\u308B\u524D\u306B make \u304C\u7D50\u679C\u306B\u7F6E\u304D\u63DB\u3048\u307E\u3059`,`a call of the make function \`${c.split(/\s/)[0]}\`, replaced by its result before the shell runs`];r.insert(`\${${h}}`,a,l+1,d),s.substitutions.push({line:e,text:n.slice(a,l+1),meaning:d}),a=l+1;continue}if(o&&/\w/.test(o)){let l=[`make \u306E\u5909\u6570 \`${o}\` \u3067\u3001\u30B7\u30A7\u30EB\u304C\u5B9F\u884C\u3055\u308C\u308B\u524D\u306B make \u304C\u5C55\u958B\u3057\u307E\u3059`,`the make variable \`${o}\`, expanded by make before the shell runs`];r.insert(`\${${o}}`,a,a+2,l),s.substitutions.push({line:e,text:`$${o}`,meaning:l}),a+=2;continue}r.copy(n,a,a+1),a++}}function zl(s,e){let t=s[e]==="("?")":"}",n=0;for(let r=e;r<s.length;r++)if(s[r]===s[e])n++;else if(s[r]===t&&--n===0)return r;return-1}var Wl=/^(run|script|before_script|after_script|bash|sh|cmds?|command)$/;function Vl(s){let e=s.lines.some(t=>/^\s*(runs-on|steps|jobs)\s*:/.test(t));for(let t=0;t<s.lines.length;t++){let n=s.lines[t],r=/^(\s*(?:-\s+)?)([\w-]+)\s*:(?:\s+(.*))?$/.exec(n);if(!r||!Wl.test(r[2]))continue;let a=r[2],o=r[1].length,l=(r[3]??"").replace(/\s+#.*$/,"");if(a==="run"&&!l&&/^\s*defaults\s*:/.test(s.lines[t-1]??""))continue;let c=Jl(s,t,o,a,e);if(c===null)continue;let u=e&&a==="run"?["GitHub Actions \u306E `run:` \u30B9\u30C6\u30C3\u30D7","GitHub Actions `run:` step"]:[`YAML \u306E \`${a}:\``,`YAML \`${a}:\``],h=n.length-(r[3]??"").length;if(/^[|>][-+]?\d*$/.test(l))t=pa(s,t,o,u,c);else if(l)fa(s,t,h,l,u,c);else{let d=t+1;for(;d<s.lines.length&&(!s.lines[d].trim()||Te(s.lines[d])>o||Te(s.lines[d])===o&&/^\s*-\s/.test(s.lines[d])&&!/^\s*-\s+[\w-]+\s*:/.test(s.lines[d]));){let p=/^(\s*-\s+)(.*)$/.exec(s.lines[d]);if(p){let f=p[2].replace(/\s+#.*$/,"");if(/^[|>][-+]?\d*$/.test(f)){d=pa(s,d,Te(s.lines[d]),u,c)+1;continue}fa(s,d,p[1].length,f,u,c)}d++}t=d-1}}}function Te(s){return s.length-s.trimStart().length}function Jl(s,e,t,n,r){if(n==="command"&&!r)return null;if(n==="bash")return"bash";if(n==="sh")return"sh";if(n!=="run")return;let a=t+(/^\s*-\s/.test(s.lines[e])?2:0);for(let o=e-1;o>=0&&(Te(s.lines[o])>=a||!s.lines[o].trim());o--){let l=/^\s*(?:-\s+)?shell:\s*(\S+)/.exec(s.lines[o]);if(l&&Te(s.lines[o].replace(/-\s+/," "))===a)return Ts(l[1])}for(let o=e+1;o<s.lines.length&&(Te(s.lines[o])>=a||!s.lines[o].trim());o++){let l=/^\s*shell:\s*(\S+)/.exec(s.lines[o]);if(l&&Te(s.lines[o])===a)return Ts(l[1])}if(r){for(let o=e-1;o>=2;o--){let l=/^(\s*)shell:\s*(\S+)/.exec(s.lines[o]);if(!l||!/^\s*run\s*:\s*$/.test(s.lines[o-1])||!/^\s*defaults\s*:\s*$/.test(s.lines[o-2]))continue;let c=Te(s.lines[o-2]);if(!s.lines.slice(o+1,e).some(u=>u.trim()&&Te(u)<c))return Ts(l[2])}return"bash"}}function Ts(s){let e=s.replace(/['"]/g,"").split(/[\s{]/)[0];return e==="bash"?"bash":e==="sh"?"sh":null}function pa(s,e,t,n,r){let a=e+1,o=e;for(;a<s.lines.length&&(!s.lines[a].trim()||Te(s.lines[a])>t);)s.lines[a].trim()&&(Fs(s,a,0,s.lines[a].length),o=a),a++;return s.region(e+1,o,n,r),o}function fa(s,e,t,n,r,a){let o=n[0];(o==='"'||o==="'")&&n.endsWith(o)&&n.length>1?Fs(s,e,t+1,t+n.length-1):Fs(s,e,t,t+n.length),s.region(e,e,r,a)}function Fs(s,e,t,n){let r=s.lines[e],a=s.outs[e]??=new Me,o=/\$\{\{\s*(.*?)\s*\}\}/g;o.lastIndex=t;let l=t;for(let c;(c=o.exec(r))&&c.index<n;){a.copy(r,l,c.index);let u=c[1].replace(/\W+/g,"_").replace(/^_|_$/g,"").toUpperCase()||"EXPR",h=[`GitHub Actions \u306E\u5F0F\u3067\u3001\u30B9\u30AF\u30EA\u30D7\u30C8\u304C\u5B9F\u884C\u3055\u308C\u308B\u524D\u306B \`${c[1]}\` \u306E\u5024\u306B\u7F6E\u304D\u63DB\u308F\u308A\u307E\u3059`,`a GitHub Actions expression, replaced with the value of \`${c[1]}\` before the script runs`];a.insert(`\${${u}}`,c.index,c.index+c[0].length,h),s.substitutions.push({line:e,text:c[0],meaning:h,warning:Bl.test(c[1])?[`\u26A0 \u30B9\u30AF\u30EA\u30D7\u30C8\u30A4\u30F3\u30B8\u30A7\u30AF\u30B7\u30E7\u30F3\u306E\u5371\u967A: \`${c[1]}\` \u306F\u5916\u90E8\u306E\u4EBA\u304C\u81EA\u7531\u306B\u66F8\u3051\u308B\u5024\u3067\u3001\u305D\u306E\u307E\u307E\u30B9\u30AF\u30EA\u30D7\u30C8\u306B\u57CB\u3081\u8FBC\u307E\u308C\u307E\u3059\uFF08\`"; curl \u2026 | sh #\` \u306E\u3088\u3046\u306A\u5024\u3067\u4EFB\u610F\u306E\u30B3\u30DE\u30F3\u30C9\u304C\u5B9F\u884C\u3055\u308C\u308B\uFF09\u3002\`env:\` \u3067\u74B0\u5883\u5909\u6570\u306B\u6E21\u3057\u3001\`"$\u5909\u6570"\` \u3068\u3057\u3066\u4F7F\u3063\u3066\u304F\u3060\u3055\u3044\u3002`,`\u26A0 Script injection risk: \`${c[1]}\` can be set by anyone and is pasted into the script as it is (a value like \`"; curl \u2026 | sh #\` runs arbitrary commands). Pass it through \`env:\` and use it as \`"$VAR"\`.`]:void 0}),l=c.index+c[0].length}a.copy(r,l,n)}var Bl=/^github\.(head_ref|event\.(issue\.(title|body)|pull_request\.(title|body|head\.(ref|label|repo\.default_branch))|comment\.body|review\.body|review_comment\.body|discussion\.(title|body)|pages\.[^.]+\.page_name|commits\.[^.]+\.(message|author\.(email|name))|head_commit\.(message|author\.(email|name))|workflow_run\.(head_branch|display_title|head_commit\.(message|author\.(email|name)))))$/,Hl={GITHUB_ENV:["\u3053\u3053\u306B `\u540D\u524D=\u5024` \u3092\u66F8\u304F\u3068\u3001\u5F8C\u306E\u30B9\u30C6\u30C3\u30D7\u3067\u74B0\u5883\u5909\u6570\u3068\u3057\u3066\u4F7F\u3048\u307E\u3059","lines `NAME=value` written here become environment variables in later steps"],GITHUB_OUTPUT:["\u3053\u3053\u306B `\u540D\u524D=\u5024` \u3092\u66F8\u304F\u3068\u3001\u30B9\u30C6\u30C3\u30D7\u306E\u51FA\u529B\uFF08`steps.<id>.outputs.\u540D\u524D`\uFF09\u306B\u306A\u308A\u307E\u3059","lines `name=value` written here become step outputs (`steps.<id>.outputs.name`)"],GITHUB_PATH:["\u3053\u3053\u306B\u66F8\u3044\u305F\u30C7\u30A3\u30EC\u30AF\u30C8\u30EA\u304C\u3001\u5F8C\u306E\u30B9\u30C6\u30C3\u30D7\u306E PATH \u306B\u8FFD\u52A0\u3055\u308C\u307E\u3059","directories written here are added to PATH for later steps"],GITHUB_STEP_SUMMARY:["\u3053\u3053\u306B\u66F8\u3044\u305F Markdown \u304C\u3001\u30B8\u30E7\u30D6\u306E\u5B9F\u884C\u7D50\u679C\u306E\u30DA\u30FC\u30B8\u306B\u8868\u793A\u3055\u308C\u307E\u3059","Markdown written here is shown on the run's summary page"],GITHUB_STATE:["\u3053\u3053\u306B\u66F8\u3044\u305F\u5024\u3092\u3001\u540C\u3058\u30A2\u30AF\u30B7\u30E7\u30F3\u306E pre/post \u306E\u51E6\u7406\u3067\u8AAD\u3081\u307E\u3059","values written here can be read by the action's pre and post steps"]};function Gl(s,e){let t=[];for(let[n,[r,a]]of Object.entries(Hl))new RegExp(`\\$\\{?${n}\\b`).test(s)&&t.push(e==="ja"?`\`$${n}\` \u306F GitHub Actions \u304C\u7528\u610F\u3059\u308B\u30D5\u30A1\u30A4\u30EB\u306E\u30D1\u30B9\u3067\u3059\u3002${r}\u3002`:`\`$${n}\` is the path of a file GitHub Actions provides: ${a}.`);return t}function Yl(s){let e=!1;for(let t=0;t<s.lines.length;t++){let n=s.lines[t];if(/^\s*"scripts"\s*:\s*\{/.test(n)){e=!/\}/.test(n.slice(n.indexOf("{")));continue}if(!e)continue;if(/^\s*\}/.test(n)){e=!1;continue}let r=/^(\s*"(?:[^"\\]|\\.)*"\s*:\s*")((?:[^"\\]|\\.)*)"/.exec(n);if(!r)continue;let a=s.outs[t]??=new Me;for(let l=r[1].length;l<r[1].length+r[2].length;l++)if(n[l]==="\\"&&l+1<n.length){let c=n[l+1];a.insert(c==="n"?" ":c==="t"?" ":c,l,l+2),l++}else a.copy(n,l,l+1);let o=/"((?:[^"\\]|\\.)*)"/.exec(n)[1];s.region(t,t,[`npm \u30B9\u30AF\u30EA\u30D7\u30C8 \`${o}\``,`npm script \`${o}\``],"sh")}}function Zl(s){for(let e=0;e<s.lines.length;e++){let t=/^(\s*)(`{3,}|~{3,})\s*([\w-]+)?/.exec(s.lines[e]);if(!t)continue;let n=t[2],r=(t[3]??"").toLowerCase(),a=e+1,o=u=>u.trim().startsWith(n[0].repeat(n.length))&&!u.trim().slice(n.length).trim(),l=["sh","posix"].includes(r)?"sh":["bash","shell","shellscript","console","shellsession","terminal"].includes(r)?"bash":r==="zsh"?"zsh":r==="ksh"?"ksh":r==="dash"?"dash":null,c=["console","shellsession","terminal"].includes(r);for(;a<s.lines.length&&!o(s.lines[a]);){if(l!==null)if(c){let u=/^(\s*[$#%]\s)/.exec(s.lines[a]);u&&s.plain(a,u[1].length)}else s.plain(a);a++}l!==null&&a>e+1&&s.region(e+1,a-1,[`Markdown \u306E\u30B3\u30FC\u30C9\u30D6\u30ED\u30C3\u30AF\uFF08${r}\uFF09`,`Markdown code block (${r})`],l==="bash"?void 0:l),e=a}}var Ms={"subprocess.run":{shell:"kwarg",args:"first"},"subprocess.call":{shell:"kwarg",args:"first"},"subprocess.check_call":{shell:"kwarg",args:"first"},"subprocess.check_output":{shell:"kwarg",args:"first"},"subprocess.Popen":{shell:"kwarg",args:"first"},"subprocess.getoutput":{shell:"always",args:"first"},"subprocess.getstatusoutput":{shell:"always",args:"first"},"os.system":{shell:"always",args:"first"},"os.popen":{shell:"always",args:"first"},"asyncio.create_subprocess_shell":{shell:"always",args:"first"},"asyncio.create_subprocess_exec":{shell:"never",args:"all"}};function wn(s,e){let t=/^([rRbBuUfF]{0,2})('''|"""|'|")/.exec(s.slice(e,e+5));if(!t||e>0&&/\w/.test(s[e-1]))return;let n=t[2],r=e+t[0].length;for(let a=r;a<s.length;a++){if(s[a]==="\\"){a++;continue}if(n.length===1&&s[a]===`
106
- `)return;if(s.startsWith(n,a))return{prefix:t[1].toLowerCase(),quote:n,start:e,contentStart:r,contentEnd:a,end:a+n.length}}}function Cs(s,e){let t=0;for(let n=e;n<s.length;n++){let r=wn(s,n);if(r){n=r.end-1;continue}let a=s[n];if(a==="#"){for(;n<s.length&&s[n]!==`
107
- `;)n++;continue}if("([{".includes(a))t++;else if(")]}".includes(a)&&--t===0)return n+1}return-1}function ma(s,e,t){let n=[],r=e+1;for(let a=e+1;a<t-1;a++){let o=wn(s,a);if(o){a=o.end-1;continue}if(s[a]==="#"){for(;a<t&&s[a]!==`
108
- `;)a++;continue}if("([{".includes(s[a])){a=Cs(s,a)-1;continue}s[a]===","&&(n.push([r,a]),r=a+1)}return s.slice(r,t-1).trim()&&n.push([r,t-1]),n.map(([a,o])=>{for(;a<o&&/\s/.test(s[a]);)a++;for(;o>a&&/\s/.test(s[o-1]);)o--;return[a,o]})}function Xl(s){let e=s.lines.join(`
109
- `),t=[];s.lines.reduce((o,l)=>(t.push(o),o+l.length+1),0);let n=o=>{let l=t.length-1;for(;t[l]>o;)l--;return{line:l,col:o-t[l]}},r=new Map;for(let o of e.matchAll(/^[ \t]*import[ \t]+([\w.]+(?:[ \t]+as[ \t]+\w+)?(?:[ \t]*,[ \t]*[\w.]+(?:[ \t]+as[ \t]+\w+)?)*)/gm))for(let l of o[1].split(",")){let[c,u]=l.trim().split(/\s+as\s+/);for(let h of Object.keys(Ms))h.startsWith(`${c}.`)&&r.set(`${u??c}.${h.slice(c.length+1)}`,h)}for(let o of e.matchAll(/^[ \t]*from[ \t]+([\w.]+)[ \t]+import[ \t]+(?:\(([^)]*)\)|([\w \t,]+))/gm))for(let l of(o[2]??o[3]).split(",")){let[c,u]=l.trim().split(/\s+as\s+/);Ms[`${o[1]}.${c}`]&&r.set(u??c,`${o[1]}.${c}`)}if(!r.size)return;let a=new RegExp(`(?<![\\w.])(${[...r.keys()].map(o=>o.replace(/\./g,"\\.")).join("|")})\\s*\\(`,"g");for(let o of e.matchAll(a)){let l=o.index,c=e.slice(t[n(l).line],l);if(c.includes("#")||(c.match(/["']/g)??[]).length%2)continue;let u=r.get(o[1]),h=Ms[u],d=l+o[0].length-1,p=Cs(e,d);if(p<0)continue;let f=ma(e,d,p),m=I=>f.map(([H,q])=>new RegExp(`^${I}\\s*=\\s*([\\s\\S]*)$`).exec(e.slice(H,q))?.[1]).find(H=>H!==void 0),g=f.filter(([I,H])=>!/^\w+\s*=(?!=)/.test(e.slice(I,H))&&!e.slice(I,H).startsWith("**"));if(!g.length)continue;let _=m("shell"),b=h.shell==="always"||h.shell==="kwarg"&&_==="True",w=m("executable")?.replace(/^["']|["']$/g,"").split("/").pop(),k=w==="bash"?"bash":w==="zsh"?"zsh":"sh",v=I=>[`Python \u306E \`${o[1]}\`\uFF08${I[0]}\uFF09`,`Python \`${o[1]}\` (${I[1]})`],[R,W]=g[0],j=/^[[(]/.test(e[R])&&Cs(e,R)===W;if(h.args==="all"||j){let I=h.args==="all"?g.filter(([G,ee])=>!e.slice(G,ee).startsWith("*")):ma(e,R,W);if(!I.length)continue;if(b&&h.shell==="kwarg"){let G=ga(s,e,I[0][0],I[0][1],n);if(!G)continue;s.region(G.first,G.last,v(["shell=True \u306E\u30EA\u30B9\u30C8\u306E\u6700\u521D\u306E\u8981\u7D20\u3092\u30B7\u30A7\u30EB\u304C\u5B9F\u884C","shell=True: the shell runs the first item of the list"]),k,[["shell=True \u306B\u30EA\u30B9\u30C8\u3092\u6E21\u3059\u3068\u3001\u6700\u521D\u306E\u8981\u7D20\u3060\u3051\u304C\u30B7\u30A7\u30EB\u306E\u30B3\u30DE\u30F3\u30C9\u306B\u306A\u308A\u3001\u6B8B\u308A\u306E\u8981\u7D20\u306F\u30B7\u30A7\u30EB\u3078\u306E\u5F15\u6570\uFF08$0, $1\u2026\uFF09\u306B\u306A\u308A\u307E\u3059\u3002","With shell=True and a list, only the first item is the shell command; the other items become arguments of the shell ($0, $1\u2026)."]]);continue}let H=I.map(([G,ee])=>Kl(e,G,ee,n));if(H.some(G=>!G))continue;let q=H;As(s,q),s.region(q[0].line,q[q.length-1].line,v(["\u30B7\u30A7\u30EB\u3092\u901A\u3055\u305A\u306B\u5B9F\u884C\u3059\u308B\u5F15\u6570\u306E\u30EA\u30B9\u30C8","arguments run without a shell"]),"bash",[["\u30EA\u30B9\u30C8\u3067\u6E21\u3057\u305F\u5F15\u6570\u306F\u30B7\u30A7\u30EB\u3092\u901A\u3055\u305A\u306B\u305D\u306E\u307E\u307E\u5B9F\u884C\u3055\u308C\u307E\u3059\u3002`$VAR` \u306E\u5C55\u958B\u30FB\u30D1\u30A4\u30D7\u30FB\u30EA\u30C0\u30A4\u30EC\u30AF\u30C8\u30FB`&&` \u306A\u3069\u306F\u50CD\u304D\u307E\u305B\u3093\uFF08\u5024\u3092\u5B89\u5168\u306B\u6E21\u305B\u308B\u66F8\u304D\u65B9\u3067\u3059\uFF09\u3002","A list of arguments is run directly, without a shell: `$VAR`, pipes, redirections and `&&` do not work (the safe way to pass values)."]]);continue}let M=ga(s,e,R,W,n);if(!M)continue;let N=[];!b&&/\s/.test(M.text.trim())&&N.push(_===void 0||_==="False"?['\u26A0 shell=True \u306A\u3057\u3067\u6587\u5B57\u5217\u3092\u6E21\u3059\u3068\u3001\u6587\u5B57\u5217\u5168\u4F53\u304C1\u3064\u306E\u30D7\u30ED\u30B0\u30E9\u30E0\u540D\u3068\u3057\u3066\u6271\u308F\u308C\u307E\u3059\uFF08\u5F15\u6570\u3084\u30D1\u30A4\u30D7\u306F\u4F7F\u3048\u305A\u3001\u591A\u304F\u306E\u5834\u5408 FileNotFoundError\uFF09\u3002`["cmd", "arg"]` \u306E\u3088\u3046\u306A\u30EA\u30B9\u30C8\u3067\u6E21\u3059\u304B\u3001shell=True \u3092\u4ED8\u3051\u307E\u3059\u3002','\u26A0 Without shell=True the whole string is taken as one program name (no arguments or pipes; usually FileNotFoundError). Pass a list like `["cmd", "arg"]`, or add shell=True.',"pythonNoShell"]:["shell= \u306E\u5024\u304C\u5F0F\u306A\u306E\u3067\u3001\u3053\u306E\u6587\u5B57\u5217\u3092\u30B7\u30A7\u30EB\u304C\u5B9F\u884C\u3059\u308B\u304B\u306F\u5B9F\u884C\u6642\u306B\u6C7A\u307E\u308A\u307E\u3059\u3002","shell= is an expression, so whether a shell runs this string is decided at run time."]),b&&M.interpolated&&N.push(["\u26A0 \u30B7\u30A7\u30EB\u30A4\u30F3\u30B8\u30A7\u30AF\u30B7\u30E7\u30F3\u306E\u5371\u967A: Python \u306E\u5024\u3092\u57CB\u3081\u8FBC\u3093\u3060\u6587\u5B57\u5217\u3092\u30B7\u30A7\u30EB\u304C\u5B9F\u884C\u3057\u307E\u3059\u3002\u5024\u306B `;` \u3084 `$(\u2026)` \u304C\u542B\u307E\u308C\u308B\u3068\u4EFB\u610F\u306E\u30B3\u30DE\u30F3\u30C9\u304C\u5B9F\u884C\u3055\u308C\u307E\u3059\u3002`shlex.quote()` \u3067\u30AF\u30A9\u30FC\u30C8\u3059\u308B\u304B\u3001shell=True \u3092\u3084\u3081\u3066\u30EA\u30B9\u30C8\u3067\u6E21\u3057\u3066\u304F\u3060\u3055\u3044\u3002","\u26A0 Shell injection risk: the shell runs a string with Python values pasted in, so a value containing `;` or `$(\u2026)` runs arbitrary commands. Quote it with `shlex.quote()`, or drop shell=True and pass a list.","pythonInjection"]),M.partial&&N.push(["\u6587\u5B57\u5217\u306E\u5F8C\u308D\u306F Python \u306E\u30B3\u30FC\u30C9\u3067\u7D44\u307F\u7ACB\u3066\u3089\u308C\u308B\u305F\u3081\u3001\u89E3\u8AAC\u3057\u3066\u3044\u308B\u306E\u306F\u6587\u5B57\u5217\u30EA\u30C6\u30E9\u30EB\u306E\u90E8\u5206\u3060\u3051\u3067\u3059\u3002","The rest of the string is built by Python code; only the string literal is explained."]);let P=k==="sh"?"/bin/sh":k,V=b?[`\u30B7\u30A7\u30EB\uFF08${P}\uFF09\u304C\u5B9F\u884C\u3059\u308B\u6587\u5B57\u5217`,`a string the shell (${P}) runs`]:["\u30B7\u30A7\u30EB\u3092\u901A\u3055\u306A\u3044\u30B3\u30DE\u30F3\u30C9\u6587\u5B57\u5217","a command string run without a shell"];s.region(M.first,M.last,v(V),b?k:"bash",N)}}function xa(s){return`py_${s.replace(/\W+/g,"_").replace(/^_|_$/g,"").slice(0,24)||"expr"}`}function Kl(s,e,t,n){let r=n(e);if(n(t-1).line!==r.line)return;let a=wn(s,e);if(a&&a.end===t&&!a.prefix.includes("f")&&a.quote.length===1){let{value:l,offs:c}=Ql(s,a);return{line:r.line,start:r.col,end:n(t-1).col+1,value:l,cols:c.map(u=>n(u).col)}}let o=s.slice(e,t);return{line:r.line,start:r.col,end:n(t-1).col+1,value:"",cols:[],placeholder:[`"\${${xa(o)}}"`,[`Python \u306E\u5F0F \`${o}\` \u306E\u5024\uFF08\u305D\u306E\u307E\u307E1\u3064\u306E\u5F15\u6570\u3068\u3057\u3066\u6E21\u308B\uFF09`,`the value of the Python expression \`${o}\`, passed as one argument`]]}}function Ql(s,e){let t="",n=[],r=e.prefix.includes("r"),a={n:`
110
- `,t:" ","\\":"\\","'":"'",'"':'"',r:"\r",0:"\0"};for(let o=e.contentStart;o<e.contentEnd;o++){if(s[o]==="\\"&&!r){let l=s[o+1];if(l in a){t+=a[l],n.push(o),o++;continue}let c=/^x([0-9a-fA-F]{2})|^u([0-9a-fA-F]{4})/.exec(s.slice(o+1,o+6));if(c){t+=String.fromCharCode(parseInt(c[1]??c[2],16)),n.push(o),o+=c[0].length;continue}}t+=s[o],n.push(o)}return{value:t,offs:n}}function ga(s,e,t,n,r){let a=t,o="",l=!1,c=-1,u=-1,h=-1,d=m=>s.outs[m]??=new Me,p=(m,g,_,b)=>{let w=r(g);h>=0&&r(h).line<w.line&&d(r(h).line).insert("\\",r(h).col,r(h).col),h=-1,c<0&&(c=w.line),u=Math.max(u,w.line),d(w.line).insert(m,w.col,r(_-1).col+1,b),o+=m};for(;;){for(;a<n&&/\s/.test(e[a]);)a++;let m=a<n?wn(e,a):void 0;if(!m||m.end>n)break;let g=m.prefix.includes("r"),_=m.prefix.includes("f");for(let b=m.contentStart;b<m.contentEnd;b++){let w=e[b];if(w===`
103
+ `).map(Ue),c=r?this.s(`\u5909\u6570 \`${r}\` \u306B\u5165\u308B\u5024`,`Value stored in \`${r}\``):o?this.s("\u51FA\u529B","Output"):this.s("\u51FA\u529B\uFF08\u672B\u5C3E\u306B\u6539\u884C\u306A\u3057\uFF09","Output (no trailing newline)");this.examples.push({kind:"printf",title:this.s("\u4F8B","Example"),sections:[{label:c,lines:l,empty:this.s("\uFF08\u7A7A\u6587\u5B57\uFF09","(empty)")}]})}ioExample(e,t,n=!1,r){let a=o=>o.map(Ue);this.examples.push({kind:r?.kind==="sed"||r?.kind==="awk"||r?.kind==="perl"?r.kind:"textFilters",...r?{interactive:this.interactive(r,e)}:{},title:n?this.s("\u4F8B\uFF08\u30D5\u30A1\u30A4\u30EB\u306E\u4E2D\u8EAB\u304C\u3053\u3046\u66F8\u304D\u63DB\u308F\u308B\uFF09","Example (the file is rewritten like this)"):this.s("\u4F8B","Example"),sections:[{label:this.s("\u5165\u529B","Input"),lines:a(e)},{label:n?this.s("\u66F8\u304D\u63DB\u3048\u5F8C","After"):this.s("\u51FA\u529B","Output"),lines:a(t),empty:this.s("\uFF08\u51FA\u529B\u306A\u3057\uFF09","(no output)")}]})}regexFlavor(){let e=this.argCtx;if(!e)return"ere";let t=e.cmd.split("/").pop()??e.cmd,n=new Set;for(let r of e.args){let a=r.text;if(a==="--")break;if(a.startsWith("--"))n.add(a.split("=")[0]);else if(/^-[A-Za-z]+$/.test(a))for(let o of a.slice(1))n.add("-"+o)}return t==="sed"?n.has("-E")||n.has("-r")||n.has("--regexp-extended")?"ere":"bre":n.has("-P")||n.has("--perl-regexp")?"pcre":n.has("-F")||n.has("--fixed-strings")||t==="fgrep"?"fixed":n.has("-E")||n.has("--extended-regexp")||t==="egrep"?"ere":"bre"}option(e,t,n,r,a){let o=t[n],l=o.text,c=e?.options??{},u=$=>this.line===null||he($,this.line),h=this.s(`\u30AA\u30D7\u30B7\u30E7\u30F3\uFF08\u8F9E\u66F8\u306B\u672A\u767B\u9332\u3002\`man ${r.split(" ")[0]}\` \u3092\u53C2\u7167\uFF09`,`Option (not in the dictionary; see \`man ${r.split(" ")[0]}\`)`),d=!1;r==="set"&&l.startsWith("+")&&(d=!0,l="-"+l.slice(1));let p=d?this.s("\u7121\u52B9\u5316: ","Disable: "):"",f=($,T,F)=>{if($.lang)return this.positional(F,this.s(`\`${T}\` \u30AA\u30D7\u30B7\u30E7\u30F3\u306E\u5024`,`Value for \`${T}\``)+": "+this.t($.text),$.lang);let q=$.values?.[F.text];return this.tok(F,"argument",q?`${F.text}: ${this.t(q)}`:this.s(`\`${T}\` \u30AA\u30D7\u30B7\u30E7\u30F3\u306E\u5024`,`Value for \`${T}\``),ce(F)?[]:this.sub(F))},m=l.indexOf("=");if(l.startsWith("--")&&m>0){let $=l.slice(0,m),T=c[$];if(u(o)){let F=se(o),q=F?.text.indexOf("=")??-1,P=F&&q>=0?F.text.slice(q+1):l.slice(m+1),H=T?.values?.[P],U=F&&q>=0?F.offsets?{text:P,offsets:F.offsets.slice(q+1)}:{text:P,base:(F.base??0)+q+1}:void 0,G=T?.lang&&U?this.embeddedText(U,T.lang,o):void 0,ee=G?.note?` \u2014 ${G.note}`:"";a.push(this.tok(o,"option",(T?this.t(T.text):h)+this.s(`\uFF08\u5024: \`${P}\`${H?" \u2014 "+this.t(H):""}\uFF09`,` (value: \`${P}\`${H?" \u2014 "+this.t(H):""})`)+ee,G?.tokens??[]))}return n}let g=c[l];if(g||l.startsWith("--")||e?.longSingleDash){let $=g,T=n,F=[];if($?.untilTerminator){let q=n+1;for(;q<t.length&&!Pl.has(t[q].text);)q++;let P=t.slice(n+1,q);if(P.length){let H=this.wrapped(P,this.s("\u5B9F\u884C\u3059\u308B\u30B3\u30DE\u30F3\u30C9: ","Command to run: ")),U=G=>G.forEach(ee=>{ee.label==="{}"?(ee.explanation=this.s("`{}`: \u898B\u3064\u304B\u3063\u305F\u30D5\u30A1\u30A4\u30EB\u306E\u30D1\u30B9\u306B\u7F6E\u304D\u63DB\u308F\u308B","`{}`: replaced with the path that was found"),ee.children=[]):U(ee.children)});U(H.children),F.push(H)}if(q<t.length){let H=t[q];u(H)&&F.push(this.tok(H,"operator",H.text==="+"?this.s("`-exec` \u306E\u7D42\u308F\u308A: \u898B\u3064\u304B\u3063\u305F\u30D5\u30A1\u30A4\u30EB\u3092\u307E\u3068\u3081\u30661\u56DE\u306E\u30B3\u30DE\u30F3\u30C9\u306B\u6E21\u3059","End of `-exec`: pass all matches to one command invocation"):this.s("`-exec` \u306E\u7D42\u308F\u308A: \u898B\u3064\u304B\u3063\u305F\u30D5\u30A1\u30A4\u30EB1\u4EF6\u3054\u3068\u306B\u30B3\u30DE\u30F3\u30C9\u3092\u5B9F\u884C\uFF08`;` \u306F\u30B7\u30A7\u30EB\u306B\u89E3\u91C8\u3055\u308C\u306A\u3044\u3088\u3046\u30A8\u30B9\u30B1\u30FC\u30D7\u304C\u5FC5\u8981\uFF09","End of `-exec`: run once per match (`;` must be escaped from the shell)")))}T=Math.min(q,t.length-1)}else $?.arg&&n+1<t.length&&(T=n+1,u(t[T])&&F.push(f($,l,t[T])));return u(o)&&a.push(this.tok(o,"option",p+($?this.t($.text):h),[])),a.push(...F),T}let _=l.slice(1),b=[],w=n,y=o.startPosition.column,N=o.startPosition.row,R=($,T,F,q,P)=>({kind:F,label:P,explanation:q,children:[],span:{start:{line:N,character:y+$},end:{line:N,character:y+T}}});for(let $=0;$<_.length;$++){let T="-"+_[$],F=c[T],q=$+1;if(!F){b.push(R(q,q+1,"option",h,T));continue}if(b.push(R(q,q+1,"option",p+this.t(F.text),T)),F.attachedOnly){if($+1<_.length){let P=_.slice($+1),H=/^[a-zA-Z]/.test(P)&&c["-"+P[0]]&&this.s(`\u3002\u6CE8\u610F: \`${P}\` \u306F\u5225\u306E\u30AA\u30D7\u30B7\u30E7\u30F3\u3067\u306F\u306A\u304F \`${T}\` \u306E\u5024\u3068\u3057\u3066\u6271\u308F\u308C\u308B`,`. Note: \`${P}\` is taken as the value of \`${T}\`, not as more options`);b.push(R(q+1,l.length,"argument",this.s(`\`${T}\` \u306E\u5024 \`${P}\``,`Value \`${P}\` for \`${T}\``)+(H||""),P))}break}if(F.arg){if($+1<_.length){let P=_.slice($+1),H=R(q+1,l.length,"argument",F.values?.[P]?`${P}: ${this.t(F.values[P])}`:this.s(`\`${T}\` \u306E\u5024`,`Value for \`${T}\``),P),U=F.lang&&!/[\\'"$`]/.test(l)?this.embeddedText({text:P,base:q+1},F.lang,o):void 0;U&&(H.children=U.tokens,U.note&&(H.explanation+=` \u2014 ${U.note}`)),b.push(H)}else n+1<t.length&&(w=n+1,u(t[w])&&b.push(f(F,T,t[w])));break}}let v=b.filter($=>$.span.start.line===N&&$.span.end.character<=y+l.length),E=b.filter($=>!v.includes($));if(u(o)){let $=v.filter(T=>T.kind==="option");a.push(this.tok(o,"option",$.length>1?this.s(`\u77ED\u3044\u30AA\u30D7\u30B7\u30E7\u30F3 ${$.map(T=>`\`${T.label}\``).join(" ")} \u3092\u307E\u3068\u3081\u3066\u6307\u5B9A`,`Combined short options ${$.map(T=>`\`${T.label}\``).join(" ")}`):$[0]?.explanation??h,$.length>1?v:v.filter(T=>T.kind==="argument")))}return a.push(...E),w}wrapped(e,t=""){let n=e[0],r=n.text,a=gs(this.opts.customCommands?.[r.split("/").pop()??r])??ha(r),o=a?this.t(a.summary):this.s(`\u30B3\u30DE\u30F3\u30C9 \`${r}\``,`Command \`${r}\``),l=this.args(a,e.slice(1),r),c={start:ye(n).start,end:ye(e[e.length-1]).end},u=e.map(h=>h.text).join(" ");return{kind:a?.builtin?"builtin":"command",label:de(u),explanation:t+this.s(`\`${r}\` \u3092\u5B9F\u884C: `,`runs \`${r}\`: `)+o,span:c,children:l,summary:`${r}: ${o}`}}arithTestExplanation(){return this.s("\u7B97\u8853\u8A55\u4FA1 `(( ))`: \u5F0F\u3092\u8A08\u7B97\u3057\u3001\u7D50\u679C\u304C 0 \u4EE5\u5916\u306A\u3089\u6210\u529F(0)\u3092\u8FD4\u3059","Arithmetic evaluation `(( ))`: succeeds if the result is non-zero")}test(e){let t=this.examples.length;(this.line===null||e.startPosition.row===this.line)&&this.testExample(e);let n=e.child(0)?.type,r=n==="[["?this.s("\u62E1\u5F35\u6761\u4EF6\u5F0F `[[ ]]`: \u6761\u4EF6\u3092\u8A55\u4FA1\u3057\u3001\u771F\u306A\u3089\u6210\u529F(0)\u3092\u8FD4\u3059\uFF08bash \u5C02\u7528\u3002\u5909\u6570\u3092\u30AF\u30A9\u30FC\u30C8\u3057\u306A\u304F\u3066\u3082\u5B89\u5168\u3067\u3001`&&` `||` `=~` \u304C\u4F7F\u3048\u308B\uFF09","Extended test `[[ ]]`: evaluates a condition (bash-only; safe without quoting, supports `&&`, `||`, `=~`)"):n==="(("?this.arithTestExplanation():this.s("\u6761\u4EF6\u5F0F `[ ]`: \u6761\u4EF6\u3092\u8A55\u4FA1\u3057\u3001\u771F\u306A\u3089\u6210\u529F(0)\u3092\u8FD4\u3059\uFF08`test` \u30B3\u30DE\u30F3\u30C9\u3068\u540C\u3058\u3002`[` \u306E\u5F8C\u3068 `]` \u306E\u524D\u306B\u306F\u7A7A\u767D\u304C\u5FC5\u8981\uFF09","Test `[ ]`: evaluates a condition (same as `test`; spaces after `[` and before `]` are required)"),a=this.tok(e,"test",r,this.subs(e.namedChildren));return a.summary=this.s(`\u6761\u4EF6\u5224\u5B9A ${de(e.text,40)}`,`test ${de(e.text,40)}`),this.tagExamples(t,e),a}regexNode(e){if((e.parent?.type==="binary_expression"?e.parent.childForFieldName("operator")?.text??e.parent.children.find(n=>n.type==="=~")?.text:void 0)==="=~"&&!/\$[\w{(@*#?!-]|[`"']/.test(e.text)&&e.startPosition.row===e.endPosition.row){let n=Ne(e.text,"ere",this.lang).map(a=>this.fromEmbedded(a,e,{text:e.text,base:0})),r=ie(e.text,"ere");return r&&this.regexExample(r,"values"),this.tok(e,"pattern",this.s("\u6B63\u898F\u8868\u73FE\uFF08\u62E1\u5F35\u6B63\u898F\u8868\u73FE ERE\uFF09","Regular expression (extended, ERE)"),n)}return this.tok(e,"pattern",this.s("\u6B63\u898F\u8868\u73FE\uFF08\u307E\u305F\u306F\u30D1\u30BF\u30FC\u30F3\uFF09","Regular expression (or pattern)"))}inArithmetic(e){for(let t=e.parent;t;t=t.parent){if(t.type==="arithmetic_expansion"||t.type==="c_style_for_statement")return!0;if(t.type==="test_command")return t.child(0)?.type==="(("}return!1}unary(e){let t=e.childForFieldName("operator")??e.child(0),n=t?.text??"",r=e.namedChildren.find(o=>!Se(o,t));if(n==="!"&&!this.inArithmetic(e))return this.tok(e,"test",this.s(`\u5426\u5B9A: \`${r?.text??""}\` \u304C\u507D\u306A\u3089\u771F`,`Negation: true if \`${r?.text??""}\` is false`),this.sub(r));let a=Cs[n];return a&&!this.inArithmetic(e)?this.tok(e,"test",this.s(`\u6761\u4EF6: \`${r?.text??""}\` \u304C${this.t(a)}`,`Condition: \`${r?.text??""}\` ${this.t(a)}`),this.subs([r].filter(o=>o&&!ce(o)))):this.tok(e,"operator",this.s(`\u7B97\u8853\u306E\u5358\u9805\u6F14\u7B97 \`${n}\``,`Arithmetic unary operator \`${n}\``),this.subs(e.namedChildren))}binary(e){let t=e.childForFieldName("left"),n=e.childForFieldName("right")??e.namedChildren[e.namedChildren.length-1],a=(e.childForFieldName("operator")??e.children.find(c=>!Se(c,t)&&!Se(c,n)))?.text??"",o=this.subs([t,n].filter(c=>c&&!ce(c)));if(!this.inArithmetic(e)&&ut[a])return a==="&&"||a==="||"||a==="-a"||a==="-o"?this.tok(e,"test",this.t(ut[a]),this.subs([t,n])):this.tok(e,"test",this.s(`\u6761\u4EF6: \`${t?.text}\` \u3068 \`${n?.text}\` \u3092\u6BD4\u8F03 \u2014 ${this.t(ut[a])}`,`Condition: \`${t?.text}\` vs \`${n?.text}\` \u2014 ${this.t(ut[a])}`),o);let l=["=","+=","-=","*=","/=","%="];return this.tok(e,"operator",l.includes(a)?this.s(`\u7B97\u8853\u4EE3\u5165: \`${t?.text}\` ${a} \`${n?.text}\``,`Arithmetic assignment: \`${t?.text}\` ${a} \`${n?.text}\``):this.s(`\u7B97\u8853\u6F14\u7B97: \`${t?.text}\` ${a} \`${n?.text}\``,`Arithmetic: \`${t?.text}\` ${a} \`${n?.text}\``),o)}word(e){let t=e.text;return t.startsWith("~")?this.tok(e,"expansion",this.s("\u30C1\u30EB\u30C0\u5C55\u958B: `~` \u306F\u30DB\u30FC\u30E0\u30C7\u30A3\u30EC\u30AF\u30C8\u30EA\u306B\u7F6E\u304D\u63DB\u308F\u308B","Tilde expansion: `~` becomes the home directory")):Is(t)?this.tok(e,"pattern",this.s(`\u30B0\u30ED\u30D6 \`${t}\`: \u4E00\u81F4\u3059\u308B\u30D5\u30A1\u30A4\u30EB\u540D\u306E\u4E00\u89A7\u306B\u5C55\u958B\u3055\u308C\u308B\uFF08\`*\` \u306F\u4EFB\u610F\u306E\u6587\u5B57\u5217, \`?\` \u306F\u4EFB\u610F\u306E1\u6587\u5B57\uFF09`,`Glob \`${t}\`: expands to matching file names (\`*\` any string, \`?\` any char)`)):this.tok(e,"argument",this.s(`\u6587\u5B57\u5217 \`${t}\``,`Word \`${t}\``))}string(e){return this.tok(e,"string",this.s("\u30C0\u30D6\u30EB\u30AF\u30A9\u30FC\u30C8\u6587\u5B57\u5217: \u4E2D\u306E `$\u5909\u6570` \u3084 `$(\u2026)` \u306F\u5C55\u958B\u3055\u308C\u308B\u304C\u3001\u5358\u8A9E\u5206\u5272\u3084\u30B0\u30ED\u30D6\u5C55\u958B\u306F\u3055\u308C\u306A\u3044\uFF081\u3064\u306E\u5F15\u6570\u306E\u307E\u307E\uFF09","Double-quoted string: `$vars` and `$(\u2026)` expand, but no word splitting or globbing (stays one argument)"),this.subs(e.namedChildren.filter(t=>t.type!=="string_content")))}varDesc(e){if(Rs[e])return this.t(Rs[e]);if(/^\d+$/.test(e))return this.s(`\u4F4D\u7F6E\u30D1\u30E9\u30E1\u30FC\u30BF: ${e} \u756A\u76EE\u306E\u5F15\u6570`,`Positional parameter: argument #${e}`);if(As[e])return this.t(As[e])}variable(e,t){let n=this.varDesc(e);return this.tok(t,"variable",n?`\`$${e}\`: ${n}`:this.s(`\u5909\u6570 \`${e}\``,`Variable \`${e}\``))}simpleExpansion(e){let t=e.text.slice(1),n=this.varDesc(t),r=this.tok(e,"variable",n?`${n}`:this.s(`\u5909\u6570 \`${t}\` \u306E\u5024\u306B\u7F6E\u304D\u63DB\u308F\u308B\uFF08\u30AF\u30A9\u30FC\u30C8\u3057\u306A\u3044\u3068\u7A7A\u767D\u3067\u5206\u5272\u3055\u308C\u3001\u30B0\u30ED\u30D6\u5C55\u958B\u3082\u3055\u308C\u308B\uFF09`,`Expands to the value of \`${t}\` (unquoted, it is word-split and globbed)`));return this.noSplit(e)&&(r.explanation=n??this.s(`\u5909\u6570 \`${t}\` \u306E\u5024\u306B\u7F6E\u304D\u63DB\u308F\u308B`,`Expands to the value of \`${t}\``)),r}noSplit(e){let t=e.parent;if(!t)return!1;if(["string","heredoc_body","variable_assignment","case_statement"].includes(t.type))return!0;for(let n=t;n;n=n.parent){if(n.type==="test_command")return n.child(0)?.type==="[["||n.child(0)?.type==="((";if(n.type==="arithmetic_expansion")return!0;if(n.type==="command"||n.type==="string")return!1}return!1}subscript(e){let t=e.childForFieldName("name")?.text??"",n=e.childForFieldName("index")?.text??"";return n==="@"||n==="*"?this.tok(e,"variable",this.s(`\u914D\u5217 \`${t}\` \u306E\u5168\u8981\u7D20`,`All elements of array \`${t}\``)):this.tok(e,"variable",this.s(`\u914D\u5217 \`${t}\` \u306E\u8981\u7D20 \`[${n}]\``,`Element \`[${n}]\` of array \`${t}\``))}expansion(e){let t=this.expansionSummary(e),n=e.text.trimStart(),r=e.text.length-n.length;r&&e.startPosition.row===e.endPosition.row&&(t.label=de(n),t.span={...t.span,start:{...t.span.start,character:t.span.start.character+r}});let a=e.startPosition.row===e.endPosition.row?Et(n):void 0;if(!a)return t;let o=a.op==="@"?ls[a.parts.find(d=>d.role==="transform")?.text??""]:void 0;o&&(t.explanation=this.s(`\u30D1\u30E9\u30E1\u30FC\u30BF\u5C55\u958B: \`${a.name}\` \u306E\u5024\u3092${o[0]}`,`Parameter expansion: take the value of \`${a.name}\` and ${o[1]}`)),a.op===":"&&(t.explanation=this.s("\u30D1\u30E9\u30E1\u30FC\u30BF\u5C55\u958B: ","Parameter expansion: ")+this.substringSummary(a));let l=si(a,this.lang);l&&(this.line===null||e.startPosition.row===this.line)&&this.examples.push({kind:"expansion",title:this.s(`\`${n}\` \u306E\u4F8B`,`Example for \`${n}\``),target:"",anchor:t.span,sections:l.map(d=>({label:d.when,lines:d.result?[d.result]:[],empty:this.s("\uFF08\u7A7A\u6587\u5B57\uFF09","(empty string)")}))});let c=e.startPosition.row,u=e.startPosition.column+r,h=a.parts.find(d=>d.role==="op");return t.children=a.parts.flatMap(d=>{let p=this.expansionPart(a,d,d===h);if(!p||!d.text)return[];let f={start:{line:c,character:u+d.start},end:{line:c,character:u+d.end}},m=this.nestedIn(e,u+d.start,u+d.end);return[{kind:p[0],label:d.text,explanation:p[1],span:f,children:m}]}),t}substringSummary(e){let t=e.parts.find(u=>u.role==="offset")?.text??"",n=e.parts.find(u=>u.role==="length")?.text,r=e.name;if(!/^-?\d+$/.test(t)||n!==void 0&&!/^-?\d+$/.test(n))return this.s(`\`${r}\` \u306E\u90E8\u5206\u6587\u5B57\u5217\u3092\u53D6\u308A\u51FA\u3059\uFF08\u958B\u59CB\u4F4D\u7F6E \`${t}\`${n!==void 0?`\u3001\u9577\u3055 \`${n}\``:""}\uFF09`,`take a substring of \`${r}\` (offset \`${t}\`${n!==void 0?`, length \`${n}\``:""})`);let a=Number(t),o=a<0?`\u672B\u5C3E\u304B\u3089 ${-a} \u6587\u5B57\u76EE`:` ${a+1} \u6587\u5B57\u76EE`,l=a<0?`${-a} characters from the end`:`the ${_n(a+1)} character`;if(n===void 0&&a<0)return this.s(`\`${r}\` \u306E\u672B\u5C3E ${-a} \u6587\u5B57\u3092\u53D6\u308A\u51FA\u3059`,`take the last ${-a} characters of \`${r}\``);if(n===void 0)return this.s(`\`${r}\` \u306E${o}\u304B\u3089\u6700\u5F8C\u307E\u3067\u3092\u53D6\u308A\u51FA\u3059`,`take \`${r}\` from ${l} to the end`);let c=Number(n);return c<0?this.s(`\`${r}\` \u306E${o}\u304B\u3089\u3001\u672B\u5C3E\u306E ${-c} \u6587\u5B57\u3092\u9664\u3044\u305F\u4F4D\u7F6E\u307E\u3067\u3092\u53D6\u308A\u51FA\u3059`,`take \`${r}\` from ${l} up to ${-c} characters before the end`):this.s(`\`${r}\` \u306E${o}\u304B\u3089 ${c} \u6587\u5B57\u3092\u53D6\u308A\u51FA\u3059`,`take ${c} characters of \`${r}\` starting at ${l}`)}nestedIn(e,t,n){let r=[],a=o=>{for(let l of o.namedChildren)l.startPosition.column>=t&&l.endPosition.column<=n&&Ll.has(l.type)?r.push(l):a(l)};return a(e),r.map(o=>this.full(o))}expansionPart(e,t,n){let r=t.text,a=this.s.bind(this);switch(t.role){case"prefix":return r==="#"?["operator",a("`#`: \u5024\u306E\u9577\u3055\uFF08\u6587\u5B57\u6570\u3001\u914D\u5217\u306A\u3089\u8981\u7D20\u6570\uFF09\u3092\u8FD4\u3059","`#`: gives the length (characters, or elements for an array)")]:e.op==="*"||e.op==="@"?["operator",a("`!`: \u3053\u306E\u540D\u524D\u3067\u59CB\u307E\u308B\u5909\u6570\u540D\u306E\u4E00\u89A7\u3092\u8FD4\u3059","`!`: lists variable names starting with this prefix")]:e.subscript==="@"||e.subscript==="*"?["operator",a("`!`: \u914D\u5217\u306E\u5024\u3067\u306F\u306A\u304F\u30A4\u30F3\u30C7\u30C3\u30AF\u30B9\uFF08\u30AD\u30FC\uFF09\u3092\u8FD4\u3059","`!`: gives the indices (keys) instead of the values")]:["operator",a("`!`: \u9593\u63A5\u53C2\u7167\u3002\u5909\u6570\u306E\u5024\u3092\u5225\u306E\u5909\u6570\u540D\u3068\u3057\u3066\u4F7F\u3046","`!`: indirection; use the value as another variable's name")];case"name":{let o=this.varDesc(r);return e.prefix==="!"&&(e.op==="*"||e.op==="@")?["variable",a(`\u5909\u6570\u540D\u306E\u63A5\u982D\u8F9E \`${r}\``,`Variable name prefix \`${r}\``)]:e.subscript!==void 0?["variable",a(`\u914D\u5217 \`${r}\``,`Array \`${r}\``)]:["variable",o?`\`$${r}\`: ${o}`:a(`\u5909\u6570 \`${r}\``,`Variable \`${r}\``)]}case"subscript":{let o=e.subscript??"";if((o==="@"||o==="*")&&e.prefix)return["variable",a(`\`[${o}]\`: \u914D\u5217\u306E\u3059\u3079\u3066\u306E\u8981\u7D20\u3092\u5BFE\u8C61\u306B\u3059\u308B`,`\`[${o}]\`: applies to every element of the array`)];if(o==="@")return["variable",a('`[@]`: \u3059\u3079\u3066\u306E\u8981\u7D20\uFF08`"${a[@]}"` \u3068\u30AF\u30A9\u30FC\u30C8\u3059\u308B\u3068\u5404\u8981\u7D20\u304C\u5225\u3005\u306E\u5358\u8A9E\u306B\u306A\u308B\uFF09','`[@]`: every element (quoted, `"${a[@]}"` keeps each element a separate word)')];if(o==="*")return["variable",a('`[*]`: \u3059\u3079\u3066\u306E\u8981\u7D20\uFF08`"${a[*]}"` \u3068\u30AF\u30A9\u30FC\u30C8\u3059\u308B\u30681\u3064\u306E\u6587\u5B57\u5217\u306B\u9023\u7D50\u3055\u308C\u308B\uFF09','`[*]`: every element (quoted, `"${a[*]}"` joins them into one string)')];if(/^-?\d+$/.test(o)){let l=Number(o);return["variable",l<0?a(`\u30A4\u30F3\u30C7\u30C3\u30AF\u30B9 ${l}: \u672B\u5C3E\u304B\u3089 ${-l} \u756A\u76EE\u306E\u8981\u7D20`,`Index ${l}: the ${_n(-l)} element from the end`):a(`\u30A4\u30F3\u30C7\u30C3\u30AF\u30B9 ${l}: ${l+1} \u756A\u76EE\u306E\u8981\u7D20\uFF080 \u59CB\u307E\u308A\uFF09`,`Index ${l}: the ${_n(l+1)} element (0-based)`)]}return["variable",a(`\u30A4\u30F3\u30C7\u30C3\u30AF\u30B9\uFF08\u9023\u60F3\u914D\u5217\u306A\u3089\u30AD\u30FC\uFF09 \`${o}\``,`Index (or key, for associative arrays) \`${o}\``)]}case"op":return n?["operator",`\`${r}\`: `+(os[r]?os[r][this.lang==="ja"?0:1]:r)]:["operator",r===":"?a("`:` \u958B\u59CB\u4F4D\u7F6E\u3068\u9577\u3055\u306E\u533A\u5207\u308A","`:` separates the offset from the length"):e.parts.find(o=>o.role==="replacement")?.text?a("`/` \u30D1\u30BF\u30FC\u30F3\u3068\u7F6E\u63DB\u5F8C\u306E\u6587\u5B57\u5217\u306E\u533A\u5207\u308A","`/` separates the pattern from the replacement"):a("`/` \u306E\u5F8C\u308D\uFF08\u7F6E\u63DB\u5F8C\u306E\u6587\u5B57\u5217\uFF09\u304C\u7A7A\u306A\u306E\u3067\u3001\u4E00\u81F4\u3057\u305F\u90E8\u5206\u306F\u524A\u9664\u3055\u308C\u308B","Nothing follows this `/`, so the replacement is empty and matches are deleted")];case"word":{let o=e.op??"";return o===":-"||o==="-"?["argument",a(`\u65E2\u5B9A\u5024 \`${r}\`: \`${e.name}\` \u306E\u4EE3\u308F\u308A\u306B\u4F7F\u3046\u5024`,`Default \`${r}\`: used instead of \`${e.name}\``)]:o===":="||o==="="?["argument",a(`\u65E2\u5B9A\u5024 \`${r}\`: \`${e.name}\` \u306B\u4EE3\u5165\u3055\u308C\u3066\u304B\u3089\u4F7F\u308F\u308C\u308B`,`Default \`${r}\`: assigned to \`${e.name}\`, then used`)]:o===":+"||o==="+"?["argument",a(`\u4EE3\u66FF\u5024 \`${r}\`: \`${e.name}\` \u304C\u8A2D\u5B9A\u3055\u308C\u3066\u3044\u308B\u3068\u304D\u306B\u4EE3\u308F\u308A\u306B\u4F7F\u3046\u5024`,`Alternate value \`${r}\`: used when \`${e.name}\` is set`)]:["string",a(`\u30A8\u30E9\u30FC\u30E1\u30C3\u30BB\u30FC\u30B8\u300C${r}\u300D`,`Error message "${r}"`)]}case"pattern":{let o=at(r),c=/^[\^,]/.test(e.op??"")?a("\u5909\u63DB\u3059\u308B\u6587\u5B57\u306E\u30D1\u30BF\u30FC\u30F3","Pattern of characters to convert"):a("\u30D1\u30BF\u30FC\u30F3","Pattern");return o?["pattern",`${c} \`${r}\`: ${un(o,this.lang)}`]:["pattern",a(`${c} \`${r}\`\uFF08\u5909\u6570\u306A\u3069\u3092\u542B\u3080\u305F\u3081\u3001\u5185\u5BB9\u306F\u5B9F\u884C\u6642\u306B\u6C7A\u307E\u308B\uFF09`,`${c} \`${r}\` (contains expansions, so it is decided at run time)`)]}case"replacement":return["string",r?a(`\u7F6E\u63DB\u5F8C\u306E\u6587\u5B57\u5217 \`${r}\``,`Replacement \`${r}\``):a("\u7F6E\u63DB\u5F8C\u306E\u6587\u5B57\u5217: \u7A7A\uFF08\u4E00\u81F4\u3057\u305F\u90E8\u5206\u3092\u524A\u9664\u3059\u308B\uFF09","Replacement: empty (the match is deleted)")];case"offset":{let o=r.trim();if(!/^-?\d+$/.test(o))return["number",a(`\u958B\u59CB\u4F4D\u7F6E \`${o}\`\uFF08\u7B97\u8853\u5F0F\u3068\u3057\u3066\u8A55\u4FA1\u3055\u308C\u308B\uFF09`,`Offset \`${o}\` (evaluated as arithmetic)`)];let l=Number(o);return l<0?["number",a(`\u958B\u59CB\u4F4D\u7F6E ${l}: \u672B\u5C3E\u304B\u3089 ${-l} \u6587\u5B57\u76EE\u304B\u3089\uFF08\u8CA0\u306E\u5024\u306F \`:-\` \u3068\u533A\u5225\u3059\u308B\u305F\u3081\u3001\u524D\u306B\u7A7A\u767D\u304B\u62EC\u5F27\u304C\u5FC5\u8981\uFF09`,`Offset ${l}: start ${-l} characters from the end (a space or parentheses is needed before a negative value, to tell it from \`:-\`)`)]:["number",a(`\u958B\u59CB\u4F4D\u7F6E ${l}: ${l+1} \u6587\u5B57\u76EE\u304B\u3089\uFF080 \u59CB\u307E\u308A\uFF09`,`Offset ${l}: start at the ${_n(l+1)} character (0-based)`)]}case"length":{let o=r.trim();if(!/^-?\d+$/.test(o))return["number",a(`\u9577\u3055 \`${o}\`\uFF08\u7B97\u8853\u5F0F\u3068\u3057\u3066\u8A55\u4FA1\u3055\u308C\u308B\uFF09`,`Length \`${o}\` (evaluated as arithmetic)`)];let l=Number(o);return["number",l<0?a(`\u9577\u3055 ${l}: \u672B\u5C3E\u306E ${-l} \u6587\u5B57\u3092\u9664\u3044\u305F\u4F4D\u7F6E\u307E\u3067`,`Length ${l}: up to ${-l} characters before the end`):a(`\u9577\u3055 ${l}: ${l} \u6587\u5B57\u5206`,`Length ${l}: ${l} characters`)]}case"transform":{let o=ls[r];return["operator",o?`\`${r}\`: ${o[this.lang==="ja"?0:1]}`:a(`\u5909\u63DB \`${r}\``,`Transformation \`${r}\``)]}}}expansionSummary(e){let t=e.children,n=e.text.trimStart().slice(2,-1),r=t.find(p=>["variable_name","subscript","special_variable_name"].includes(p.type)),a=r?.text??n,o=r?.type==="subscript"&&/\[[@*]\]$/.test(a),l=t[1]&&!t[1].isNamed?t[1].type:"";if(l==="#"&&r)return this.tok(e,"expansion",o?this.s(`\u914D\u5217 \`${a.replace(/\[.*/,"")}\` \u306E\u8981\u7D20\u6570`,`Number of elements in array \`${a.replace(/\[.*/,"")}\``):this.s(`\u5909\u6570 \`${a}\` \u306E\u6587\u5B57\u6570\uFF08\u9577\u3055\uFF09`,`Length of \`${a}\` in characters`));if(l==="!"&&r)return this.tok(e,"expansion",o?this.s(`\u914D\u5217 \`${a.replace(/\[.*/,"")}\` \u306E\u30A4\u30F3\u30C7\u30C3\u30AF\u30B9\uFF08\u30AD\u30FC\uFF09\u4E00\u89A7`,`Indices (keys) of array \`${a.replace(/\[.*/,"")}\``):this.s(`\u9593\u63A5\u53C2\u7167: \u5909\u6570 \`${a}\` \u306E\u5024\u3092\u5909\u6570\u540D\u3068\u307F\u306A\u3057\u3001\u305D\u306E\u5909\u6570\u306E\u5024\u3092\u53D6\u308A\u51FA\u3059`,`Indirection: use the value of \`${a}\` as a variable name`));let c=t.findIndex((p,f)=>f>0&&e.fieldNameForChild(f)==="operator"),u=r?.type==="subscript"?this.t(o?{ja:`\u914D\u5217 \`${a.replace(/\[.*/,"")}\` \u306E\u5168\u8981\u7D20`,en:`all elements of array \`${a.replace(/\[.*/,"")}\``}:{ja:`\u914D\u5217\u8981\u7D20 \`${a}\``,en:`array element \`${a}\``}):void 0;if(c>0){let p=t[c].type,f=t[t.length-1],m=e.text.slice(t[c].endIndex-e.startIndex,f.type==="}"?f.startIndex-e.startIndex:void 0),g=Ms[p];if(m===""&&(p===":-"||p==="-"))return this.tok(e,"expansion",this.s(`\u30D1\u30E9\u30E1\u30FC\u30BF\u5C55\u958B: \`${a}\` \u304C\u672A\u8A2D\u5B9A\u306A\u3089\u7A7A\u6587\u5B57\u3068\u3057\u3066\u6271\u3046\uFF08\`set -u\` \u3067\u3082\u30A8\u30E9\u30FC\u306B\u3057\u306A\u3044\u305F\u3081\u306E\u5B9A\u756A\uFF09`,`Parameter expansion: empty string if \`${a}\` is unset (avoids errors under \`set -u\`)`));if(g){let _=t.slice(c+1).filter(w=>w.isNamed&&!ce(w)&&w.type!=="regex"),b=/^[1-9]\d*$/.test(a)?`$${a}`:a;return this.tok(e,"expansion",this.s("\u30D1\u30E9\u30E1\u30FC\u30BF\u5C55\u958B: ","Parameter expansion: ")+this.t(g(b,m)),this.subs(_))}}let h=n.match(/^([A-Za-z_][A-Za-z0-9_]*|[0-9@*#?$!-]):(-?\d+|\s*-\d+|[^-=+?][^}]*)$/);if(h)return this.tok(e,"expansion",this.s("\u30D1\u30E9\u30E1\u30FC\u30BF\u5C55\u958B: ","Parameter expansion: ")+this.t(Ms[":"](h[1],h[2])));let d=u??this.varDesc(a);return this.tok(e,"variable",d?this.s(`\`\${${a}}\`: ${d}`,`\`\${${a}}\`: ${d}`):this.s(`\u5909\u6570 \`${a}\` \u306E\u5024\u306B\u7F6E\u304D\u63DB\u308F\u308B\uFF08\`{}\` \u306F\u5909\u6570\u540D\u306E\u7BC4\u56F2\u3092\u660E\u793A\u3059\u308B\uFF09`,`Value of \`${a}\` (braces delimit the name)`))}commandSubstitution(e){let t=e.text.startsWith("`");return this.tok(e,"substitution",this.s(`\u30B3\u30DE\u30F3\u30C9\u7F6E\u63DB ${t?"`` `\u2026` ``\uFF08\u65E7\u5F0F\u3002`$(\u2026)` \u63A8\u5968\uFF09":"`$(\u2026)`"}: \u4E2D\u306E\u30B3\u30DE\u30F3\u30C9\u3092\u5B9F\u884C\u3057\u3001\u305D\u306E\u6A19\u6E96\u51FA\u529B\uFF08\u672B\u5C3E\u306E\u6539\u884C\u306F\u9664\u304F\uFF09\u306B\u7F6E\u304D\u63DB\u3048\u308B`,`Command substitution ${t?"`` `\u2026` `` (legacy; prefer `$(\u2026)`)":"`$(\u2026)`"}: runs the command and is replaced by its stdout (trailing newlines removed)`),this.subs(e.namedChildren))}processSubstitution(e){let t=e.text.startsWith(">(");return this.tok(e,"substitution",t?this.s("\u30D7\u30ED\u30BB\u30B9\u7F6E\u63DB `>(\u2026)`: \u66F8\u304D\u8FBC\u3080\u3068\u4E2D\u306E\u30B3\u30DE\u30F3\u30C9\u306E\u6A19\u6E96\u5165\u529B\u306B\u6E21\u308B\u30D5\u30A1\u30A4\u30EB\u540D\uFF08/dev/fd/N\uFF09\u306B\u7F6E\u304D\u63DB\u308F\u308B","Process substitution `>(\u2026)`: a file name whose writes go to the command's stdin"):this.s("\u30D7\u30ED\u30BB\u30B9\u7F6E\u63DB `<(\u2026)`: \u4E2D\u306E\u30B3\u30DE\u30F3\u30C9\u306E\u51FA\u529B\u3092\u3001\u30D5\u30A1\u30A4\u30EB\u306E\u3088\u3046\u306B\u8AAD\u3081\u308B\u30D5\u30A1\u30A4\u30EB\u540D\uFF08/dev/fd/N\uFF09\u306B\u7F6E\u304D\u63DB\u3048\u308B","Process substitution `<(\u2026)`: a file name from which the command's output can be read"),this.subs(e.namedChildren))}};function se(s){if(s.type==="raw_string")return{text:s.text.slice(1,-1),base:1};if(s.type==="string"&&s.namedChildren.every(e=>e.type==="string_content")&&!/[\\$`]/.test(s.text))return{text:s.text.slice(1,-1),base:1};if(ce(s)&&!/[\\'"$`]/.test(s.text))return{text:s.text,base:0};if(s.type==="concatenation"&&s.startPosition.row===s.endPosition.row){let e="",t=[];for(let n of s.namedChildren){let r=se(n);if(!r||r.offsets)return;let a=n.startIndex-s.startIndex+(r.base??0);for(let o=0;o<r.text.length;o++)t.push(a+o);e+=r.text}return{text:e,offsets:t}}}function Fs(s,e,t){return s.offsets?t?e===0?s.offsets[0]??0:s.offsets[e-1]+1:s.offsets[e]??(s.offsets[s.offsets.length-1]??0)+1:(s.base??0)+e}function Ue(s){return s.replace(/\t/g,"\u21E5").replace(/[\x00-\x08\x0b-\x1f\x7f]/g,e=>e==="\x7F"?"\u2421":String.fromCharCode(9216+e.charCodeAt(0)))}function jl(s,e){let t=s?.options;if(!t)return!1;for(let n of e){let r=n.text;if(r==="--")break;if(t[r.split("=")[0]]?.fillsPositional)return!0;if(/^-[A-Za-z]+/.test(r)&&!r.startsWith("--"))for(let a of r.slice(1)){let o=t["-"+a];if(o?.fillsPositional)return!0;if(o?.arg||o?.attachedOnly)break}}return!1}function ql(s,e){let t=/^\s*s(.)/.exec(s);if(!t||/[\s\\\n]/.test(t[1]))return;let n=t[1],r=t[0].length,a="";for(;r<s.length&&s[r]!==n;r++){if(s[r]==="\\"&&s[r+1]===n){a+=n,r++;continue}if(s[r]==="\\"){a+=s[r]+(s[r+1]??""),r++;continue}a+=s[r]}let o=/^[^;\n]*$/.test(s)?s.split(n).pop()??"":"";return ie(a,e,{ignoreCase:/[Ii]/.test(o),sedEscapes:!0})}function ha(s){if(Object.prototype.hasOwnProperty.call(jt,s))return jt[s];let e=s.includes("/")?s.slice(s.lastIndexOf("/")+1):s;if(Object.prototype.hasOwnProperty.call(Ke,e))return Ke[e];if(e==="egrep"||e==="fgrep")return Ke.grep;if(e==="python")return Ke.python3;if(e==="zsh"||e==="dash"||e==="ksh")return Ke.sh}function bn(s){return s.summary??s.explanation}function Fe(s){return s.sort((e,t)=>e.span.start.line-t.span.start.line||e.span.start.character-t.span.start.character)}var Ft=(s,e)=>({startLine:s.startPosition.row,startCol:s.startPosition.column,endLine:s.endPosition.row,endCol:s.endPosition.column,text:e});function fa(s){let e=s.node;switch(s.id){case"dbracket":{let t=e.namedChildren.length===1?e.namedChildren[0]:void 0,n=t&&Dl(t);return n?{title:["`[[ ]]` \u3092 `[ ]` \u306B\u66F8\u304D\u63DB\u3048\u308B","Rewrite `[[ ]]` as `[ ]`"],edits:[Ft(e,n)]}:void 0}case"eqeqTest":return{title:["`==` \u3092 `=` \u306B\u66F8\u304D\u63DB\u3048\u308B","Replace `==` with `=`"],edits:e.descendantsOfType("==").map(t=>Ft(t,"="))};case"source":{let t=e.childForFieldName("name");return t?{title:["`source` \u3092 `.` \u306B\u66F8\u304D\u63DB\u3048\u308B","Replace `source` with `.`"],edits:[Ft(t,".")]}:void 0}case"funcKeyword":{let t=e.child(0),n=e.childForFieldName("name");if(!t||!n)return;let a=e.children.find(o=>o.type===")")??n;return{title:["`function name` \u3092 `name()` \u306B\u66F8\u304D\u63DB\u3048\u308B","Rewrite `function name` as `name()`"],edits:[{startLine:t.startPosition.row,startCol:t.startPosition.column,endLine:a.endPosition.row,endCol:a.endPosition.column,text:`${n.text}()`}]}}case"ampRedirect":case"ampAppend":{let t=e.children.find(a=>a.type==="&>"||a.type==="&>>"),n=e.childForFieldName("destination");if(!t||!n)return;let r=t.type==="&>"?">":">>";return{title:[`\`${t.type}\` \u3092 \`${r}file 2>&1\` \u306B\u66F8\u304D\u63DB\u3048\u308B`,`Rewrite \`${t.type}\` as \`${r}file 2>&1\``],edits:[Ft(e,`${r} ${n.text} 2>&1`)]}}case"pipeAmp":return{title:["`|&` \u3092 `2>&1 |` \u306B\u66F8\u304D\u63DB\u3048\u308B","Rewrite `|&` as `2>&1 |`"],edits:e.children.filter(t=>t.type==="|&").map(t=>Ft(t,"2>&1 |"))}}}var pa=/^(-[a-zA-Z]|=|!=|-eq|-ne|-lt|-le|-gt|-ge|-nt|-ot|-ef)$/;function Dl(s){let e=new Set,t=[],n=a=>{let o=a.type==="binary_expression"?a.childForFieldName("operator")?.text:void 0;o==="&&"||o==="||"?(e.add(o),n(a.childForFieldName("left")),n(a.childForFieldName("right"))):t.push(a)};if(n(s),e.size>1)return;let r=t.map(ma);if(!r.some(a=>a===void 0))return r.map(a=>`[ ${a} ]`).join(` ${[...e][0]??"&&"} `)}function ma(s){if(s.type==="unary_expression"){let t=s.childForFieldName("operator")?.text??s.child(0)?.text??"",n=s.namedChildren.filter(a=>a.type!=="test_operator").pop();if(!n)return;if(t==="!"){let a=ma(n);return a===void 0?void 0:`! ${a}`}let r=wn(n);return pa.test(t)&&r!==void 0?`${t} ${r}`:void 0}if(s.type==="binary_expression"){let t=s.childForFieldName("operator")?.text??"",n=s.childForFieldName("left"),r=s.childForFieldName("right");if(!n||!r||(t==="=="&&(t="="),!pa.test(t))||(t==="="||t==="!=")&&(/[*?[]/.test(ga(r))||_a(r)))return;let a=wn(n),o=wn(r);return a!==void 0&&o!==void 0?`${a} ${t} ${o}`:void 0}let e=wn(s);return e!==void 0?`-n ${e}`:void 0}function ga(s){return s.type==="string"||s.type==="raw_string"||s.type==="ansi_c_string"?"":s.type==="concatenation"?s.namedChildren.map(ga).join(""):s.type==="simple_expansion"||s.type==="expansion"||s.type==="command_substitution"?"":s.text}function _a(s){return["simple_expansion","expansion","command_substitution"].includes(s.type)?!0:s.type==="concatenation"&&s.namedChildren.some(_a)}function wn(s){switch(s.type){case"string":case"raw_string":case"number":return s.text;case"word":case"extglob_pattern":return/^[\w@%+=:,./-]+$/.test(s.text)?s.text:void 0;case"simple_expansion":case"expansion":case"command_substitution":return`"${s.text}"`;case"concatenation":return s.namedChildren.every(e=>e.type==="word"&&/^[\w@%+=:,./-]+$/.test(e.text)||["simple_expansion","expansion","command_substitution"].includes(e.type))?`"${s.text}"`:void 0}}function yn(s,e){let t=e.split(/[\\/]/).pop()??"";if(s==="dockerfile"||/^(Dockerfile|Containerfile)(\..*)?$|\.(dockerfile|containerfile)$/i.test(t))return"dockerfile";if(s==="makefile"||/^(GNU)?makefile$|\.mk$/i.test(t))return"makefile";if(t==="package.json")return"npm";if(s==="yaml"||s==="github-actions-workflow"||/\.ya?ml$/i.test(t))return"yaml";if(s==="markdown"||/\.md$/i.test(t))return"markdown";if(s==="python"||/\.py$/i.test(t))return"python"}var Me=class{text="";map=[];ends=[];inserted=[];copy(e,t,n){for(let r=t;r<n;r++)this.text+=e[r],this.map.push(r),this.ends.push(r+1)}insert(e,t,n,r){e.length>1&&this.inserted.push([this.text.length,this.text.length+e.length,r]);for(let a=0;a<e.length;a++)this.text+=e[a],this.map.push(t),this.ends.push(n)}finish(e){return[...this.map,this.ends.length?this.ends[this.ends.length-1]:e]}},js=class{lines;outs;regions=[];substitutions=[];constructor(e){this.lines=e.split(/\r?\n/),this.outs=this.lines.map(()=>{})}plain(e,t=0,n=this.lines[e].length){let r=this.outs[e]??=new Me;return r.copy(this.lines[e],t,n),r}region(e,t,n,r,a,o){t>=e&&this.regions.push({start:e,end:t,label:n,shell:r,notes:a,warnPipefail:o})}build(){let e=this.lines.map((t,n)=>this.outs[n]?.finish(t.length)??[t.length]);return{text:this.outs.map(t=>t?.text??"").join(`
104
+ `),maps:e,inserted:this.outs.map(t=>t?.inserted??[]),regions:this.regions,substitutions:this.substitutions}}};function kn(s,e){let t=new js(e);switch(s){case"dockerfile":Wl(t);break;case"makefile":Vl(t);break;case"yaml":Hl(t);break;case"npm":Xl(t);break;case"markdown":Ql(t);break;case"python":ec(t);break}return t.build()}function Ul(s,e,t){let n=[],r=e,a=t+1;for(;;){let o=s[r];for(;a<o.length&&/[\s,]/.test(o[a]);)a++;if(a>=o.length||o[a]==="\\"&&!o.slice(a+1).trim()){if(++r>=s.length)return;a=0;continue}if(o[a]==="]")return{words:n,last:r};if(o[a]!=='"')return;let l={line:r,start:a,end:a,value:"",cols:[]};for(a++;a<o.length&&o[a]!=='"';a++)if(o[a]==="\\"){let c=o[++a];l.value+=c==="n"?`
105
+ `:c==="t"?" ":c,l.cols.push(a-1)}else l.value+=o[a],l.cols.push(a);if(o[a]!=='"')return;l.end=++a,n.push(l)}}function qs(s,e){e.forEach((t,n)=>{let r=s.outs[t.line]??=new Me,a=e[n+1],o=l=>r.insert(t.value[l],t.cols[l],t.cols[l]+1);if(t.placeholder)r.insert(t.placeholder[0],t.start,t.end,t.placeholder[1]);else if(/^[\w@%+=:,./-]+$/.test(t.value)){let l=t.value.length-1;for(let c=0;c<=l;c++)r.insert(t.value[c],c===0?t.start:t.cols[c],c===l?t.end:t.cols[c]+1)}else{r.insert("'",t.start,t.start+1);for(let l=0;l<t.value.length;l++)t.value[l]==="'"?r.insert("'\\''",t.cols[l],t.cols[l]+1):o(l);r.insert("'",t.end-1,t.end)}a&&a.line===t.line?r.insert(" ",t.end,a.start):a&&r.insert(" \\",t.end,t.end)})}var zl=/^(sh|bash|dash|ash|zsh|ksh|ksh93|mksh|yash|busybox)$/;function Wl(s){let e="sh",t=!1;for(let n=0;n<s.lines.length;n++){let r=s.lines[n],a=/^(\s*)(RUN|CMD|ENTRYPOINT|SHELL)(\s+(?:--[\w-]+(?:=\S*)?\s+)*)/i.exec(r);if(!a)continue;let o=a[0].length,l=a[2].toUpperCase();if(/^\[\s*"/.test(r.slice(o))){let h=Ul(s.lines,n,o);if(!h||!h.words.length)continue;let{words:d,last:p}=h,f=d[0].value.split("/").pop();if(l==="SHELL"){e=f==="bash"?"bash":f==="zsh"?"zsh":f==="ash"||f==="busybox"?"ash":"sh",t=d.some((g,_)=>g.value==="pipefail"&&/^-\w*o$/.test(d[_-1]?.value??"")),qs(s,d),s.region(n,p,["Dockerfile \u306E SHELL","Dockerfile SHELL"],"bash",[['\u4EE5\u964D\u306E RUN\u30FBCMD\u30FBENTRYPOINT \u306E\u30B7\u30A7\u30EB\u5F62\u5F0F\u306F\u3001\u3053\u306E\u30B3\u30DE\u30F3\u30C9\u306E\u6700\u5F8C\u306B\u547D\u4EE4\u306E\u5185\u5BB9\u3092\u4ED8\u3051\u3066\u5B9F\u884C\u3055\u308C\u307E\u3059\uFF08\u4F8B: `/bin/bash -o pipefail -c "<RUN \u306E\u5185\u5BB9>"`\uFF09\u3002','Later shell-form RUN, CMD and ENTRYPOINT instructions run with this command, followed by their text (e.g. `/bin/bash -o pipefail -c "<RUN text>"`).']]),n=p;continue}let m=d.findIndex((g,_)=>_>0&&/^-\w*c$/.test(g.value));if(zl.test(f)&&m>0&&d[m+1]){let g=d[m+1],_=s.outs[g.line]??=new Me;for(let w=0;w<g.value.length;w++)_.insert(g.value[w],g.cols[w],g.cols[w]+1);let b=f==="bash"?"bash":f==="zsh"?"zsh":f==="dash"?"dash":f==="ash"||f==="busybox"?"ash":f==="mksh"?"mksh":/^ksh/.test(f)?"ksh":f==="yash"?"yash":"sh";s.region(g.line,g.line,[`Dockerfile \u306E ${l}\uFF08exec \u5F62\u5F0F\u3067 \`${d[0].value} ${d[m].value}\` \u306B\u6E21\u3059\u30B9\u30AF\u30EA\u30D7\u30C8\uFF09`,`Dockerfile ${l} (a script passed to \`${d[0].value} ${d[m].value}\` in exec form)`],b),n=p;continue}qs(s,d),s.region(n,p,[`Dockerfile \u306E ${l}\uFF08exec \u5F62\u5F0F\uFF09`,`Dockerfile ${l} (exec form)`],"bash",[["exec \u5F62\u5F0F\uFF08`[...]`\uFF09\u306F\u30B7\u30A7\u30EB\u3092\u901A\u3055\u305A\u306B\u30B3\u30DE\u30F3\u30C9\u3092\u76F4\u63A5\u5B9F\u884C\u3057\u307E\u3059\u3002`$VAR` \u306E\u5C55\u958B\u30FB\u30D1\u30A4\u30D7\u30FB\u30EA\u30C0\u30A4\u30EC\u30AF\u30C8\u30FB`&&` \u306A\u3069\u306F\u50CD\u304B\u305A\u3001\u5404\u8981\u7D20\u304C\u305D\u306E\u307E\u307E\u5F15\u6570\u306B\u306A\u308A\u307E\u3059\u3002","The exec form (`[...]`) runs the command directly, without a shell: `$VAR`, pipes, redirections and `&&` do not work, and each element is passed as it is."]]),n=p;continue}if(l==="SHELL")continue;let c=/^<<-?\s*["']?(\w+)["']?/.exec(r.slice(o));if(c){let h=n+1,d=h;for(;d<s.lines.length&&s.lines[d].trim()!==c[1];)s.plain(d++);s.region(h,d-1,[`Dockerfile \u306E ${l}\uFF08\u30D2\u30A2\u30C9\u30AD\u30E5\u30E1\u30F3\u30C8\uFF09`,`Dockerfile ${l} (here-document)`],e,void 0,l==="RUN"&&!t),n=d;continue}let u=n;for(s.plain(n,o);/\\\s*$/.test(s.lines[n])&&n+1<s.lines.length;){for(n++;/^\s*#/.test(s.lines[n])&&n+1<s.lines.length;)(s.outs[n]??=new Me).insert("\\",0,0),n++;s.plain(n)}s.region(u,n,[`Dockerfile \u306E ${l}`,`Dockerfile ${l}`],e,void 0,l==="RUN"&&!t)}}var ba={"@":["make_target","\u30BF\u30FC\u30B2\u30C3\u30C8\u540D","the target name"],"<":["make_first_prerequisite","\u6700\u521D\u306E\u4F9D\u5B58\u30D5\u30A1\u30A4\u30EB","the first prerequisite"],"^":["make_prerequisites","\u3059\u3079\u3066\u306E\u4F9D\u5B58\u30D5\u30A1\u30A4\u30EB","all prerequisites"],"?":["make_newer_prerequisites","\u30BF\u30FC\u30B2\u30C3\u30C8\u3088\u308A\u65B0\u3057\u3044\u4F9D\u5B58\u30D5\u30A1\u30A4\u30EB","the prerequisites newer than the target"],"*":["make_stem","\u30D1\u30BF\u30FC\u30F3\u30EB\u30FC\u30EB\u306E `%` \u306B\u5F53\u305F\u308B\u90E8\u5206","the stem matched by `%`"]};function Vl(s){let e="sh",t=!1;for(let n=0;n<s.lines.length;n++){let r=s.lines[n],a=/^\s*SHELL\s*:?=\s*(\S+)/.exec(r);if(a){let l=a[1].split("/").pop();e=l==="bash"?"bash":l==="zsh"?"zsh":"sh"}if(!r.startsWith(" ")){/^[^\s#=][^=]*:(?!=)/.test(r)&&!/^\s*(ifeq|ifneq|ifdef|ifndef|else|endif|define|endef|include|export)\b/.test(r)?t=!0:r.trim()&&!r.trimStart().startsWith("#")&&(t=!1);continue}if(!t)continue;let o=n;for(xa(s,n,!0);/\\$/.test(s.lines[n])&&n+1<s.lines.length;)xa(s,++n,!1);s.region(o,n,["Makefile \u306E\u30EC\u30B7\u30D4","Makefile recipe"],e)}}function xa(s,e,t){let n=s.lines[e],r=s.outs[e]??=new Me,a=n.startsWith(" ")?1:0;if(t)for(;/[@+\-\s]/.test(n[a]??"")&&a<n.length;)a++;for(;a<n.length;){if(n[a]!=="$"){r.copy(n,a,a+1),a++;continue}let o=n[a+1];if(o==="$"){r.insert("$",a,a+2),a+=2;continue}if(o&&ba[o]){let[l,c,u]=ba[o],h=[`make \u306E\u81EA\u52D5\u5909\u6570\uFF08${c}\uFF09\u3067\u3001\u30B7\u30A7\u30EB\u304C\u5B9F\u884C\u3055\u308C\u308B\u524D\u306B make \u304C\u5C55\u958B\u3057\u307E\u3059`,`make's automatic variable (${u}), expanded by make before the shell runs`];r.insert(`\${${l}}`,a,a+2,h),s.substitutions.push({line:e,text:`$${o}`,meaning:h}),a+=2;continue}if(o==="("||o==="{"){let l=Jl(n,a+1);if(l<0){r.copy(n,a,n.length);break}let c=n.slice(a+2,l),u=/^[\w.]+$/.test(c),h=u?c.replace(/\./g,"_"):`make_${c.split(/\s/)[0].replace(/\W/g,"_")}`,d=u?[`make \u306E\u5909\u6570 \`${c}\` \u3067\u3001\u30B7\u30A7\u30EB\u304C\u5B9F\u884C\u3055\u308C\u308B\u524D\u306B make \u304C\u5C55\u958B\u3057\u307E\u3059`,`the make variable \`${c}\`, expanded by make before the shell runs`]:[`make \u306E\u95A2\u6570 \`${c.split(/\s/)[0]}\` \u306E\u547C\u3073\u51FA\u3057\u3067\u3001\u30B7\u30A7\u30EB\u304C\u5B9F\u884C\u3055\u308C\u308B\u524D\u306B make \u304C\u7D50\u679C\u306B\u7F6E\u304D\u63DB\u3048\u307E\u3059`,`a call of the make function \`${c.split(/\s/)[0]}\`, replaced by its result before the shell runs`];r.insert(`\${${h}}`,a,l+1,d),s.substitutions.push({line:e,text:n.slice(a,l+1),meaning:d}),a=l+1;continue}if(o&&/\w/.test(o)){let l=[`make \u306E\u5909\u6570 \`${o}\` \u3067\u3001\u30B7\u30A7\u30EB\u304C\u5B9F\u884C\u3055\u308C\u308B\u524D\u306B make \u304C\u5C55\u958B\u3057\u307E\u3059`,`the make variable \`${o}\`, expanded by make before the shell runs`];r.insert(`\${${o}}`,a,a+2,l),s.substitutions.push({line:e,text:`$${o}`,meaning:l}),a+=2;continue}r.copy(n,a,a+1),a++}}function Jl(s,e){let t=s[e]==="("?")":"}",n=0;for(let r=e;r<s.length;r++)if(s[r]===s[e])n++;else if(s[r]===t&&--n===0)return r;return-1}var Bl=/^(run|script|before_script|after_script|bash|sh|cmds?|command)$/;function Hl(s){let e=s.lines.some(t=>/^\s*(runs-on|steps|jobs)\s*:/.test(t));for(let t=0;t<s.lines.length;t++){let n=s.lines[t],r=/^(\s*(?:-\s+)?)([\w-]+)\s*:(?:\s+(.*))?$/.exec(n);if(!r||!Bl.test(r[2]))continue;let a=r[2],o=r[1].length,l=(r[3]??"").replace(/\s+#.*$/,"");if(a==="run"&&!l&&/^\s*defaults\s*:/.test(s.lines[t-1]??""))continue;let c=Gl(s,t,o,a,e);if(c===null)continue;let u=e&&a==="run"?["GitHub Actions \u306E `run:` \u30B9\u30C6\u30C3\u30D7","GitHub Actions `run:` step"]:[`YAML \u306E \`${a}:\``,`YAML \`${a}:\``],h=n.length-(r[3]??"").length;if(/^[|>][-+]?\d*$/.test(l))t=wa(s,t,o,u,c);else if(l)ya(s,t,h,l,u,c);else{let d=t+1;for(;d<s.lines.length&&(!s.lines[d].trim()||Te(s.lines[d])>o||Te(s.lines[d])===o&&/^\s*-\s/.test(s.lines[d])&&!/^\s*-\s+[\w-]+\s*:/.test(s.lines[d]));){let p=/^(\s*-\s+)(.*)$/.exec(s.lines[d]);if(p){let f=p[2].replace(/\s+#.*$/,"");if(/^[|>][-+]?\d*$/.test(f)){d=wa(s,d,Te(s.lines[d]),u,c)+1;continue}ya(s,d,p[1].length,f,u,c)}d++}t=d-1}}}function Te(s){return s.length-s.trimStart().length}function Gl(s,e,t,n,r){if(n==="command"&&!r)return null;if(n==="bash")return"bash";if(n==="sh")return"sh";if(n!=="run")return;let a=t+(/^\s*-\s/.test(s.lines[e])?2:0);for(let o=e-1;o>=0&&(Te(s.lines[o])>=a||!s.lines[o].trim());o--){let l=/^\s*(?:-\s+)?shell:\s*(\S+)/.exec(s.lines[o]);if(l&&Te(s.lines[o].replace(/-\s+/," "))===a)return Ls(l[1])}for(let o=e+1;o<s.lines.length&&(Te(s.lines[o])>=a||!s.lines[o].trim());o++){let l=/^\s*shell:\s*(\S+)/.exec(s.lines[o]);if(l&&Te(s.lines[o])===a)return Ls(l[1])}if(r){for(let o=e-1;o>=2;o--){let l=/^(\s*)shell:\s*(\S+)/.exec(s.lines[o]);if(!l||!/^\s*run\s*:\s*$/.test(s.lines[o-1])||!/^\s*defaults\s*:\s*$/.test(s.lines[o-2]))continue;let c=Te(s.lines[o-2]);if(!s.lines.slice(o+1,e).some(u=>u.trim()&&Te(u)<c))return Ls(l[2])}return"bash"}}function Ls(s){let e=s.replace(/['"]/g,"").split(/[\s{]/)[0];return e==="bash"?"bash":e==="sh"?"sh":null}function wa(s,e,t,n,r){let a=e+1,o=e;for(;a<s.lines.length&&(!s.lines[a].trim()||Te(s.lines[a])>t);)s.lines[a].trim()&&(Ds(s,a,0,s.lines[a].length),o=a),a++;return s.region(e+1,o,n,r),o}function ya(s,e,t,n,r,a){let o=n[0];(o==='"'||o==="'")&&n.endsWith(o)&&n.length>1?Ds(s,e,t+1,t+n.length-1):Ds(s,e,t,t+n.length),s.region(e,e,r,a)}function Ds(s,e,t,n){let r=s.lines[e],a=s.outs[e]??=new Me,o=/\$\{\{\s*(.*?)\s*\}\}/g;o.lastIndex=t;let l=t;for(let c;(c=o.exec(r))&&c.index<n;){a.copy(r,l,c.index);let u=c[1].replace(/\W+/g,"_").replace(/^_|_$/g,"").toUpperCase()||"EXPR",h=[`GitHub Actions \u306E\u5F0F\u3067\u3001\u30B9\u30AF\u30EA\u30D7\u30C8\u304C\u5B9F\u884C\u3055\u308C\u308B\u524D\u306B \`${c[1]}\` \u306E\u5024\u306B\u7F6E\u304D\u63DB\u308F\u308A\u307E\u3059`,`a GitHub Actions expression, replaced with the value of \`${c[1]}\` before the script runs`];a.insert(`\${${u}}`,c.index,c.index+c[0].length,h),s.substitutions.push({line:e,text:c[0],meaning:h,warning:Yl.test(c[1])?[`\u26A0 \u30B9\u30AF\u30EA\u30D7\u30C8\u30A4\u30F3\u30B8\u30A7\u30AF\u30B7\u30E7\u30F3\u306E\u5371\u967A: \`${c[1]}\` \u306F\u5916\u90E8\u306E\u4EBA\u304C\u81EA\u7531\u306B\u66F8\u3051\u308B\u5024\u3067\u3001\u305D\u306E\u307E\u307E\u30B9\u30AF\u30EA\u30D7\u30C8\u306B\u57CB\u3081\u8FBC\u307E\u308C\u307E\u3059\uFF08\`"; curl \u2026 | sh #\` \u306E\u3088\u3046\u306A\u5024\u3067\u4EFB\u610F\u306E\u30B3\u30DE\u30F3\u30C9\u304C\u5B9F\u884C\u3055\u308C\u308B\uFF09\u3002\`env:\` \u3067\u74B0\u5883\u5909\u6570\u306B\u6E21\u3057\u3001\`"$\u5909\u6570"\` \u3068\u3057\u3066\u4F7F\u3063\u3066\u304F\u3060\u3055\u3044\u3002`,`\u26A0 Script injection risk: \`${c[1]}\` can be set by anyone and is pasted into the script as it is (a value like \`"; curl \u2026 | sh #\` runs arbitrary commands). Pass it through \`env:\` and use it as \`"$VAR"\`.`]:void 0}),l=c.index+c[0].length}a.copy(r,l,n)}var Yl=/^github\.(head_ref|event\.(issue\.(title|body)|pull_request\.(title|body|head\.(ref|label|repo\.default_branch))|comment\.body|review\.body|review_comment\.body|discussion\.(title|body)|pages\.[^.]+\.page_name|commits\.[^.]+\.(message|author\.(email|name))|head_commit\.(message|author\.(email|name))|workflow_run\.(head_branch|display_title|head_commit\.(message|author\.(email|name)))))$/,Zl={GITHUB_ENV:["\u3053\u3053\u306B `\u540D\u524D=\u5024` \u3092\u66F8\u304F\u3068\u3001\u5F8C\u306E\u30B9\u30C6\u30C3\u30D7\u3067\u74B0\u5883\u5909\u6570\u3068\u3057\u3066\u4F7F\u3048\u307E\u3059","lines `NAME=value` written here become environment variables in later steps"],GITHUB_OUTPUT:["\u3053\u3053\u306B `\u540D\u524D=\u5024` \u3092\u66F8\u304F\u3068\u3001\u30B9\u30C6\u30C3\u30D7\u306E\u51FA\u529B\uFF08`steps.<id>.outputs.\u540D\u524D`\uFF09\u306B\u306A\u308A\u307E\u3059","lines `name=value` written here become step outputs (`steps.<id>.outputs.name`)"],GITHUB_PATH:["\u3053\u3053\u306B\u66F8\u3044\u305F\u30C7\u30A3\u30EC\u30AF\u30C8\u30EA\u304C\u3001\u5F8C\u306E\u30B9\u30C6\u30C3\u30D7\u306E PATH \u306B\u8FFD\u52A0\u3055\u308C\u307E\u3059","directories written here are added to PATH for later steps"],GITHUB_STEP_SUMMARY:["\u3053\u3053\u306B\u66F8\u3044\u305F Markdown \u304C\u3001\u30B8\u30E7\u30D6\u306E\u5B9F\u884C\u7D50\u679C\u306E\u30DA\u30FC\u30B8\u306B\u8868\u793A\u3055\u308C\u307E\u3059","Markdown written here is shown on the run's summary page"],GITHUB_STATE:["\u3053\u3053\u306B\u66F8\u3044\u305F\u5024\u3092\u3001\u540C\u3058\u30A2\u30AF\u30B7\u30E7\u30F3\u306E pre/post \u306E\u51E6\u7406\u3067\u8AAD\u3081\u307E\u3059","values written here can be read by the action's pre and post steps"]};function Kl(s,e){let t=[];for(let[n,[r,a]]of Object.entries(Zl))new RegExp(`\\$\\{?${n}\\b`).test(s)&&t.push(e==="ja"?`\`$${n}\` \u306F GitHub Actions \u304C\u7528\u610F\u3059\u308B\u30D5\u30A1\u30A4\u30EB\u306E\u30D1\u30B9\u3067\u3059\u3002${r}\u3002`:`\`$${n}\` is the path of a file GitHub Actions provides: ${a}.`);return t}function Xl(s){let e=!1;for(let t=0;t<s.lines.length;t++){let n=s.lines[t];if(/^\s*"scripts"\s*:\s*\{/.test(n)){e=!/\}/.test(n.slice(n.indexOf("{")));continue}if(!e)continue;if(/^\s*\}/.test(n)){e=!1;continue}let r=/^(\s*"(?:[^"\\]|\\.)*"\s*:\s*")((?:[^"\\]|\\.)*)"/.exec(n);if(!r)continue;let a=s.outs[t]??=new Me;for(let l=r[1].length;l<r[1].length+r[2].length;l++)if(n[l]==="\\"&&l+1<n.length){let c=n[l+1];a.insert(c==="n"?" ":c==="t"?" ":c,l,l+2),l++}else a.copy(n,l,l+1);let o=/"((?:[^"\\]|\\.)*)"/.exec(n)[1];s.region(t,t,[`npm \u30B9\u30AF\u30EA\u30D7\u30C8 \`${o}\``,`npm script \`${o}\``],"sh")}}function Ql(s){for(let e=0;e<s.lines.length;e++){let t=/^(\s*)(`{3,}|~{3,})\s*([\w-]+)?/.exec(s.lines[e]);if(!t)continue;let n=t[2],r=(t[3]??"").toLowerCase(),a=e+1,o=u=>u.trim().startsWith(n[0].repeat(n.length))&&!u.trim().slice(n.length).trim(),l=["sh","posix"].includes(r)?"sh":["bash","shell","shellscript","console","shellsession","terminal"].includes(r)?"bash":r==="zsh"?"zsh":r==="ksh"?"ksh":r==="dash"?"dash":null,c=["console","shellsession","terminal"].includes(r);for(;a<s.lines.length&&!o(s.lines[a]);){if(l!==null)if(c){let u=/^(\s*[$#%]\s)/.exec(s.lines[a]);u&&s.plain(a,u[1].length)}else s.plain(a);a++}l!==null&&a>e+1&&s.region(e+1,a-1,[`Markdown \u306E\u30B3\u30FC\u30C9\u30D6\u30ED\u30C3\u30AF\uFF08${r}\uFF09`,`Markdown code block (${r})`],l==="bash"?void 0:l),e=a}}var Ps={"subprocess.run":{shell:"kwarg",args:"first"},"subprocess.call":{shell:"kwarg",args:"first"},"subprocess.check_call":{shell:"kwarg",args:"first"},"subprocess.check_output":{shell:"kwarg",args:"first"},"subprocess.Popen":{shell:"kwarg",args:"first"},"subprocess.getoutput":{shell:"always",args:"first"},"subprocess.getstatusoutput":{shell:"always",args:"first"},"os.system":{shell:"always",args:"first"},"os.popen":{shell:"always",args:"first"},"asyncio.create_subprocess_shell":{shell:"always",args:"first"},"asyncio.create_subprocess_exec":{shell:"never",args:"all"}};function $n(s,e){let t=/^([rRbBuUfF]{0,2})('''|"""|'|")/.exec(s.slice(e,e+5));if(!t||e>0&&/\w/.test(s[e-1]))return;let n=t[2],r=e+t[0].length;for(let a=r;a<s.length;a++){if(s[a]==="\\"){a++;continue}if(n.length===1&&s[a]===`
106
+ `)return;if(s.startsWith(n,a))return{prefix:t[1].toLowerCase(),quote:n,start:e,contentStart:r,contentEnd:a,end:a+n.length}}}function Us(s,e){let t=0;for(let n=e;n<s.length;n++){let r=$n(s,n);if(r){n=r.end-1;continue}let a=s[n];if(a==="#"){for(;n<s.length&&s[n]!==`
107
+ `;)n++;continue}if("([{".includes(a))t++;else if(")]}".includes(a)&&--t===0)return n+1}return-1}function ka(s,e,t){let n=[],r=e+1;for(let a=e+1;a<t-1;a++){let o=$n(s,a);if(o){a=o.end-1;continue}if(s[a]==="#"){for(;a<t&&s[a]!==`
108
+ `;)a++;continue}if("([{".includes(s[a])){a=Us(s,a)-1;continue}s[a]===","&&(n.push([r,a]),r=a+1)}return s.slice(r,t-1).trim()&&n.push([r,t-1]),n.map(([a,o])=>{for(;a<o&&/\s/.test(s[a]);)a++;for(;o>a&&/\s/.test(s[o-1]);)o--;return[a,o]})}function ec(s){let e=s.lines.join(`
109
+ `),t=[];s.lines.reduce((o,l)=>(t.push(o),o+l.length+1),0);let n=o=>{let l=t.length-1;for(;t[l]>o;)l--;return{line:l,col:o-t[l]}},r=new Map;for(let o of e.matchAll(/^[ \t]*import[ \t]+([\w.]+(?:[ \t]+as[ \t]+\w+)?(?:[ \t]*,[ \t]*[\w.]+(?:[ \t]+as[ \t]+\w+)?)*)/gm))for(let l of o[1].split(",")){let[c,u]=l.trim().split(/\s+as\s+/);for(let h of Object.keys(Ps))h.startsWith(`${c}.`)&&r.set(`${u??c}.${h.slice(c.length+1)}`,h)}for(let o of e.matchAll(/^[ \t]*from[ \t]+([\w.]+)[ \t]+import[ \t]+(?:\(([^)]*)\)|([\w \t,]+))/gm))for(let l of(o[2]??o[3]).split(",")){let[c,u]=l.trim().split(/\s+as\s+/);Ps[`${o[1]}.${c}`]&&r.set(u??c,`${o[1]}.${c}`)}if(!r.size)return;let a=new RegExp(`(?<![\\w.])(${[...r.keys()].map(o=>o.replace(/\./g,"\\.")).join("|")})\\s*\\(`,"g");for(let o of e.matchAll(a)){let l=o.index,c=e.slice(t[n(l).line],l);if(c.includes("#")||(c.match(/["']/g)??[]).length%2)continue;let u=r.get(o[1]),h=Ps[u],d=l+o[0].length-1,p=Us(e,d);if(p<0)continue;let f=ka(e,d,p),m=P=>f.map(([H,U])=>new RegExp(`^${P}\\s*=\\s*([\\s\\S]*)$`).exec(e.slice(H,U))?.[1]).find(H=>H!==void 0),g=f.filter(([P,H])=>!/^\w+\s*=(?!=)/.test(e.slice(P,H))&&!e.slice(P,H).startsWith("**"));if(!g.length)continue;let _=m("shell"),b=h.shell==="always"||h.shell==="kwarg"&&_==="True",w=m("executable")?.replace(/^["']|["']$/g,"").split("/").pop(),y=w==="bash"?"bash":w==="zsh"?"zsh":"sh",N=P=>[`Python \u306E \`${o[1]}\`\uFF08${P[0]}\uFF09`,`Python \`${o[1]}\` (${P[1]})`],[R,v]=g[0],E=/^[[(]/.test(e[R])&&Us(e,R)===v;if(h.args==="all"||E){let P=h.args==="all"?g.filter(([G,ee])=>!e.slice(G,ee).startsWith("*")):ka(e,R,v);if(!P.length)continue;if(b&&h.shell==="kwarg"){let G=$a(s,e,P[0][0],P[0][1],n);if(!G)continue;s.region(G.first,G.last,N(["shell=True \u306E\u30EA\u30B9\u30C8\u306E\u6700\u521D\u306E\u8981\u7D20\u3092\u30B7\u30A7\u30EB\u304C\u5B9F\u884C","shell=True: the shell runs the first item of the list"]),y,[["shell=True \u306B\u30EA\u30B9\u30C8\u3092\u6E21\u3059\u3068\u3001\u6700\u521D\u306E\u8981\u7D20\u3060\u3051\u304C\u30B7\u30A7\u30EB\u306E\u30B3\u30DE\u30F3\u30C9\u306B\u306A\u308A\u3001\u6B8B\u308A\u306E\u8981\u7D20\u306F\u30B7\u30A7\u30EB\u3078\u306E\u5F15\u6570\uFF08$0, $1\u2026\uFF09\u306B\u306A\u308A\u307E\u3059\u3002","With shell=True and a list, only the first item is the shell command; the other items become arguments of the shell ($0, $1\u2026)."]]);continue}let H=P.map(([G,ee])=>tc(e,G,ee,n));if(H.some(G=>!G))continue;let U=H;qs(s,U),s.region(U[0].line,U[U.length-1].line,N(["\u30B7\u30A7\u30EB\u3092\u901A\u3055\u305A\u306B\u5B9F\u884C\u3059\u308B\u5F15\u6570\u306E\u30EA\u30B9\u30C8","arguments run without a shell"]),"bash",[["\u30EA\u30B9\u30C8\u3067\u6E21\u3057\u305F\u5F15\u6570\u306F\u30B7\u30A7\u30EB\u3092\u901A\u3055\u305A\u306B\u305D\u306E\u307E\u307E\u5B9F\u884C\u3055\u308C\u307E\u3059\u3002`$VAR` \u306E\u5C55\u958B\u30FB\u30D1\u30A4\u30D7\u30FB\u30EA\u30C0\u30A4\u30EC\u30AF\u30C8\u30FB`&&` \u306A\u3069\u306F\u50CD\u304D\u307E\u305B\u3093\uFF08\u5024\u3092\u5B89\u5168\u306B\u6E21\u305B\u308B\u66F8\u304D\u65B9\u3067\u3059\uFF09\u3002","A list of arguments is run directly, without a shell: `$VAR`, pipes, redirections and `&&` do not work (the safe way to pass values)."]]);continue}let $=$a(s,e,R,v,n);if(!$)continue;let T=[];!b&&/\s/.test($.text.trim())&&T.push(_===void 0||_==="False"?['\u26A0 shell=True \u306A\u3057\u3067\u6587\u5B57\u5217\u3092\u6E21\u3059\u3068\u3001\u6587\u5B57\u5217\u5168\u4F53\u304C1\u3064\u306E\u30D7\u30ED\u30B0\u30E9\u30E0\u540D\u3068\u3057\u3066\u6271\u308F\u308C\u307E\u3059\uFF08\u5F15\u6570\u3084\u30D1\u30A4\u30D7\u306F\u4F7F\u3048\u305A\u3001\u591A\u304F\u306E\u5834\u5408 FileNotFoundError\uFF09\u3002`["cmd", "arg"]` \u306E\u3088\u3046\u306A\u30EA\u30B9\u30C8\u3067\u6E21\u3059\u304B\u3001shell=True \u3092\u4ED8\u3051\u307E\u3059\u3002','\u26A0 Without shell=True the whole string is taken as one program name (no arguments or pipes; usually FileNotFoundError). Pass a list like `["cmd", "arg"]`, or add shell=True.',"pythonNoShell"]:["shell= \u306E\u5024\u304C\u5F0F\u306A\u306E\u3067\u3001\u3053\u306E\u6587\u5B57\u5217\u3092\u30B7\u30A7\u30EB\u304C\u5B9F\u884C\u3059\u308B\u304B\u306F\u5B9F\u884C\u6642\u306B\u6C7A\u307E\u308A\u307E\u3059\u3002","shell= is an expression, so whether a shell runs this string is decided at run time."]),b&&$.interpolated&&T.push(["\u26A0 \u30B7\u30A7\u30EB\u30A4\u30F3\u30B8\u30A7\u30AF\u30B7\u30E7\u30F3\u306E\u5371\u967A: Python \u306E\u5024\u3092\u57CB\u3081\u8FBC\u3093\u3060\u6587\u5B57\u5217\u3092\u30B7\u30A7\u30EB\u304C\u5B9F\u884C\u3057\u307E\u3059\u3002\u5024\u306B `;` \u3084 `$(\u2026)` \u304C\u542B\u307E\u308C\u308B\u3068\u4EFB\u610F\u306E\u30B3\u30DE\u30F3\u30C9\u304C\u5B9F\u884C\u3055\u308C\u307E\u3059\u3002`shlex.quote()` \u3067\u30AF\u30A9\u30FC\u30C8\u3059\u308B\u304B\u3001shell=True \u3092\u3084\u3081\u3066\u30EA\u30B9\u30C8\u3067\u6E21\u3057\u3066\u304F\u3060\u3055\u3044\u3002","\u26A0 Shell injection risk: the shell runs a string with Python values pasted in, so a value containing `;` or `$(\u2026)` runs arbitrary commands. Quote it with `shlex.quote()`, or drop shell=True and pass a list.","pythonInjection"]),$.partial&&T.push(["\u6587\u5B57\u5217\u306E\u5F8C\u308D\u306F Python \u306E\u30B3\u30FC\u30C9\u3067\u7D44\u307F\u7ACB\u3066\u3089\u308C\u308B\u305F\u3081\u3001\u89E3\u8AAC\u3057\u3066\u3044\u308B\u306E\u306F\u6587\u5B57\u5217\u30EA\u30C6\u30E9\u30EB\u306E\u90E8\u5206\u3060\u3051\u3067\u3059\u3002","The rest of the string is built by Python code; only the string literal is explained."]);let F=y==="sh"?"/bin/sh":y,q=b?[`\u30B7\u30A7\u30EB\uFF08${F}\uFF09\u304C\u5B9F\u884C\u3059\u308B\u6587\u5B57\u5217`,`a string the shell (${F}) runs`]:["\u30B7\u30A7\u30EB\u3092\u901A\u3055\u306A\u3044\u30B3\u30DE\u30F3\u30C9\u6587\u5B57\u5217","a command string run without a shell"];s.region($.first,$.last,N(q),b?y:"bash",T)}}function va(s){return`py_${s.replace(/\W+/g,"_").replace(/^_|_$/g,"").slice(0,24)||"expr"}`}function tc(s,e,t,n){let r=n(e);if(n(t-1).line!==r.line)return;let a=$n(s,e);if(a&&a.end===t&&!a.prefix.includes("f")&&a.quote.length===1){let{value:l,offs:c}=nc(s,a);return{line:r.line,start:r.col,end:n(t-1).col+1,value:l,cols:c.map(u=>n(u).col)}}let o=s.slice(e,t);return{line:r.line,start:r.col,end:n(t-1).col+1,value:"",cols:[],placeholder:[`"\${${va(o)}}"`,[`Python \u306E\u5F0F \`${o}\` \u306E\u5024\uFF08\u305D\u306E\u307E\u307E1\u3064\u306E\u5F15\u6570\u3068\u3057\u3066\u6E21\u308B\uFF09`,`the value of the Python expression \`${o}\`, passed as one argument`]]}}function nc(s,e){let t="",n=[],r=e.prefix.includes("r"),a={n:`
110
+ `,t:" ","\\":"\\","'":"'",'"':'"',r:"\r",0:"\0"};for(let o=e.contentStart;o<e.contentEnd;o++){if(s[o]==="\\"&&!r){let l=s[o+1];if(l in a){t+=a[l],n.push(o),o++;continue}let c=/^x([0-9a-fA-F]{2})|^u([0-9a-fA-F]{4})/.exec(s.slice(o+1,o+6));if(c){t+=String.fromCharCode(parseInt(c[1]??c[2],16)),n.push(o),o+=c[0].length;continue}}t+=s[o],n.push(o)}return{value:t,offs:n}}function $a(s,e,t,n,r){let a=t,o="",l=!1,c=-1,u=-1,h=-1,d=m=>s.outs[m]??=new Me,p=(m,g,_,b)=>{let w=r(g);h>=0&&r(h).line<w.line&&d(r(h).line).insert("\\",r(h).col,r(h).col),h=-1,c<0&&(c=w.line),u=Math.max(u,w.line),d(w.line).insert(m,w.col,r(_-1).col+1,b),o+=m};for(;;){for(;a<n&&/\s/.test(e[a]);)a++;let m=a<n?$n(e,a):void 0;if(!m||m.end>n)break;let g=m.prefix.includes("r"),_=m.prefix.includes("f");for(let b=m.contentStart;b<m.contentEnd;b++){let w=e[b];if(w===`
111
111
  `){o+=`
112
- `;continue}if(_&&(w==="{"||w==="}")&&e[b+1]===w){p(w,b,b+2),b++;continue}if(_&&w==="{"){let k=0,v=b;for(;v<m.contentEnd;v++)if(e[v]==="{")k++;else if(e[v]==="}"&&--k===0)break;let R=e.slice(b+1,v).replace(/[!:][^}]*$/,"").trim();p(`\${${xa(R)}}`,b,v+1,[`Python \u306E\u5F0F \`${R}\` \u306E\u5024\uFF08\u5B9F\u884C\u524D\u306B\u6587\u5B57\u5217\u306B\u57CB\u3081\u8FBC\u307E\u308C\u308B\uFF09`,`the value of the Python expression \`${R}\`, pasted into the string before it runs`]),l=!0,b=v;continue}if(w==="\\"&&!g){let k=e[b+1];if(k===`
113
- `){p("\\",b,b+1);continue}let v={n:";",t:" ","\\":"\\","'":"'",'"':'"'};if(k in v){p(v[k],b,b+2),b++;continue}}p(w,b,b+1)}h=m.end,a=m.end}if(c<0)return;let f=e.slice(a,n).trim();return/^\.format\s*\(|^%/.test(f)&&(l=!0),{first:c,last:u,text:o,interpolated:l,partial:f.length>0}}function ec(s,e,t,n="en"){let r=c=>({line:c.line,character:e.maps[c.line]?.[c.character]??c.character}),a=c=>({start:r(c.start),end:r(c.end)}),o=c=>c.span.start.line===c.span.end.line&&(e.inserted[c.span.start.line]??[]).some(([u,h])=>c.span.start.character>=u&&c.span.end.character<=h&&(c.span.start.character>u||c.span.end.character<h)),l=c=>{let u=a(c.span),h=c.label;if(u.start.line===u.end.line){let p=t[u.start.line]?.slice(u.start.character,u.end.character);p&&(h=p.length>60?p.slice(0,59)+"\u2026":p)}let d=c.span.start.line===c.span.end.line?(e.inserted[c.span.start.line]??[]).find(([p,f])=>p===c.span.start.character&&f===c.span.end.character):void 0;if(d?.[2]){let p=d[2][n==="ja"?0:1];return{...c,label:h,span:u,explanation:n==="en"?p[0].toUpperCase()+p.slice(1):p,children:[]}}return{...c,label:h,span:u,children:c.children.filter(p=>!o(p)).map(l)}};return{...s,items:s.items.map(l),examples:s.examples.map(c=>c.anchor?{...c,anchor:a(c.anchor)}:c)}}function tc(s,e,t){let n=new Set;return s.substitutions.filter(r=>r.line===e&&!n.has(r.text)&&n.add(r.text)).flatMap(r=>[...r.warning?[t==="ja"?r.warning[0]:r.warning[1]]:[],t==="ja"?`\`${r.text}\` \u306F${/^[A-Za-z]/.test(r.meaning[0])?" ":""}${r.meaning[0]}\u3002`:`\`${r.text}\` is ${r.meaning[1]}.`])}var wa=['\u26A0 \u30D1\u30A4\u30D7\u306E\u9014\u4E2D\u306E\u30B3\u30DE\u30F3\u30C9\u304C\u5931\u6557\u3057\u3066\u3082\u3001RUN \u306F\u6700\u5F8C\u306E\u30B3\u30DE\u30F3\u30C9\u306E\u7D50\u679C\u3060\u3051\u3067\u6210\u529F\u6271\u3044\u306B\u306A\u308A\u3001\u30D3\u30EB\u30C9\u306F\u6B62\u307E\u308A\u307E\u305B\u3093\u3002\u5148\u306B `SHELL ["/bin/bash", "-o", "pipefail", "-c"]` \u3068\u66F8\u304F\u3068\u5931\u6557\u3092\u691C\u51FA\u3067\u304D\u307E\u3059\u3002','\u26A0 If a command in the middle of the pipe fails, RUN still succeeds with the status of the last command, and the build goes on. Put `SHELL ["/bin/bash", "-o", "pipefail", "-c"]` first to catch such failures.'];function Is(s,e){return s.startPosition.row>e||s.endPosition.row<e?!1:s.type==="pipeline"&&s.children.some(t=>t.type==="|"&&t.startPosition.row===e)?!0:s.children.some(t=>Is(t,e))}function ya(s,e,t,n,r,a,o,l={}){let c=t.regions.find(p=>p.start<=r&&r<=p.end);if(!c)return;let u=s.explainLine(e,r,o??c.shell,{...l,host:c.label[1]});u.context.unshift({label:a==="ja"?c.label[0]:c.label[1],line:c.start});let h=p=>a==="ja"?p[0]:p[1],d=[...(c.notes??[]).map(h),...tc(t,r,a)];return c.label[1].startsWith("GitHub Actions")&&d.push(...Gl(n[r]??"",a)),c.warnPipefail&&Is(e.rootNode,r)&&!/pipefail/.test(t.text.split(`
112
+ `;continue}if(_&&(w==="{"||w==="}")&&e[b+1]===w){p(w,b,b+2),b++;continue}if(_&&w==="{"){let y=0,N=b;for(;N<m.contentEnd;N++)if(e[N]==="{")y++;else if(e[N]==="}"&&--y===0)break;let R=e.slice(b+1,N).replace(/[!:][^}]*$/,"").trim();p(`\${${va(R)}}`,b,N+1,[`Python \u306E\u5F0F \`${R}\` \u306E\u5024\uFF08\u5B9F\u884C\u524D\u306B\u6587\u5B57\u5217\u306B\u57CB\u3081\u8FBC\u307E\u308C\u308B\uFF09`,`the value of the Python expression \`${R}\`, pasted into the string before it runs`]),l=!0,b=N;continue}if(w==="\\"&&!g){let y=e[b+1];if(y===`
113
+ `){p("\\",b,b+1);continue}let N={n:";",t:" ","\\":"\\","'":"'",'"':'"'};if(y in N){p(N[y],b,b+2),b++;continue}}p(w,b,b+1)}h=m.end,a=m.end}if(c<0)return;let f=e.slice(a,n).trim();return/^\.format\s*\(|^%/.test(f)&&(l=!0),{first:c,last:u,text:o,interpolated:l,partial:f.length>0}}function sc(s,e,t,n="en"){let r=c=>({line:c.line,character:e.maps[c.line]?.[c.character]??c.character}),a=c=>({start:r(c.start),end:r(c.end)}),o=c=>c.span.start.line===c.span.end.line&&(e.inserted[c.span.start.line]??[]).some(([u,h])=>c.span.start.character>=u&&c.span.end.character<=h&&(c.span.start.character>u||c.span.end.character<h)),l=c=>{let u=a(c.span),h=c.label;if(u.start.line===u.end.line){let p=t[u.start.line]?.slice(u.start.character,u.end.character);p&&(h=p.length>60?p.slice(0,59)+"\u2026":p)}let d=c.span.start.line===c.span.end.line?(e.inserted[c.span.start.line]??[]).find(([p,f])=>p===c.span.start.character&&f===c.span.end.character):void 0;if(d?.[2]){let p=d[2][n==="ja"?0:1];return{...c,label:h,span:u,explanation:n==="en"?p[0].toUpperCase()+p.slice(1):p,children:[]}}return{...c,label:h,span:u,children:c.children.filter(p=>!o(p)).map(l)}};return{...s,items:s.items.map(l),examples:s.examples.map(c=>c.anchor?{...c,anchor:a(c.anchor)}:c)}}function rc(s,e,t){let n=new Set;return s.substitutions.filter(r=>r.line===e&&!n.has(r.text)&&n.add(r.text)).flatMap(r=>[...r.warning?[t==="ja"?r.warning[0]:r.warning[1]]:[],t==="ja"?`\`${r.text}\` \u306F${/^[A-Za-z]/.test(r.meaning[0])?" ":""}${r.meaning[0]}\u3002`:`\`${r.text}\` is ${r.meaning[1]}.`])}var Ea=['\u26A0 \u30D1\u30A4\u30D7\u306E\u9014\u4E2D\u306E\u30B3\u30DE\u30F3\u30C9\u304C\u5931\u6557\u3057\u3066\u3082\u3001RUN \u306F\u6700\u5F8C\u306E\u30B3\u30DE\u30F3\u30C9\u306E\u7D50\u679C\u3060\u3051\u3067\u6210\u529F\u6271\u3044\u306B\u306A\u308A\u3001\u30D3\u30EB\u30C9\u306F\u6B62\u307E\u308A\u307E\u305B\u3093\u3002\u5148\u306B `SHELL ["/bin/bash", "-o", "pipefail", "-c"]` \u3068\u66F8\u304F\u3068\u5931\u6557\u3092\u691C\u51FA\u3067\u304D\u307E\u3059\u3002','\u26A0 If a command in the middle of the pipe fails, RUN still succeeds with the status of the last command, and the build goes on. Put `SHELL ["/bin/bash", "-o", "pipefail", "-c"]` first to catch such failures.'];function zs(s,e){return s.startPosition.row>e||s.endPosition.row<e?!1:s.type==="pipeline"&&s.children.some(t=>t.type==="|"&&t.startPosition.row===e)?!0:s.children.some(t=>zs(t,e))}function Sa(s,e,t,n,r,a,o,l={}){let c=t.regions.find(p=>p.start<=r&&r<=p.end);if(!c)return;let u=s.explainLine(e,r,o??c.shell,{...l,host:c.label[1]});u.context.unshift({label:a==="ja"?c.label[0]:c.label[1],line:c.start});let h=p=>a==="ja"?p[0]:p[1],d=[...(c.notes??[]).map(h),...rc(t,r,a)];return c.label[1].startsWith("GitHub Actions")&&d.push(...Kl(n[r]??"",a)),c.warnPipefail&&zs(e.rootNode,r)&&!/pipefail/.test(t.text.split(`
114
114
  `).slice(c.start,c.end+1).join(`
115
- `))&&d.push(h(wa)),u.notes.unshift(...d),ec(u,t,n,a)}function ka(s,e,t,n,r){let a=[],o=(u,h)=>e.maps[u]?.[h]??h,l=u=>{let h=u.startPosition.row===u.endPosition.row;return{startLine:u.startPosition.row,startCol:o(u.startPosition.row,u.startPosition.column),endLine:u.startPosition.row,endCol:h?o(u.endPosition.row,u.endPosition.column):(t[u.startPosition.row]??"").length}},c=u=>n==="ja"?u[0]:u[1];for(let u of e.regions){for(let h of Rt(s.rootNode,r??u.shell??"bash",n,u.start,u.end))a.push({code:h.id,severity:h.kind==="unsupported"?"warning":"info",message:h.message,...l(h.node)});if(u.warnPipefail&&!/pipefail/.test(e.text.split(`
115
+ `))&&d.push(h(Ea)),u.notes.unshift(...d),sc(u,t,n,a)}function Na(s,e,t,n,r){let a=[],o=(u,h)=>e.maps[u]?.[h]??h,l=u=>{let h=u.startPosition.row===u.endPosition.row;return{startLine:u.startPosition.row,startCol:o(u.startPosition.row,u.startPosition.column),endLine:u.startPosition.row,endCol:h?o(u.endPosition.row,u.endPosition.column):(t[u.startPosition.row]??"").length}},c=u=>n==="ja"?u[0]:u[1];for(let u of e.regions){for(let h of At(s.rootNode,r??u.shell??"bash",n,u.start,u.end))a.push({code:h.id,severity:h.kind==="unsupported"?"warning":"info",message:h.message,...l(h.node)});if(u.warnPipefail&&!/pipefail/.test(e.text.split(`
116
116
  `).slice(u.start,u.end+1).join(`
117
- `)))for(let h=u.start;h<=u.end;h++){if(!Is(s.rootNode,h))continue;let d=t[h].search(/(?<!\|)\|(?!\|)/);a.push({code:"dockerPipefail",severity:"warning",message:c(wa),startLine:h,startCol:Math.max(0,d),endLine:h,endCol:Math.max(0,d)+1})}for(let h of u.notes??[]){if(!h[2])continue;let d=e.maps[u.start];a.push({code:h[2],severity:"warning",message:c(h),startLine:u.start,startCol:d[0]??0,endLine:u.start,endCol:d[d.length-1]??0})}}for(let u of e.substitutions){if(!u.warning)continue;let h=Math.max(0,(t[u.line]??"").indexOf(u.text));a.push({code:"injection",severity:"warning",message:c(u.warning),startLine:u.line,startCol:h,endLine:u.line,endCol:h+u.text.length})}return a}function $a(s,e,t,n,r,a){return e.extracted?ya(s,e.tree,e.extracted,e.lines,t,n,r.forced,a)??{line:t,summary:"",items:[],context:[],notes:[],examples:[]}:s.explainLine(e.tree,t,r.forced??r.detected,a)}function va(s,e,t,n=[]){let r=new Set(n),a=_i(s.lines);return nc(s,e,t).filter(o=>!r.has(o.code)&&!bi(a,o.startLine,o.code))}function nc(s,e,t){if(s.extracted)return s.extracted.regions.length?ka(s.tree,s.extracted,s.lines,e,t.forced):[];let n=t.forced??t.detected;return!n||n==="bash"?[]:Rt(s.tree.rootNode,n,e).map(r=>{let a=r.node,o=a.startPosition.row===a.endPosition.row;return{code:r.id,severity:r.kind==="unsupported"?"warning":"info",message:r.message,fix:oa(r),startLine:a.startPosition.row,startCol:a.startPosition.column,endLine:a.startPosition.row,endCol:o?a.endPosition.column:(s.lines[a.startPosition.row]??"").length}})}var yn=Ea(),Sa;async function Na(s){Sa??="runtime"in s?yn.init({wasmBinary:s.runtime}):yn.init({locateFile:n=>`${s.runtimeDir.replace(/[\\/]$/,"")}/${n}`}),await Sa;let e=await yn.Language.load("bash"in s?s.bash:s.bashWasm),t=new yn;return t.setLanguage(e),t}function sc(s,e){let t=[];for(let n of s){e===void 0?t.push("","---","",`#### ${n.title}`):t.push(`${e}##### ${n.title}`);for(let r of n.sections){let a=r.lines.length?r.lines:[r.empty??""],o=Math.max(2,...a.map(c=>Math.max(0,...(c.match(/`+/g)??[]).map(u=>u.length)))),l="`".repeat(o+1);e===void 0?t.push("",`**${r.label}**`,"",`${l}text`,...a,l):t.push(`${e}**${r.label}**`,`${e}${l}text`,...a.map(c=>e+c),`${e}${l}`)}}return t}function Ta(s,e,t){let n=[`**${t}**`,"","```bash",e.trim(),"```",""];for(let o of s.notes)n.push(`> ${o}`,"");let r=o=>o.includes("`")?`\`\` ${o} \`\``:`\`${o}\``,a=(o,l)=>{n.push(`${" ".repeat(l)}- ${r(o.label.replace(/\s*\n\s*/g," \u23CE "))} \u2014 ${o.explanation}`);for(let c of o.children)a(c,l+1)};for(let o of s.items)a(o,0);return n.push(...sc(s.examples)),n.join(`
117
+ `)))for(let h=u.start;h<=u.end;h++){if(!zs(s.rootNode,h))continue;let d=t[h].search(/(?<!\|)\|(?!\|)/);a.push({code:"dockerPipefail",severity:"warning",message:c(Ea),startLine:h,startCol:Math.max(0,d),endLine:h,endCol:Math.max(0,d)+1})}for(let h of u.notes??[]){if(!h[2])continue;let d=e.maps[u.start];a.push({code:h[2],severity:"warning",message:c(h),startLine:u.start,startCol:d[0]??0,endLine:u.start,endCol:d[d.length-1]??0})}}for(let u of e.substitutions){if(!u.warning)continue;let h=Math.max(0,(t[u.line]??"").indexOf(u.text));a.push({code:"injection",severity:"warning",message:c(u.warning),startLine:u.line,startCol:h,endLine:u.line,endCol:h+u.text.length})}return a}function vn(s,e,t,n,r,a){return e.extracted?Sa(s,e.tree,e.extracted,e.lines,t,n,r.forced,a)??{line:t,summary:"",items:[],context:[],notes:[],examples:[]}:s.explainLine(e.tree,t,r.forced??r.detected,a)}function En(s,e,t,n=[]){let r=new Set(n),a=Ei(s.lines);return ic(s,e,t).filter(o=>!r.has(o.code)&&!Si(a,o.startLine,o.code))}function ic(s,e,t){if(s.extracted)return s.extracted.regions.length?Na(s.tree,s.extracted,s.lines,e,t.forced):[];let n=t.forced??t.detected;return!n||n==="bash"?[]:At(s.tree.rootNode,n,e).map(r=>{let a=r.node,o=a.startPosition.row===a.endPosition.row;return{code:r.id,severity:r.kind==="unsupported"?"warning":"info",message:r.message,fix:fa(r),startLine:a.startPosition.row,startCol:a.startPosition.column,endLine:a.startPosition.row,endCol:o?a.endPosition.column:(s.lines[a.startPosition.row]??"").length}})}var Sn=Ta(),Ma;async function Nn(s){Ma??="runtime"in s?Sn.init({wasmBinary:s.runtime}):Sn.init({locateFile:n=>`${s.runtimeDir.replace(/[\\/]$/,"")}/${n}`}),await Ma;let e=await Sn.Language.load("bash"in s?s.bash:s.bashWasm),t=new Sn;return t.setLanguage(e),t}function ac(s,e){let t=[];for(let n of s){e===void 0?t.push("","---","",`#### ${n.title}`):t.push(`${e}##### ${n.title}`);for(let r of n.sections){let a=r.lines.length?r.lines:[r.empty??""],o=Math.max(2,...a.map(c=>Math.max(0,...(c.match(/`+/g)??[]).map(u=>u.length)))),l="`".repeat(o+1);e===void 0?t.push("",`**${r.label}**`,"",`${l}text`,...a,l):t.push(`${e}**${r.label}**`,`${e}${l}text`,...a.map(c=>e+c),`${e}${l}`)}}return t}function Tn(s,e,t){let n=[`**${t}**`,"","```bash",e.trim(),"```",""];for(let o of s.notes)n.push(`> ${o}`,"");let r=o=>o.includes("`")?`\`\` ${o} \`\``:`\`${o}\``,a=(o,l)=>{n.push(`${" ".repeat(l)}- ${r(o.label.replace(/\s*\n\s*/g," \u23CE "))} \u2014 ${o.explanation}`);for(let c of o.children)a(c,l+1)};for(let o of s.items)a(o,0);return n.push(...ac(s.examples)),n.join(`
118
118
  `).trim()+`
119
- `}var Os=["shell","dockerfile","makefile","yaml","npm","markdown","python"],rc=`Usage: bash-explainer [options] <file>[:<line>[-<line>]]...
119
+ `}var Aa=Mn(require("path"));var oc=new Set(["shellscript","sh","bash","zsh","ksh","dash","shell"]),Ra=s=>decodeURIComponent(s.replace(/^[a-z][\w+.-]*:\/\/[^/]*/i,""));function Ca(s){let t={language:(s.env.LC_ALL||s.env.LC_MESSAGES||s.env.LANG||"").toLowerCase().startsWith("ja")?"ja":"en",examples:!0},n=new Map,r=new Map,a,o=Nn({runtimeDir:__dirname,bashWasm:Aa.join(__dirname,"tree-sitter-bash.wasm")}).then(v=>a=v),l=!1,c=v=>{let E=JSON.stringify({jsonrpc:"2.0",...v});s.output.write(`Content-Length: ${Buffer.byteLength(E,"utf8")}\r
120
+ \r
121
+ ${E}`)};function u(v){return oc.has(v.languageId)?"shell":yn(v.languageId==="make"?"makefile":v.languageId,Ra(v.uri))}function h(v){if(v.parsed||!a)return v.parsed;let E=u(v);if(!E)return;let $=v.text.split(/\r?\n/);if(E==="shell")v.parsed={lines:$,tree:a.parse(v.text)};else{let T=kn(E,v.text);v.parsed={lines:$,extracted:T,tree:a.parse(T.text)}}return v.parsed}function d(v){v?.parsed?.tree.delete(),v&&(v.parsed=void 0)}let p=(v,E)=>({forced:t.shell,detected:gn(v.lines.slice(0,50).join(`
122
+ `),Ra(E))}),f=v=>v.replace(/^[⚠ℹ]️?\s*/u,"");function m(v){let E=h(v);return E?En(E,t.language,p(E,v.uri)):[]}function g(v){let E=n.get(v);c({method:"textDocument/publishDiagnostics",params:{uri:v,version:E?.version,diagnostics:(E?m(E):[]).map($=>({range:{start:{line:$.startLine,character:$.startCol},end:{line:$.endLine,character:$.endCol}},severity:$.severity==="warning"?2:3,code:$.code,source:"Bash Explainer",message:f($.message)}))}})}function _(v){clearTimeout(r.get(v)),r.set(v,setTimeout(()=>{o.then(()=>g(v))},200))}function b(v,E){let $=h(v);if(!$||E>=$.lines.length)return null;let T=new ht(t.language),F=vn(T,$,E,t.language,p($,v.uri),{examples:{enabled:t.examples,disabled:[]}});if(!F.items.length&&!F.notes.length)return null;let q=`Bash Explainer \xB7 ${t.language==="ja"?`${E+1} \u884C\u76EE`:`line ${E+1}`}`;return{contents:{kind:"markdown",value:Tn(F,$.lines[E],q)},range:{start:{line:E,character:0},end:{line:E,character:$.lines[E].length}}}}function w(v,E){return m(v).filter($=>$.fix&&$.startLine<=E.end.line&&$.endLine>=E.start.line).map($=>({title:$.fix.title[t.language==="ja"?0:1],kind:"quickfix",diagnostics:[{range:{start:{line:$.startLine,character:$.startCol},end:{line:$.endLine,character:$.endCol}},code:$.code,source:"Bash Explainer",message:f($.message)}],edit:{changes:{[v.uri]:$.fix.edits.map(T=>({range:{start:{line:T.startLine,character:T.startCol},end:{line:T.endLine,character:T.endCol}},newText:T.text}))}}}))}function y(v){let E=v?.bashExplainer??v??{};(E.language==="en"||E.language==="ja")&&(t.language=E.language),typeof E.shell=="string"&&(t.shell=E.shell in xe?E.shell:void 0),typeof E.examples=="boolean"&&(t.examples=E.examples)}async function N(v){let E=$=>v.id!==void 0&&c({id:v.id,result:$});switch(v.method){case"initialize":return y(v.params?.initializationOptions),void E({capabilities:{textDocumentSync:{openClose:!0,change:1},hoverProvider:!0,codeActionProvider:{codeActionKinds:["quickfix"]}},serverInfo:{name:"bash-explainer",version:s.version}});case"initialized":return;case"shutdown":return l=!0,void E(null);case"exit":return s.exit(l?0:1);case"workspace/didChangeConfiguration":y(v.params?.settings);for(let $ of n.values())_($.uri);return;case"textDocument/didOpen":{let $=v.params.textDocument;return n.set($.uri,{uri:$.uri,languageId:$.languageId,version:$.version,text:$.text}),_($.uri)}case"textDocument/didChange":{let $=n.get(v.params.textDocument.uri),T=v.params.contentChanges;return!$||!T.length?void 0:(d($),$.text=T[T.length-1].text,$.version=v.params.textDocument.version,_($.uri))}case"textDocument/didClose":{let $=v.params.textDocument.uri;return d(n.get($)),n.delete($),clearTimeout(r.get($)),c({method:"textDocument/publishDiagnostics",params:{uri:$,diagnostics:[]}})}case"textDocument/hover":{await o;let $=n.get(v.params.textDocument.uri);return void E($?b($,v.params.position.line):null)}case"textDocument/codeAction":{await o;let $=n.get(v.params.textDocument.uri);return void E($?w($,v.params.range):[])}default:v.id!==void 0&&v.method&&c({id:v.id,error:{code:-32601,message:`Unhandled method ${v.method}`}})}}let R=Buffer.alloc(0);s.input.on("data",v=>{for(R=Buffer.concat([R,v]);;){let E=R.indexOf(`\r
123
+ \r
124
+ `);if(E<0)return;let $=Number(/content-length:\s*(\d+)/i.exec(R.subarray(0,E).toString("ascii"))?.[1]);if(!Number.isFinite($)||R.length<E+4+$)return;let T=R.subarray(E+4,E+4+$).toString("utf8");R=R.subarray(E+4+$);let F;try{F=JSON.parse(T)}catch{continue}N(F).catch(q=>F.id!==void 0&&c({id:F.id,error:{code:-32603,message:q instanceof Error?q.message:String(q)}}))}}),s.input.on("end",()=>s.exit(l?0:1))}var Ws=["shell","dockerfile","makefile","yaml","npm","markdown","python"],lc=`Usage: bash-explainer [options] <file>[:<line>[-<line>]]...
120
125
  bash-explainer [options] -e '<command line>'
121
126
  cat script.sh | bash-explainer [options] -
127
+ bash-explainer --lsp
122
128
 
123
129
  Explains shell scripts line by line: every command, option, redirection and
124
130
  expansion, with worked examples. Also reads the shell code in Dockerfiles,
@@ -129,28 +135,33 @@ Options:
129
135
  -l, --line <n>[-<m>] only these lines (also <file>:<n>[-<m>])
130
136
  --check report constructs the script's shell lacks, and other
131
137
  risks; exit 1 if there is a warning
132
- --shell <name> the script's shell: ${Object.keys(Ne).join(", ")}
138
+ --shell <name> the script's shell: ${Object.keys(xe).join(", ")}
133
139
  (default: from the shebang or the file name)
134
- --kind <kind> what the file is: ${Os.join(", ")}
140
+ --kind <kind> what the file is: ${Ws.join(", ")}
135
141
  (default: from the file name)
136
142
  --lang <en|ja> language (default: from LANG)
137
- --format <format> text, markdown or json (default: text)
143
+ --format <format> text, markdown or json (default: text); with --check also
144
+ sarif (for code scanning) or github (annotations in
145
+ GitHub Actions)
138
146
  --no-examples leave out worked examples
139
147
  --color, --no-color colour the text output (default: when a terminal)
148
+ --lsp run as a Language Server on standard input and output
149
+ (hover, diagnostics, quick fixes) for editors
140
150
  -h, --help show this help
141
151
  -v, --version show the version
142
152
 
143
153
  Exit status: 0 when done (with --check: no warning), 1 with --check when there
144
154
  is a warning, 2 on a usage or input error.
145
- `,_e=class extends Error{};function Ma(s){let e=/^(\d+)(?:-(\d+))?$/.exec(s);if(!e||+e[1]<1)throw new _e(`not a line or line range: ${s}`);let t=+e[1],n=e[2]?+e[2]:t;if(n<t)throw new _e(`not a line range: ${s}`);return[t,n]}function ic(s){return(s.LC_ALL||s.LC_MESSAGES||s.LANG||"").toLowerCase().startsWith("ja")?"ja":"en"}function Aa(s,e,t){let n={inputs:[],check:!1,lang:ic(e),format:"text",examples:!0,color:t&&!e.NO_COLOR};for(let r=0;r<s.length;r++){let a=s[r],[o,l]=a.startsWith("--")&&a.includes("=")?[a.slice(0,a.indexOf("=")),a.slice(a.indexOf("=")+1)]:[a,void 0],c=()=>{if(l!==void 0)return l;if(r+1>=s.length)throw new _e(`${o} needs a value`);return s[++r]};switch(o){case"-h":case"--help":return"help";case"-v":case"--version":return"version";case"-e":case"--command":n.command=c();break;case"-l":case"--line":n.lines=Ma(c());break;case"--check":n.check=!0;break;case"--no-examples":n.examples=!1;break;case"--color":n.color=!0;break;case"--no-color":n.color=!1;break;case"--shell":{let u=c();if(!(u in Ne))throw new _e(`unknown shell: ${u} (${Object.keys(Ne).join(", ")})`);n.shell=u;break}case"--kind":{let u=c();if(!Os.includes(u))throw new _e(`unknown kind: ${u} (${Os.join(", ")})`);n.kind=u;break}case"--lang":{let u=c();if(u!=="en"&&u!=="ja")throw new _e(`unknown language: ${u} (en, ja)`);n.lang=u;break}case"--format":{let u=c();if(u!=="text"&&u!=="markdown"&&u!=="json")throw new _e(`unknown format: ${u} (text, markdown, json)`);n.format=u;break}default:{if(a.startsWith("-")&&a!=="-")throw new _e(`unknown option: ${a}`);let u=/^(.+):(\d+(?:-\d+)?)$/.exec(a);u&&!It.existsSync(a)?n.inputs.push({spec:u[1],lines:Ma(u[2])}):n.inputs.push({spec:a})}}}if(!n.inputs.length&&n.command===void 0)throw new _e("nothing to explain: give a file, - for standard input, or -e <command line>");return n}function ac(s){let e=[];s.command!==void 0&&e.push({name:"(command)",text:s.command,kind:s.kind??"shell",lines:s.lines});for(let t of s.inputs){let n;try{n=t.spec==="-"?It.readFileSync(0,"utf8"):It.readFileSync(t.spec,"utf8")}catch(a){throw new _e(`cannot read ${t.spec}: ${a.code??a}`)}let r=s.kind??(t.spec==="-"?"shell":_a("",t.spec)??"shell");e.push({name:t.spec,text:n.replace(/\r\n/g,`
146
- `),kind:r,lines:t.lines??s.lines})}return e}var oc={command:"34",builtin:"34",function:"34",option:"33",redirect:"33",pattern:"33",argument:"32",string:"32",number:"32",operator:"35",keyword:"35",block:"35",test:"35",variable:"31",expansion:"31",substitution:"31",assignment:"31",comment:"90",error:"91"};function lc(s,e,t,n,r){let a=(c,u)=>r&&c?`\x1B[${c}m${u}\x1B[0m`:u,o=[`${a("1",`${s}:${e+1}`)} ${t.trim()}`];for(let c of n.context)o.push(` ${a("90",`\u203A ${c.label} (${c.line+1})`)}`);for(let c of n.notes)o.push(` ${c}`);let l=(c,u)=>{o.push(`${" ".repeat(u+1)}${a(oc[c.kind],c.label.replace(/\s*\n\s*/g," \u23CE "))} ${c.explanation.replace(/`/g,"")}`);for(let h of c.children)l(h,u+1)};for(let c of n.items)l(c,0);for(let c of n.examples)o.push(...cc(c,a));return o.join(`
147
- `)}function cc(s,e){let t=[` ${e("1",s.title)}`];for(let n of s.sections){t.push(` ${e("90",n.label)}`);for(let r of n.lines.length?n.lines:[n.empty??""])t.push(` ${r}`)}return t}function uc(s,e,t){let n=e.severity==="warning"?t?"\x1B[33mwarning\x1B[0m":"warning":t?"\x1B[34minfo\x1B[0m":"info";return`${s}:${e.startLine+1}:${e.startCol+1}: ${n}: ${Fa(e.message)} [${e.code}]`}var Fa=s=>s.replace(/^[⚠ℹ]️?\s*/u,"").replace(/`/g,""),hc=s=>({...s,examples:s.examples.map(({interactive:e,...t})=>t)});async function Ca(s,e){let t,n;try{if(t=Aa(s,e.env,e.isTTY),t==="help")return e.stdout(rc),0;if(t==="version")return e.stdout(`0.1.1
148
- `),0;n=ac(t)}catch(u){if(!(u instanceof _e))throw u;return e.stderr(`bash-explainer: ${u.message}
155
+ `,ge=class extends Error{};function Ia(s){let e=/^(\d+)(?:-(\d+))?$/.exec(s);if(!e||+e[1]<1)throw new ge(`not a line or line range: ${s}`);let t=+e[1],n=e[2]?+e[2]:t;if(n<t)throw new ge(`not a line range: ${s}`);return[t,n]}function cc(s){return(s.LC_ALL||s.LC_MESSAGES||s.LANG||"").toLowerCase().startsWith("ja")?"ja":"en"}function Oa(s,e,t){let n={inputs:[],check:!1,lang:cc(e),format:"text",examples:!0,color:t&&!e.NO_COLOR};for(let r=0;r<s.length;r++){let a=s[r];if(a==="--"){n.inputs.push(...s.slice(r+1).map(u=>({spec:u})));break}let[o,l]=a.startsWith("--")&&a.includes("=")?[a.slice(0,a.indexOf("=")),a.slice(a.indexOf("=")+1)]:[a,void 0],c=()=>{if(l!==void 0)return l;if(r+1>=s.length)throw new ge(`${o} needs a value`);return s[++r]};switch(o){case"-h":case"--help":return"help";case"-v":case"--version":return"version";case"-e":case"--command":n.command=c();break;case"-l":case"--line":n.lines=Ia(c());break;case"--check":n.check=!0;break;case"--no-examples":n.examples=!1;break;case"--color":n.color=!0;break;case"--no-color":n.color=!1;break;case"--shell":{let u=c();if(!(u in xe))throw new ge(`unknown shell: ${u} (${Object.keys(xe).join(", ")})`);n.shell=u;break}case"--kind":{let u=c();if(!Ws.includes(u))throw new ge(`unknown kind: ${u} (${Ws.join(", ")})`);n.kind=u;break}case"--lang":{let u=c();if(u!=="en"&&u!=="ja")throw new ge(`unknown language: ${u} (en, ja)`);n.lang=u;break}case"--format":{let u=c();if(!["text","markdown","json","sarif","github"].includes(u))throw new ge(`unknown format: ${u} (text, markdown, json, sarif, github)`);n.format=u;break}default:{if(a.startsWith("-")&&a!=="-")throw new ge(`unknown option: ${a}`);let u=/^(.+):(\d+(?:-\d+)?)$/.exec(a);u&&!Ot.existsSync(a)?n.inputs.push({spec:u[1],lines:Ia(u[2])}):n.inputs.push({spec:a})}}}if((n.format==="sarif"||n.format==="github")&&!n.check)throw new ge(`--format ${n.format} goes with --check`);if(!n.inputs.length&&n.command===void 0)throw new ge("nothing to explain: give a file, - for standard input, or -e <command line>");return n}function uc(s){let e=[];s.command!==void 0&&e.push({name:"(command)",text:s.command,kind:s.kind??"shell",lines:s.lines});for(let t of s.inputs){let n;try{n=t.spec==="-"?Ot.readFileSync(0,"utf8"):Ot.readFileSync(t.spec,"utf8")}catch(a){throw new ge(`cannot read ${t.spec}: ${a.code??a}`)}let r=s.kind??(t.spec==="-"?"shell":yn("",t.spec)??"shell");e.push({name:t.spec,text:n.replace(/\r\n/g,`
156
+ `),kind:r,lines:t.lines??s.lines})}return e}var hc={command:"34",builtin:"34",function:"34",option:"33",redirect:"33",pattern:"33",argument:"32",string:"32",number:"32",operator:"35",keyword:"35",block:"35",test:"35",variable:"31",expansion:"31",substitution:"31",assignment:"31",comment:"90",error:"91"};function dc(s,e,t,n,r){let a=(c,u)=>r&&c?`\x1B[${c}m${u}\x1B[0m`:u,o=[`${a("1",`${s}:${e+1}`)} ${t.trim()}`];for(let c of n.context)o.push(` ${a("90",`\u203A ${c.label} (${c.line+1})`)}`);for(let c of n.notes)o.push(` ${c}`);let l=(c,u)=>{o.push(`${" ".repeat(u+1)}${a(hc[c.kind],c.label.replace(/\s*\n\s*/g," \u23CE "))} ${c.explanation.replace(/`/g,"")}`);for(let h of c.children)l(h,u+1)};for(let c of n.items)l(c,0);for(let c of n.examples)o.push(...pc(c,a));return o.join(`
157
+ `)}function pc(s,e){let t=[` ${e("1",s.title)}`];for(let n of s.sections){t.push(` ${e("90",n.label)}`);for(let r of n.lines.length?n.lines:[n.empty??""])t.push(` ${r}`)}return t}function fc(s,e,t){let n=e.severity==="warning"?t?"\x1B[33mwarning\x1B[0m":"warning":t?"\x1B[34minfo\x1B[0m":"info";return`${s}:${e.startLine+1}:${e.startCol+1}: ${n}: ${Vs(e.message)} [${e.code}]`}function mc(s,e){let t=a=>a.replace(/%/g,"%25").replace(/\r/g,"%0D").replace(/\n/g,"%0A"),n=a=>t(a).replace(/:/g,"%3A").replace(/,/g,"%2C"),r=`file=${n(s)},line=${e.startLine+1},col=${e.startCol+1},endLine=${e.endLine+1},endColumn=${e.endCol+1}`;return`::${e.severity==="warning"?"warning":"notice"} ${r},title=${n(`Bash Explainer: ${e.code}`)}::${t(Vs(e.message))}`}function gc(s){return{$schema:"https://json.schemastore.org/sarif-2.1.0.json",version:"2.1.0",runs:[{tool:{driver:{name:"Bash Explainer",version:"0.2.0",informationUri:"https://github.com/sf624/bash-explainer",rules:[...new Set(s.map(t=>t.code))].sort().map(t=>({id:t,shortDescription:{text:t}}))}},results:s.map(t=>({ruleId:t.code,level:t.severity==="warning"?"warning":"note",message:{text:t.message},locations:[{physicalLocation:{artifactLocation:{uri:t.file.replace(/\\/g,"/")},region:{startLine:t.line,startColumn:t.column,endLine:t.endLine,endColumn:t.endColumn}}}]}))}]}}var Vs=s=>s.replace(/^[⚠ℹ]️?\s*/u,"").replace(/`/g,""),_c=s=>({...s,examples:s.examples.map(({interactive:e,...t})=>t)});async function La(s,e){let t,n;try{if(t=Oa(s,e.env,e.isTTY),t==="help")return e.stdout(lc),0;if(t==="version")return e.stdout(`0.2.0
158
+ `),0;n=uc(t)}catch(u){if(!(u instanceof ge))throw u;return e.stderr(`bash-explainer: ${u.message}
149
159
  Try 'bash-explainer --help'.
150
- `),2}let r=await Na({runtimeDir:__dirname,bashWasm:Ra.join(__dirname,"tree-sitter-bash.wasm")}),a=new bn(t.lang),o=[],l=[],c=0;for(let u of n){let h=u.text.split(`
151
- `),d;if(u.kind==="shell")d={lines:h,tree:r.parse(u.text)};else{let f=ba(u.kind,u.text);d={lines:h,extracted:f,tree:r.parse(f.text)}}let p={forced:t.shell,detected:Gi(h.slice(0,50).join(`
152
- `),u.name)};if(t.check){let f=va(d,t.lang,p).filter(m=>!u.lines||m.startLine+1>=u.lines[0]&&m.startLine+1<=u.lines[1]);c+=f.filter(m=>m.severity==="warning").length,t.format==="json"?o.push(...f.map(m=>({file:u.name,line:m.startLine+1,column:m.startCol+1,endLine:m.endLine+1,endColumn:m.endCol+1,severity:m.severity,code:m.code,message:Fa(m.message)}))):l.push(...f.map(m=>uc(u.name,m,t.color)))}else{let[f,m]=u.lines??[1,h.length];if(m>h.length)return e.stderr(`bash-explainer: ${u.name} has ${h.length} lines
153
- `),2;for(let g=f-1;g<m;g++){let _=$a(a,d,g,t.lang,p,{examples:{enabled:t.examples,disabled:[]}});!u.lines&&!_.items.length&&!_.notes.length||(t.format==="json"?o.push({file:u.name,line:g+1,text:h[g],explanation:hc(_)}):t.format==="markdown"?l.push(Ta(_,h[g],`${u.name}:${g+1}`).trimEnd()):l.push(lc(u.name,g,h[g],_,t.color)))}}d.tree.delete()}return t.format==="json"?e.stdout(JSON.stringify(o,null,2)+`
160
+ `),2}let r=await Nn({runtimeDir:__dirname,bashWasm:Fa.join(__dirname,"tree-sitter-bash.wasm")}),a=new ht(t.lang),o=[],l=[],c=0;for(let u of n){let h=u.text.split(`
161
+ `),d;if(u.kind==="shell")d={lines:h,tree:r.parse(u.text)};else{let f=kn(u.kind,u.text);d={lines:h,extracted:f,tree:r.parse(f.text)}}let p={forced:t.shell,detected:gn(h.slice(0,50).join(`
162
+ `),u.name)};if(t.check){let f=En(d,t.lang,p).filter(m=>!u.lines||m.startLine+1>=u.lines[0]&&m.startLine+1<=u.lines[1]).sort((m,g)=>m.startLine-g.startLine||m.startCol-g.startCol);c+=f.filter(m=>m.severity==="warning").length,t.format==="json"||t.format==="sarif"?o.push(...f.map(m=>({file:u.name,line:m.startLine+1,column:m.startCol+1,endLine:m.endLine+1,endColumn:m.endCol+1,severity:m.severity,code:m.code,message:Vs(m.message)}))):t.format==="github"?l.push(...f.map(m=>mc(u.name,m))):l.push(...f.map(m=>fc(u.name,m,t.color)))}else{let[f,m]=u.lines??[1,h.length];if(m>h.length)return e.stderr(`bash-explainer: ${u.name} has ${h.length} lines
163
+ `),2;for(let g=f-1;g<m;g++){let _=vn(a,d,g,t.lang,p,{examples:{enabled:t.examples,disabled:[]}});!u.lines&&!_.items.length&&!_.notes.length||(t.format==="json"?o.push({file:u.name,line:g+1,text:h[g],explanation:_c(_)}):t.format==="markdown"?l.push(Tn(_,h[g],`${u.name}:${g+1}`).trimEnd()):l.push(dc(u.name,g,h[g],_,t.color)))}}d.tree.delete()}return t.format==="json"?e.stdout(JSON.stringify(o,null,2)+`
164
+ `):t.format==="sarif"?e.stdout(JSON.stringify(gc(o),null,2)+`
154
165
  `):l.length&&e.stdout(l.join(t.check?`
155
166
  `:t.format==="markdown"?`
156
167
 
@@ -159,5 +170,5 @@ Try 'bash-explainer --help'.
159
170
  `:`
160
171
 
161
172
  `)+`
162
- `),t.check&&c>0?1:0}require.main===module&&Ca(process.argv.slice(2),{stdout:s=>process.stdout.write(s),stderr:s=>process.stderr.write(s),env:process.env,isTTY:!!process.stdout.isTTY}).then(s=>{process.exitCode=s},s=>{process.stderr.write(`bash-explainer: ${s instanceof Error?s.stack:s}
173
+ `),t.check&&c>0?1:0}require.main===module&&process.argv.includes("--lsp")?Ca({input:process.stdin,output:process.stdout,env:process.env,version:"0.2.0",exit:s=>process.exit(s)}):require.main===module&&La(process.argv.slice(2),{stdout:s=>process.stdout.write(s),stderr:s=>process.stderr.write(s),env:process.env,isTTY:!!process.stdout.isTTY}).then(s=>{process.exitCode=s},s=>{process.stderr.write(`bash-explainer: ${s instanceof Error?s.stack:s}
163
174
  `),process.exitCode=2});0&&(module.exports={main,parseArgs});