pan-stack-cli 0.2.3 → 0.2.4

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 (2) hide show
  1. package/bin/pan.js +16 -10
  2. package/package.json +1 -1
package/bin/pan.js CHANGED
@@ -138,8 +138,8 @@ ${bC()}
138
138
  `+n:""),u=Math.floor(s.length/o)-this.cursorPos.rows+(n?vm(n):0);u>0&&(a+=Ol(u)),a+=Pl(this.cursorPos.cols),this.write(Dl(this.extraLinesUnderPrompt)+Ml(this.height)+a),this.extraLinesUnderPrompt=u,this.height=vm(a)}checkCursorPos(){let e=this.rl.getCursorPos();e.cols!==this.cursorPos.cols&&(this.write(Pl(e.cols)),this.cursorPos=e)}done({clearContent:e}){this.rl.setPrompt("");let n=Dl(this.extraLinesUnderPrompt);n+=e?Ml(this.height):`
139
139
  `,n+="\x1B[G",n+=wm,this.write(n),this.rl.close()}}});var va,km=Q(()=>{va=class extends Promise{static withResolver(){let e,n;return{promise:new Promise((s,i)=>{e=s,n=i}),resolve:e,reject:n}}}});function lk(){let t=Error.prepareStackTrace,e=[];try{Error.prepareStackTrace=(n,r)=>{let s=r.slice(1);return e=s,s},new Error().stack}catch{return e}return Error.prepareStackTrace=t,e}function Ce(t){let e=lk();return(r,s={})=>{let{input:i=process.stdin,signal:o}=s,a=new Set,c=new Im.default;c.pipe(s.output??process.stdout);let u=Rm.createInterface({terminal:!0,input:i,output:c});c.mute();let d=new Ki(u),{promise:l,resolve:f,reject:p}=va.withResolver(),_=()=>p(new ji);if(o){let m=()=>p(new Ui({cause:o.reason}));if(o.aborted)return m(),Object.assign(l,{cancel:_});o.addEventListener("abort",m),a.add(()=>o.removeEventListener("abort",m))}a.add(Sm((m,E)=>{p(new Ds(`User force closed the prompt with ${m} ${E}`))}));let h=()=>p(new Ds("User force closed the prompt with SIGINT"));return u.on("SIGINT",h),a.add(()=>u.removeListener("SIGINT",h)),U_(u,m=>{let E=Nm.AsyncResource.bind(()=>Vr.clearAll());u.on("close",E),a.add(()=>u.removeListener("close",E));let x=()=>{let S=()=>d.checkCursorPos();u.input.on("keypress",S),a.add(()=>u.input.removeListener("keypress",S));let v=null;m(()=>{let C=!1;try{let A=t(r,w=>{C?f(w):v={value:w}});if(A===void 0){let w=e[1]?.getFileName();throw w&&!w.startsWith("file://")&&(w=Om.default.resolve(w)),new Error(`Prompt functions must return a string.
140
140
  at ${w}`)}let[O,M]=typeof A=="string"?[A]:A;d.render(O,M),Vr.run()}catch(A){p(A)}if(C=!0,v!==null){let{value:A}=v;v=null,f(A)}})};return"readableFlowing"in i?uk(x):x(),Object.assign(l.then(S=>(Vr.clearAll(),S),S=>{throw Vr.clearAll(),S}).finally(()=>{a.forEach(S=>S()),d.done({clearContent:!!s.clearPromptOnDone}),c.end()}).then(()=>l),{cancel:_})})}}var Rm,Nm,Im,Om,uk,Dm=Q(()=>{Rm=$n(require("node:readline"),1),Nm=require("node:async_hooks"),Im=$n(ym(),1);Tm();Cm();km();Yr();xa();Om=$n(require("node:path"),1),uk=globalThis.setImmediate});var Pm,ee,Mm=Q(()=>{Pm=require("node:util");Ms();ee=class{separator=(0,Pm.styleText)("dim",Array.from({length:15}).join(Lt.line));type="separator";constructor(e){e&&(this.separator=e)}static isSeparator(e){return!!(e&&typeof e=="object"&&"type"in e&&e.type==="separator")}}});var Bl={};Lh(Bl,{AbortPromptError:()=>Ui,CancelPromptError:()=>ji,ExitPromptError:()=>Ds,HookError:()=>$i,Separator:()=>ee,ValidationError:()=>tn,createPrompt:()=>Ce,isBackspaceKey:()=>hr,isDownKey:()=>ot,isEnterKey:()=>we,isNumberKey:()=>Os,isShiftKey:()=>M_,isSpaceKey:()=>ma,isTabKey:()=>mn,isUpKey:()=>Fe,makeTheme:()=>Se,useEffect:()=>ht,useKeypress:()=>Le,useMemo:()=>at,usePagination:()=>_r,usePrefix:()=>ve,useRef:()=>xn,useState:()=>W});var _t=Q(()=>{gl();xa();V_();Ea();ya();Y_();ba();z_();bl();gm();Dm();Mm()});var qt=g((Jq,jm)=>{var La=null;async function Bm(){if(La)return La;let t=await Promise.resolve().then(()=>(_t(),Bl)).catch(()=>null);if(!t)return null;let{createPrompt:e,useState:n,useKeypress:r,usePrefix:s,usePagination:i,useMemo:o,isEnterKey:a,isUpKey:c,isDownKey:u,Separator:d,makeTheme:l}=t;return La=e((f,p)=>{let{message:_,choices:h,hotkeys:m=[],pageSize:E=15,footer:x=""}=f,S=l(f.theme),[v,C]=n("idle"),A=s({status:v,theme:S}),O=o(()=>h,[h]),M=O.findIndex(b=>!d.isSeparator(b)),[w,D]=n(M<0?0:M);r((b,T)=>{if(v==="idle")if(a(b)){let P=O[w];P&&!d.isSeparator(P)&&!P.disabled&&(C("done"),p(P.value))}else if(c(b)||u(b)){T.clearLine(0);let P=c(b)?-1:1,K=w;do K=(K+P+O.length)%O.length;while(d.isSeparator(O[K])&&K!==w);D(K)}else if(b.name&&m.some(P=>P.key===b.name))C("done"),p(m.find(P=>P.key===b.name).value);else{let P=String(T.line||"").toLowerCase();if(P){let K=O.findIndex(I=>!d.isSeparator(I)&&String(I.name).toLowerCase().startsWith(P));K>=0&&D(K)}}});let N=O[w]||{};if(v==="done")return`${A} ${_} ${N.name||""}`.trim();let $=i({items:O,active:w,renderItem({item:b,isActive:T}){if(d.isSeparator(b))return` ${b.separator||"\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500"}`;let K=` ${T?"\u276F":" "} ${b.name}`;return T?`\x1B[36m${K}\x1B[39m`:K},pageSize:E,loop:!1}),H=N.description?`\x1B[2m ${N.description}\x1B[22m`:"",k=m.length?" "+m.map(b=>`\x1B[1m${b.key}\x1B[22m ${b.label}`).join(" \xB7 "):"",y=x||k?`\x1B[2m${x}\x1B[22m${k}`:"";return[`${A} ${_}`,$,H,y].filter(Boolean).join(`
141
- `)}),La}async function dk(t){let e=await Bm();if(!e)throw new Error("no-core");return e(t)}var Ca=null;async function Um(){if(Ca)return Ca;let t=await Promise.resolve().then(()=>(_t(),Bl)).catch(()=>null);if(!t)return null;let{createPrompt:e,useState:n,useKeypress:r,usePrefix:s,usePagination:i,useMemo:o,isEnterKey:a,isUpKey:c,isDownKey:u,isSpaceKey:d,Separator:l,makeTheme:f}=t;return Ca=e((p,_)=>{let{message:h,choices:m,hotkeys:E=[],pageSize:x=15,footer:S=""}=p,v=f(p.theme),[C,A]=n("idle"),O=s({status:C,theme:v}),M=o(()=>m,[m]),w=M.findIndex(I=>!l.isSeparator(I)),[D,N]=n(w<0?0:w),[$,H]=n(new Set);function k(I){let q=M[I];if(!q||l.isSeparator(q)||q.disabled)return;let B=new Set($);B.has(I)?B.delete(I):B.add(I),H(B)}if(r((I,q)=>{if(C==="idle")if(a(I)){A("done");let B=[];M.forEach((fe,J)=>{!l.isSeparator(fe)&&!fe.disabled&&$.has(J)&&B.push(fe.value)}),_({action:"submit",values:B})}else if(d&&d(I))q.clearLine(0),k(D);else if(I.name==="space")q.clearLine(0),k(D);else if(c(I)||u(I)){q.clearLine(0);let B=c(I)?-1:1,fe=D;do fe=(fe+B+M.length)%M.length;while(l.isSeparator(M[fe])&&fe!==D);N(fe)}else if(I.name==="a"){let B=M.map((z,Un)=>({it:z,i:Un})).filter(({it:z})=>!l.isSeparator(z)&&!z.disabled),fe=B.every(({i:z})=>$.has(z)),J=new Set;fe||B.forEach(({i:z})=>J.add(z)),H(J)}else if(I.name==="i"){let B=new Set;M.forEach((fe,J)=>{!l.isSeparator(fe)&&!fe.disabled&&!$.has(J)&&B.add(J)}),H(B)}else I.name&&E.some(B=>B.key===I.name)&&(A("done"),_({action:E.find(B=>B.key===I.name).value}))}),C==="done")return`${O} ${h}`.trim();let y=i({items:M,active:D,renderItem({item:I,index:q,isActive:B}){if(l.isSeparator(I))return` ${I.separator||"\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500"}`;let fe=$.has(q)?"\u25C9":"\u25EF",z=` ${B?"\u276F":" "} ${fe} ${I.name}`;return B?`\x1B[36m${z}\x1B[39m`:z},pageSize:x,loop:!1}),b="space ch\u1ECDn \xB7 a ch\u1ECDn t\u1EA5t c\u1EA3 \xB7 i \u0111\u1EA3o",T=E.length?" "+E.map(I=>`\x1B[1m${I.key}\x1B[22m ${I.label}`).join(" \xB7 "):"",K=`\x1B[2m${S||b}\x1B[22m${T} \x1B[1mEnter\x1B[22m \x1B[2mx\xE1c nh\u1EADn\x1B[22m`;return[`${O} ${h}`,y,K].filter(Boolean).join(`
142
- `)}),Ca}async function fk(t){let e=await Um();if(!e)throw new Error("no-core");return e(t)}jm.exports={menuSelect:dk,buildMenuPrompt:Bm,menuCheckbox:fk,buildMenuCheckbox:Um}});function ka(t){return!ee.isSeparator(t)&&!t.disabled}function Ul(t){return!ee.isSeparator(t)}function $m(t){return!ee.isSeparator(t)&&t.checked}function jl(t){return ka(t)?{...t,checked:!t.checked}:t}function hk(t){return function(e){return ka(e)?{...e,checked:t}:e}}function _k(t){return t.map(e=>{if(ee.isSeparator(e))return e;if(typeof e!="object"||e===null||!("value"in e)){let s=String(e);return{value:e,name:s,short:s,checkedName:s,disabled:!1,checked:!1}}let n=e.name??String(e.value),r={value:e.value,name:n,short:e.short??n,checkedName:e.checkedName??n,disabled:e.disabled??!1,checked:e.checked??!1};return e.description&&(r.description=e.description),r})}var mr,pk,Fm,qm=Q(()=>{_t();qi();mr=require("node:util");Ms();_t();pk={icon:{checked:(0,mr.styleText)("green",Lt.circleFilled),unchecked:Lt.circle,cursor:Lt.pointer,disabledChecked:(0,mr.styleText)("green",Lt.circleDouble),disabledUnchecked:"-"},style:{disabled:t=>(0,mr.styleText)("dim",t),renderSelectedChoices:t=>t.map(e=>e.short).join(", "),description:t=>(0,mr.styleText)("cyan",t),keysHelpTip:t=>t.map(([e,n])=>`${(0,mr.styleText)("bold",e)} ${(0,mr.styleText)("dim",n)}`).join((0,mr.styleText)("dim"," \u2022 "))},i18n:{disabledError:"This option is disabled and cannot be toggled."}};Fm=Ce((t,e)=>{let{pageSize:n=7,loop:r=!0,required:s,validate:i=()=>!0}=t,o={all:"a",invert:"i",...t.shortcuts},a=Se(pk,t.theme),{keybindings:c}=a,[u,d]=W("idle"),l=ve({status:u,theme:a}),[f,p]=W(_k(t.choices)),_=at(()=>{let w=f.findIndex(Ul),D=f.findLastIndex(Ul);if(w===-1)throw new tn("[checkbox prompt] No selectable choices. All choices are disabled.");return{first:w,last:D}},[f]),[h,m]=W(_.first),[E,x]=W();Le(async w=>{if(we(w)){let D=f.filter($m),N=await i([...D]);s&&!D.length?x("At least one choice must be selected"):N===!0?(d("done"),e(D.map($=>$.value))):x(N||"You must select a valid value")}else if(Fe(w,c)||ot(w,c)){if(E&&x(void 0),r||Fe(w,c)&&h!==_.first||ot(w,c)&&h!==_.last){let D=Fe(w,c)?-1:1,N=h;do N=(N+D+f.length)%f.length;while(!Ul(f[N]));m(N)}}else if(ma(w)){let D=f[h];D&&!ee.isSeparator(D)&&(D.disabled?x(a.i18n.disabledError):(x(void 0),p(f.map((N,$)=>$===h?jl(N):N))))}else if(w.name===o.all){let D=f.some(N=>ka(N)&&!N.checked);p(f.map(hk(D)))}else if(w.name===o.invert)p(f.map(jl));else if(Os(w)){let D=Number(w.name)-1,N=-1,$=f.findIndex(k=>ee.isSeparator(k)?!1:(N++,N===D)),H=f[$];H&&ka(H)&&(m($),p(f.map((k,y)=>y===$?jl(k):k)))}});let S=a.style.message(t.message,u),v,C=_r({items:f,active:h,renderItem({item:w,isActive:D}){if(ee.isSeparator(w))return` ${w.separator}`;let N=D?a.icon.cursor:" ";if(w.disabled){let y=typeof w.disabled=="string"?w.disabled:"(disabled)",b=w.checked?a.icon.disabledChecked:a.icon.disabledUnchecked;return a.style.disabled(`${N}${b} ${w.name} ${y}`)}D&&(v=w.description);let $=w.checked?a.icon.checked:a.icon.unchecked,H=w.checked?w.checkedName:w.name;return(D?a.style.highlight:y=>y)(`${N}${$} ${H}`)},pageSize:n,loop:r});if(u==="done"){let w=f.filter($m),D=a.style.answer(a.style.renderSelectedChoices(w,f));return[l,S,D].filter(Boolean).join(" ")}let A=[["\u2191\u2193","navigate"],["space","select"]];o.all&&A.push([o.all,"all"]),o.invert&&A.push([o.invert,"invert"]),A.push(["\u23CE","submit"]);let O=a.style.keysHelpTip(A);return`${[[l,S].filter(Boolean).join(" "),C," ",v?a.style.description(v):"",E?a.style.error(E):"",O].filter(Boolean).join(`
141
+ `)}),La}async function dk(t,e={output:process.stderr}){let n=await Bm();if(!n)throw new Error("no-core");return n(t,e)}var Ca=null;async function Um(){if(Ca)return Ca;let t=await Promise.resolve().then(()=>(_t(),Bl)).catch(()=>null);if(!t)return null;let{createPrompt:e,useState:n,useKeypress:r,usePrefix:s,usePagination:i,useMemo:o,isEnterKey:a,isUpKey:c,isDownKey:u,isSpaceKey:d,Separator:l,makeTheme:f}=t;return Ca=e((p,_)=>{let{message:h,choices:m,hotkeys:E=[],pageSize:x=15,footer:S=""}=p,v=f(p.theme),[C,A]=n("idle"),O=s({status:C,theme:v}),M=o(()=>m,[m]),w=M.findIndex(I=>!l.isSeparator(I)),[D,N]=n(w<0?0:w),[$,H]=n(new Set);function k(I){let q=M[I];if(!q||l.isSeparator(q)||q.disabled)return;let B=new Set($);B.has(I)?B.delete(I):B.add(I),H(B)}if(r((I,q)=>{if(C==="idle")if(a(I)){A("done");let B=[];M.forEach((fe,J)=>{!l.isSeparator(fe)&&!fe.disabled&&$.has(J)&&B.push(fe.value)}),_({action:"submit",values:B})}else if(d&&d(I))q.clearLine(0),k(D);else if(I.name==="space")q.clearLine(0),k(D);else if(c(I)||u(I)){q.clearLine(0);let B=c(I)?-1:1,fe=D;do fe=(fe+B+M.length)%M.length;while(l.isSeparator(M[fe])&&fe!==D);N(fe)}else if(I.name==="a"){let B=M.map((z,Un)=>({it:z,i:Un})).filter(({it:z})=>!l.isSeparator(z)&&!z.disabled),fe=B.every(({i:z})=>$.has(z)),J=new Set;fe||B.forEach(({i:z})=>J.add(z)),H(J)}else if(I.name==="i"){let B=new Set;M.forEach((fe,J)=>{!l.isSeparator(fe)&&!fe.disabled&&!$.has(J)&&B.add(J)}),H(B)}else I.name&&E.some(B=>B.key===I.name)&&(A("done"),_({action:E.find(B=>B.key===I.name).value}))}),C==="done")return`${O} ${h}`.trim();let y=i({items:M,active:D,renderItem({item:I,index:q,isActive:B}){if(l.isSeparator(I))return` ${I.separator||"\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500"}`;let fe=$.has(q)?"\u25C9":"\u25EF",z=` ${B?"\u276F":" "} ${fe} ${I.name}`;return B?`\x1B[36m${z}\x1B[39m`:z},pageSize:x,loop:!1}),b="space ch\u1ECDn \xB7 a ch\u1ECDn t\u1EA5t c\u1EA3 \xB7 i \u0111\u1EA3o",T=E.length?" "+E.map(I=>`\x1B[1m${I.key}\x1B[22m ${I.label}`).join(" \xB7 "):"",K=`\x1B[2m${S||b}\x1B[22m${T} \x1B[1mEnter\x1B[22m \x1B[2mx\xE1c nh\u1EADn\x1B[22m`;return[`${O} ${h}`,y,K].filter(Boolean).join(`
142
+ `)}),Ca}async function fk(t,e={output:process.stderr}){let n=await Um();if(!n)throw new Error("no-core");return n(t,e)}jm.exports={menuSelect:dk,buildMenuPrompt:Bm,menuCheckbox:fk,buildMenuCheckbox:Um}});function ka(t){return!ee.isSeparator(t)&&!t.disabled}function Ul(t){return!ee.isSeparator(t)}function $m(t){return!ee.isSeparator(t)&&t.checked}function jl(t){return ka(t)?{...t,checked:!t.checked}:t}function hk(t){return function(e){return ka(e)?{...e,checked:t}:e}}function _k(t){return t.map(e=>{if(ee.isSeparator(e))return e;if(typeof e!="object"||e===null||!("value"in e)){let s=String(e);return{value:e,name:s,short:s,checkedName:s,disabled:!1,checked:!1}}let n=e.name??String(e.value),r={value:e.value,name:n,short:e.short??n,checkedName:e.checkedName??n,disabled:e.disabled??!1,checked:e.checked??!1};return e.description&&(r.description=e.description),r})}var mr,pk,Fm,qm=Q(()=>{_t();qi();mr=require("node:util");Ms();_t();pk={icon:{checked:(0,mr.styleText)("green",Lt.circleFilled),unchecked:Lt.circle,cursor:Lt.pointer,disabledChecked:(0,mr.styleText)("green",Lt.circleDouble),disabledUnchecked:"-"},style:{disabled:t=>(0,mr.styleText)("dim",t),renderSelectedChoices:t=>t.map(e=>e.short).join(", "),description:t=>(0,mr.styleText)("cyan",t),keysHelpTip:t=>t.map(([e,n])=>`${(0,mr.styleText)("bold",e)} ${(0,mr.styleText)("dim",n)}`).join((0,mr.styleText)("dim"," \u2022 "))},i18n:{disabledError:"This option is disabled and cannot be toggled."}};Fm=Ce((t,e)=>{let{pageSize:n=7,loop:r=!0,required:s,validate:i=()=>!0}=t,o={all:"a",invert:"i",...t.shortcuts},a=Se(pk,t.theme),{keybindings:c}=a,[u,d]=W("idle"),l=ve({status:u,theme:a}),[f,p]=W(_k(t.choices)),_=at(()=>{let w=f.findIndex(Ul),D=f.findLastIndex(Ul);if(w===-1)throw new tn("[checkbox prompt] No selectable choices. All choices are disabled.");return{first:w,last:D}},[f]),[h,m]=W(_.first),[E,x]=W();Le(async w=>{if(we(w)){let D=f.filter($m),N=await i([...D]);s&&!D.length?x("At least one choice must be selected"):N===!0?(d("done"),e(D.map($=>$.value))):x(N||"You must select a valid value")}else if(Fe(w,c)||ot(w,c)){if(E&&x(void 0),r||Fe(w,c)&&h!==_.first||ot(w,c)&&h!==_.last){let D=Fe(w,c)?-1:1,N=h;do N=(N+D+f.length)%f.length;while(!Ul(f[N]));m(N)}}else if(ma(w)){let D=f[h];D&&!ee.isSeparator(D)&&(D.disabled?x(a.i18n.disabledError):(x(void 0),p(f.map((N,$)=>$===h?jl(N):N))))}else if(w.name===o.all){let D=f.some(N=>ka(N)&&!N.checked);p(f.map(hk(D)))}else if(w.name===o.invert)p(f.map(jl));else if(Os(w)){let D=Number(w.name)-1,N=-1,$=f.findIndex(k=>ee.isSeparator(k)?!1:(N++,N===D)),H=f[$];H&&ka(H)&&(m($),p(f.map((k,y)=>y===$?jl(k):k)))}});let S=a.style.message(t.message,u),v,C=_r({items:f,active:h,renderItem({item:w,isActive:D}){if(ee.isSeparator(w))return` ${w.separator}`;let N=D?a.icon.cursor:" ";if(w.disabled){let y=typeof w.disabled=="string"?w.disabled:"(disabled)",b=w.checked?a.icon.disabledChecked:a.icon.disabledUnchecked;return a.style.disabled(`${N}${b} ${w.name} ${y}`)}D&&(v=w.description);let $=w.checked?a.icon.checked:a.icon.unchecked,H=w.checked?w.checkedName:w.name;return(D?a.style.highlight:y=>y)(`${N}${$} ${H}`)},pageSize:n,loop:r});if(u==="done"){let w=f.filter($m),D=a.style.answer(a.style.renderSelectedChoices(w,f));return[l,S,D].filter(Boolean).join(" ")}let A=[["\u2191\u2193","navigate"],["space","select"]];o.all&&A.push([o.all,"all"]),o.invert&&A.push([o.invert,"invert"]),A.push(["\u23CE","submit"]);let O=a.style.keysHelpTip(A);return`${[[l,S].filter(Boolean).join(" "),C," ",v?a.style.description(v):"",E?a.style.error(E):"",O].filter(Boolean).join(`
143
143
  `).trimEnd()}${Bs}`})});var Km=g((Fl,$l)=>{"use strict";Object.defineProperty(Fl,"__esModule",{value:!0});var Ra;Fl.default=()=>{if(typeof $l=="object"&&typeof $l.exports=="object")return Ra=Ra||require("fs"),Ra;throw new Error("File system is not available")}});var Jr=g(ql=>{"use strict";Object.defineProperty(ql,"__esModule",{value:!0});ql.default=(t,e,n)=>({confidence:n,name:e.name(t),lang:e.language?e.language():void 0})});var Wm=g(Gi=>{"use strict";var mk=Gi&&Gi.__importDefault||function(t){return t&&t.__esModule?t:{default:t}};Object.defineProperty(Gi,"__esModule",{value:!0});var Gm=mk(Jr()),Kl=class{name(){return"ASCII"}match(e){let n=e.rawInput;for(let r=0;r<e.rawLen;r++){let s=n[r];if(s<32||s>126)return(0,Gm.default)(e,this,0)}return(0,Gm.default)(e,this,100)}};Gi.default=Kl});var Hm=g(Wi=>{"use strict";var xk=Wi&&Wi.__importDefault||function(t){return t&&t.__esModule?t:{default:t}};Object.defineProperty(Wi,"__esModule",{value:!0});var gk=xk(Jr()),Gl=class{name(){return"UTF-8"}match(e){let n=!1,r=0,s=0,i=0,o,a=e.rawInput;e.rawLen>=3&&(a[0]&255)==239&&(a[1]&255)==187&&(a[2]&255)==191&&(n=!0);for(let c=0;c<e.rawLen;c++){let u=a[c];if((u&128)!=0){if((u&224)==192)i=1;else if((u&240)==224)i=2;else if((u&248)==240)i=3;else{if(s++,s>5)break;i=0}for(;c++,!(c>=e.rawLen);){if((a[c]&192)!=128){s++;break}if(--i==0){r++;break}}}}if(o=0,n&&s==0)o=100;else if(n&&r>s*10)o=80;else if(r>3&&s==0)o=100;else if(r>0&&s==0)o=80;else if(r==0&&s==0)o=10;else if(r>s*10)o=25;else return null;return(0,gk.default)(e,this,o)}};Wi.default=Gl});var Vm=g(Kt=>{"use strict";var Ek=Kt&&Kt.__importDefault||function(t){return t&&t.__esModule?t:{default:t}};Object.defineProperty(Kt,"__esModule",{value:!0});Kt.UTF_32LE=Kt.UTF_32BE=Kt.UTF_16LE=Kt.UTF_16BE=void 0;var zl=Ek(Jr()),Wl=class{name(){return"UTF-16BE"}match(e){let n=e.rawInput;return n.length>=2&&(n[0]&255)==254&&(n[1]&255)==255?(0,zl.default)(e,this,100):null}};Kt.UTF_16BE=Wl;var Hl=class{name(){return"UTF-16LE"}match(e){let n=e.rawInput;return n.length>=2&&(n[0]&255)==255&&(n[1]&255)==254?n.length>=4&&n[2]==0&&n[3]==0?null:(0,zl.default)(e,this,100):null}};Kt.UTF_16LE=Hl;var Na=class{name(){return"UTF-32"}getChar(e,n){return-1}match(e){let n=0,r=0,s=!1,i=0,o=e.rawLen/4*4,a=e.rawInput;if(o==0)return null;this.getChar(a,0)==65279&&(s=!0);for(let c=0;c<o;c+=4){let u=this.getChar(a,c);u<0||u>=1114111||u>=55296&&u<=57343?r+=1:n+=1}return s&&r==0?i=100:s&&n>r*10?i=80:n>3&&r==0?i=100:n>0&&r==0?i=80:n>r*10&&(i=25),i==0?null:(0,zl.default)(e,this,i)}},Vl=class extends Na{name(){return"UTF-32BE"}getChar(e,n){return(e[n+0]&255)<<24|(e[n+1]&255)<<16|(e[n+2]&255)<<8|e[n+3]&255}};Kt.UTF_32BE=Vl;var Yl=class extends Na{name(){return"UTF-32LE"}getChar(e,n){return(e[n+3]&255)<<24|(e[n+2]&255)<<16|(e[n+1]&255)<<8|e[n+0]&255}};Kt.UTF_32LE=Yl});var zm=g(mt=>{"use strict";var yk=mt&&mt.__importDefault||function(t){return t&&t.__esModule?t:{default:t}};Object.defineProperty(mt,"__esModule",{value:!0});mt.gb_18030=mt.euc_kr=mt.euc_jp=mt.big5=mt.sjis=void 0;var bk=yk(Jr());function Sk(t,e){let n=(r,s,i,o)=>{if(o<i)return-1;let a=Math.floor(i+o>>>1);return s>r[a]?n(r,s,a+1,o):s<r[a]?n(r,s,i,a-1):a};return n(t,e,0,t.length-1)}var Jl=class{constructor(){this.charValue=0,this.index=0,this.nextIndex=0,this.error=!1,this.done=!1}reset(){this.charValue=0,this.index=-1,this.nextIndex=0,this.error=!1,this.done=!1}nextByte(e){return this.nextIndex>=e.rawLen?(this.done=!0,-1):e.rawInput[this.nextIndex++]&255}},Xr=class{constructor(){this.commonChars=[]}name(){return"mbcs"}match(e){let n=0,r=0,s=0,i=0,o=0,a=new Jl;e:{for(a.reset();this.nextChar(a,e);){if(i++,a.error)s++;else{let c=a.charValue&4294967295;c>255&&(n++,this.commonChars!=null&&Sk(this.commonChars,c)>=0&&r++)}if(s>=2&&s*5>=n)break e}if(n<=10&&s==0){n==0&&i<10?o=0:o=10;break e}if(n<20*s){o=0;break e}if(this.commonChars==null)o=30+n-20*s,o>100&&(o=100);else{let u=90/Math.log(n/4);o=Math.floor(Math.log(r+1)*u+10),o=Math.min(o,100)}}return o==0?null:(0,bk.default)(e,this,o)}nextChar(e,n){return!0}},Xl=class extends Xr{constructor(){super(...arguments),this.commonChars=[33088,33089,33090,33093,33115,33129,33130,33141,33142,33440,33442,33444,33449,33450,33451,33453,33455,33457,33459,33461,33463,33469,33470,33473,33476,33477,33478,33480,33481,33484,33485,33500,33504,33511,33512,33513,33514,33520,33521,33601,33603,33614,33615,33624,33630,33634,33639,33653,33654,33673,33674,33675,33677,33683,36502,37882,38314]}name(){return"Shift_JIS"}language(){return"ja"}nextChar(e,n){e.index=e.nextIndex,e.error=!1;let r=e.charValue=e.nextByte(n);if(r<0)return!1;if(r<=127||r>160&&r<=223)return!0;let s=e.nextByte(n);return s<0?!1:(e.charValue=r<<8|s,s>=64&&s<=127||s>=128&&s<=255||(e.error=!0),!0)}};mt.sjis=Xl;var Ql=class extends Xr{constructor(){super(...arguments),this.commonChars=[41280,41281,41282,41283,41287,41289,41333,41334,42048,42054,42055,42056,42065,42068,42071,42084,42090,42092,42103,42147,42148,42151,42177,42190,42193,42207,42216,42237,42304,42312,42328,42345,42445,42471,42583,42593,42594,42600,42608,42664,42675,42681,42707,42715,42726,42738,42816,42833,42841,42970,43171,43173,43181,43217,43219,43236,43260,43456,43474,43507,43627,43706,43710,43724,43772,44103,44111,44208,44242,44377,44745,45024,45290,45423,45747,45764,45935,46156,46158,46412,46501,46525,46544,46552,46705,47085,47207,47428,47832,47940,48033,48593,49860,50105,50240,50271]}name(){return"Big5"}language(){return"zh"}nextChar(e,n){e.index=e.nextIndex,e.error=!1;let r=e.charValue=e.nextByte(n);if(r<0)return!1;if(r<=127||r==255)return!0;let s=e.nextByte(n);return s<0?!1:(e.charValue=e.charValue<<8|s,(s<64||s==127||s==255)&&(e.error=!0),!0)}};mt.big5=Ql;function Ym(t,e){t.index=t.nextIndex,t.error=!1;let n=0,r=0,s=0;e:{if(n=t.charValue=t.nextByte(e),n<0){t.done=!0;break e}if(n<=141)break e;if(r=t.nextByte(e),t.charValue=t.charValue<<8|r,n>=161&&n<=254){r<161&&(t.error=!0);break e}if(n==142){r<161&&(t.error=!0);break e}n==143&&(s=t.nextByte(e),t.charValue=t.charValue<<8|s,s<161&&(t.error=!0))}return t.done==!1}var Zl=class extends Xr{constructor(){super(...arguments),this.commonChars=[41377,41378,41379,41382,41404,41418,41419,41430,41431,42146,42148,42150,42152,42154,42155,42156,42157,42159,42161,42163,42165,42167,42169,42171,42173,42175,42176,42177,42179,42180,42182,42183,42184,42185,42186,42187,42190,42191,42192,42206,42207,42209,42210,42212,42216,42217,42218,42219,42220,42223,42226,42227,42402,42403,42404,42406,42407,42410,42413,42415,42416,42419,42421,42423,42424,42425,42431,42435,42438,42439,42440,42441,42443,42448,42453,42454,42455,42462,42464,42465,42469,42473,42474,42475,42476,42477,42483,47273,47572,47854,48072,48880,49079,50410,50940,51133,51896,51955,52188,52689],this.nextChar=Ym}name(){return"EUC-JP"}language(){return"ja"}};mt.euc_jp=Zl;var e0=class extends Xr{constructor(){super(...arguments),this.commonChars=[45217,45235,45253,45261,45268,45286,45293,45304,45306,45308,45496,45497,45511,45527,45538,45994,46011,46274,46287,46297,46315,46501,46517,46527,46535,46569,46835,47023,47042,47054,47270,47278,47286,47288,47291,47337,47531,47534,47564,47566,47613,47800,47822,47824,47857,48103,48115,48125,48301,48314,48338,48374,48570,48576,48579,48581,48838,48840,48863,48878,48888,48890,49057,49065,49088,49124,49131,49132,49144,49319,49327,49336,49338,49339,49341,49351,49356,49358,49359,49366,49370,49381,49403,49404,49572,49574,49590,49622,49631,49654,49656,50337,50637,50862,51151,51153,51154,51160,51173,51373],this.nextChar=Ym}name(){return"EUC-KR"}language(){return"ko"}};mt.euc_kr=e0;var t0=class extends Xr{constructor(){super(...arguments),this.commonChars=[41377,41378,41379,41380,41392,41393,41457,41459,41889,41900,41914,45480,45496,45502,45755,46025,46070,46323,46525,46532,46563,46767,46804,46816,47010,47016,47037,47062,47069,47284,47327,47350,47531,47561,47576,47610,47613,47821,48039,48086,48097,48122,48316,48347,48382,48588,48845,48861,49076,49094,49097,49332,49389,49611,49883,50119,50396,50410,50636,50935,51192,51371,51403,51413,51431,51663,51706,51889,51893,51911,51920,51926,51957,51965,52460,52728,52906,52932,52946,52965,53173,53186,53206,53442,53445,53456,53460,53671,53930,53938,53941,53947,53972,54211,54224,54269,54466,54490,54754,54992]}name(){return"GB18030"}language(){return"zh"}nextChar(e,n){e.index=e.nextIndex,e.error=!1;let r=0,s=0,i=0,o=0;e:{if(r=e.charValue=e.nextByte(n),r<0){e.done=!0;break e}if(r<=128)break e;if(s=e.nextByte(n),e.charValue=e.charValue<<8|s,r>=129&&r<=254){if(s>=64&&s<=126||s>=80&&s<=254)break e;if(s>=48&&s<=57&&(i=e.nextByte(n),i>=129&&i<=254&&(o=e.nextByte(n),o>=48&&o<=57))){e.charValue=e.charValue<<16|i<<8|o;break e}e.error=!0;break e}}return e.done==!1}};mt.gb_18030=t0});var Xm=g(ce=>{"use strict";var Tk=ce&&ce.__importDefault||function(t){return t&&t.__esModule?t:{default:t}};Object.defineProperty(ce,"__esModule",{value:!0});ce.KOI8_R=ce.windows_874=ce.windows_1258=ce.windows_1257=ce.windows_1256=ce.windows_1251=ce.ISO_8859_9=ce.ISO_8859_8=ce.ISO_8859_7=ce.ISO_8859_6=ce.ISO_8859_5=ce.ISO_8859_2=ce.ISO_8859_1=void 0;var Jm=Tk(Jr()),Ak=16777215,Ia=class{constructor(e,n){this.byteIndex=0,this.ngram=0,this.ngramCount=0,this.hitCount=0,this.spaceChar=32,this.ngramList=e,this.byteMap=n}search(e,n){let r=0;return e[r+32]<=n&&(r+=32),e[r+16]<=n&&(r+=16),e[r+8]<=n&&(r+=8),e[r+4]<=n&&(r+=4),e[r+2]<=n&&(r+=2),e[r+1]<=n&&(r+=1),e[r]>n&&(r-=1),r<0||e[r]!=n?-1:r}lookup(e){this.ngramCount+=1,this.search(this.ngramList,e)>=0&&(this.hitCount+=1)}addByte(e){this.ngram=(this.ngram<<8)+(e&255)&Ak,this.lookup(this.ngram)}nextByte(e){return this.byteIndex>=e.inputLen?-1:e.inputBytes[this.byteIndex++]&255}parse(e,n){let r,s=!1;for(this.spaceChar=n;(r=this.nextByte(e))>=0;){let o=this.byteMap[r];o!=0&&(o==this.spaceChar&&s||this.addByte(o),s=o==this.spaceChar)}this.addByte(this.spaceChar);let i=this.hitCount/this.ngramCount;return i>.33?98:Math.floor(i*300)}},Oe=class{constructor(e,n){this.fLang=e,this.fNGrams=n}},wk=t=>Array.isArray(t)&&isFinite(t[0]),ct=class{constructor(){this.spaceChar=32,this.nGramLang=void 0}ngrams(){return[]}byteMap(){return[]}name(e){return"sbcs"}language(){return this.nGramLang}match(e){this.nGramLang=void 0;let n=this.ngrams();if(wk(n)){let i=new Ia(n,this.byteMap()).parse(e,this.spaceChar);return i<=0?null:(0,Jm.default)(e,this,i)}let r=-1;for(let s=n.length-1;s>=0;s--){let i=n[s],a=new Ia(i.fNGrams,this.byteMap()).parse(e,this.spaceChar);a>r&&(r=a,this.nGramLang=i.fLang)}return r<=0?null:(0,Jm.default)(e,this,r)}},n0=class extends ct{byteMap(){return[32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,0,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,97,98,99,100,101,102,103,104,105,106,107,108,109,110,111,112,113,114,115,116,117,118,119,120,121,122,32,32,32,32,32,32,97,98,99,100,101,102,103,104,105,106,107,108,109,110,111,112,113,114,115,116,117,118,119,120,121,122,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,170,32,32,32,32,32,32,32,32,32,32,181,32,32,32,32,186,32,32,32,32,32,224,225,226,227,228,229,230,231,232,233,234,235,236,237,238,239,240,241,242,243,244,245,246,32,248,249,250,251,252,253,254,223,224,225,226,227,228,229,230,231,232,233,234,235,236,237,238,239,240,241,242,243,244,245,246,32,248,249,250,251,252,253,254,255]}ngrams(){return[new Oe("da",[2122086,2122100,2122853,2123118,2123122,2123375,2123873,2124064,2125157,2125671,2126053,2126697,2126708,2126953,2127465,6383136,6385184,6385252,6386208,6386720,6579488,6579566,6579570,6579572,6627443,6644768,6644837,6647328,6647396,6648352,6648421,6648608,6648864,6713202,6776096,6776174,6776178,6907749,6908960,6909543,7038240,7039845,7103858,7104871,7105637,7169380,7234661,7234848,7235360,7235429,7300896,7302432,7303712,7398688,7479396,7479397,7479411,7496992,7566437,7610483,7628064,7628146,7629164,7759218]),new Oe("de",[2122094,2122101,2122341,2122849,2122853,2122857,2123113,2123621,2123873,2124142,2125161,2126691,2126693,2127214,2127461,2127471,2127717,2128501,6448498,6514720,6514789,6514804,6578547,6579566,6579570,6580581,6627428,6627443,6646126,6646132,6647328,6648352,6648608,6776174,6841710,6845472,6906728,6907168,6909472,6909541,6911008,7104867,7105637,7217249,7217252,7217267,7234592,7234661,7234848,7235360,7235429,7238757,7479396,7496805,7497065,7562088,7566437,7610468,7628064,7628142,7628146,7695972,7695975,7759218]),new Oe("en",[2122016,2122094,2122341,2122607,2123375,2123873,2123877,2124142,2125153,2125670,2125938,2126437,2126689,2126708,2126952,2126959,2127720,6383972,6384672,6385184,6385252,6386464,6386720,6386789,6386793,6561889,6561908,6627425,6627443,6627444,6644768,6647412,6648352,6648608,6713202,6840692,6841632,6841714,6906912,6909472,6909543,6909806,6910752,7217249,7217268,7234592,7235360,7238688,7300640,7302688,7303712,7496992,7500576,7544929,7544948,7561577,7566368,7610484,7628146,7628897,7628901,7629167,7630624,7631648]),new Oe("es",[2122016,2122593,2122607,2122853,2123116,2123118,2123123,2124142,2124897,2124911,2125921,2125935,2125938,2126197,2126437,2126693,2127214,2128160,6365283,6365284,6365285,6365292,6365296,6382441,6382703,6384672,6386208,6386464,6515187,6516590,6579488,6579564,6582048,6627428,6627429,6627436,6646816,6647328,6647412,6648608,6648692,6907246,6943598,7102752,7106419,7217253,7238757,7282788,7282789,7302688,7303712,7303968,7364978,7435621,7495968,7497075,7544932,7544933,7544944,7562528,7628064,7630624,7693600,15953440]),new Oe("fr",[2122101,2122607,2122849,2122853,2122869,2123118,2123124,2124897,2124901,2125921,2125935,2125938,2126197,2126693,2126703,2127214,2154528,6385268,6386793,6513952,6516590,6579488,6579571,6583584,6627425,6627427,6627428,6627429,6627436,6627440,6627443,6647328,6647412,6648352,6648608,6648864,6649202,6909806,6910752,6911008,7102752,7103776,7103859,7169390,7217252,7234848,7238432,7238688,7302688,7302772,7304562,7435621,7479404,7496992,7544929,7544932,7544933,7544940,7544944,7610468,7628064,7629167,7693600,7696928]),new Oe("it",[2122092,2122600,2122607,2122853,2122857,2123040,2124140,2124142,2124897,2125925,2125938,2127214,6365283,6365284,6365296,6365299,6386799,6514789,6516590,6579564,6580512,6627425,6627427,6627428,6627433,6627436,6627440,6627443,6646816,6646892,6647412,6648352,6841632,6889569,6889571,6889572,6889587,6906144,6908960,6909472,6909806,7102752,7103776,7104800,7105633,7234848,7235872,7237408,7238757,7282785,7282788,7282793,7282803,7302688,7302757,7366002,7495968,7496992,7563552,7627040,7628064,7629088,7630624,8022383]),new Oe("nl",[2122092,2122341,2122849,2122853,2122857,2123109,2123118,2123621,2123877,2124142,2125153,2125157,2125680,2126949,2127457,2127461,2127471,2127717,2128489,6381934,6381938,6385184,6385252,6386208,6386720,6514804,6579488,6579566,6579570,6627426,6627446,6645102,6645106,6647328,6648352,6648435,6648864,6776174,6841716,6907168,6909472,6909543,6910752,7217250,7217252,7217253,7217256,7217263,7217270,7234661,7235360,7302756,7303026,7303200,7303712,7562088,7566437,7610468,7628064,7628142,7628146,7758190,7759218,7761775]),new Oe("no",[2122100,2122102,2122853,2123118,2123122,2123375,2123873,2124064,2125157,2125671,2126053,2126693,2126699,2126703,2126708,2126953,2127465,2155808,6385252,6386208,6386720,6579488,6579566,6579572,6627443,6644768,6647328,6647397,6648352,6648421,6648864,6648948,6713202,6776174,6908779,6908960,6909543,7038240,7039845,7103776,7105637,7169380,7169390,7217267,7234848,7235360,7235429,7237221,7300896,7302432,7303712,7398688,7479411,7496992,7565165,7566437,7610483,7628064,7628142,7628146,7629164,7631904,7631973,7759218]),new Oe("pt",[2122016,2122607,2122849,2122853,2122863,2123040,2123123,2125153,2125423,2125600,2125921,2125935,2125938,2126197,2126437,2126693,2127213,6365281,6365283,6365284,6365296,6382693,6382703,6384672,6386208,6386273,6386464,6516589,6516590,6578464,6579488,6582048,6582131,6627425,6627428,6647072,6647412,6648608,6648692,6906144,6906721,7169390,7238757,7238767,7282785,7282787,7282788,7282789,7282800,7303968,7364978,7435621,7495968,7497075,7544929,7544932,7544933,7544944,7566433,7628064,7630624,7693600,14905120,15197039]),new Oe("sv",[2122100,2122102,2122853,2123118,2123510,2123873,2124064,2124142,2124655,2125157,2125667,2126053,2126699,2126703,2126708,2126953,2127457,2127465,2155634,6382693,6385184,6385252,6386208,6386804,6514720,6579488,6579566,6579570,6579572,6644768,6647328,6648352,6648864,6747762,6776174,6909036,6909543,7037216,7105568,7169380,7217267,7233824,7234661,7235360,7235429,7235950,7299944,7302432,7302688,7398688,7479393,7479411,7495968,7564129,7565165,7610483,7627040,7628064,7628146,7629164,7631904,7758194,14971424,16151072])]}name(e){return e&&e.c1Bytes?"windows-1252":"ISO-8859-1"}};ce.ISO_8859_1=n0;var r0=class extends ct{byteMap(){return[32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,0,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,97,98,99,100,101,102,103,104,105,106,107,108,109,110,111,112,113,114,115,116,117,118,119,120,121,122,32,32,32,32,32,32,97,98,99,100,101,102,103,104,105,106,107,108,109,110,111,112,113,114,115,116,117,118,119,120,121,122,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,177,32,179,32,181,182,32,32,185,186,187,188,32,190,191,32,177,32,179,32,181,182,183,32,185,186,187,188,32,190,191,224,225,226,227,228,229,230,231,232,233,234,235,236,237,238,239,240,241,242,243,244,245,246,32,248,249,250,251,252,253,254,223,224,225,226,227,228,229,230,231,232,233,234,235,236,237,238,239,240,241,242,243,244,245,246,32,248,249,250,251,252,253,254,32]}ngrams(){return[new Oe("cs",[2122016,2122361,2122863,2124389,2125409,2125413,2125600,2125668,2125935,2125938,2126072,2126447,2126693,2126703,2126708,2126959,2127392,2127481,2128481,6365296,6513952,6514720,6627440,6627443,6627446,6647072,6647533,6844192,6844260,6910836,6972704,7042149,7103776,7104800,7233824,7268640,7269408,7269664,7282800,7300206,7301737,7304052,7304480,7304801,7368548,7368554,7369327,7403621,7562528,7565173,7566433,7566441,7566446,7628146,7630573,7630624,7676016,12477728,14773997,15296623,15540336,15540339,15559968,16278884]),new Oe("hu",[2122016,2122106,2122341,2123111,2123116,2123365,2123873,2123887,2124147,2124645,2124649,2124790,2124901,2125153,2125157,2125161,2125413,2126714,2126949,2156915,6365281,6365291,6365293,6365299,6384416,6385184,6388256,6447470,6448494,6645625,6646560,6646816,6646885,6647072,6647328,6648421,6648864,6648933,6648948,6781216,6844263,6909556,6910752,7020641,7075450,7169383,7170414,7217249,7233899,7234923,7234925,7238688,7300985,7544929,7567973,7567988,7568097,7596391,7610465,7631904,7659891,8021362,14773792,15299360]),new Oe("pl",[2122618,2122863,2124064,2124389,2124655,2125153,2125161,2125409,2125417,2125668,2125935,2125938,2126697,2127648,2127721,2127737,2128416,2128481,6365296,6365303,6385257,6514720,6519397,6519417,6582048,6584937,6627440,6627443,6627447,6627450,6645615,6646304,6647072,6647401,6778656,6906144,6907168,6907242,7037216,7039264,7039333,7170405,7233824,7235937,7235941,7282800,7305057,7305065,7368556,7369313,7369327,7369338,7502437,7502457,7563754,7564137,7566433,7825765,7955304,7957792,8021280,8022373,8026400,15955744]),new Oe("ro",[2122016,2122083,2122593,2122597,2122607,2122613,2122853,2122857,2124897,2125153,2125925,2125938,2126693,2126819,2127214,2144873,2158190,6365283,6365284,6386277,6386720,6386789,6386976,6513010,6516590,6518048,6546208,6579488,6627425,6627427,6627428,6627440,6627443,6644e3,6646048,6646885,6647412,6648692,6889569,6889571,6889572,6889584,6907168,6908192,6909472,7102752,7103776,7106418,7107945,7234848,7238770,7303712,7365998,7496992,7497057,7501088,7594784,7628064,7631477,7660320,7694624,7695392,12216608,15625760])]}name(e){return e&&e.c1Bytes?"windows-1250":"ISO-8859-2"}};ce.ISO_8859_2=r0;var s0=class extends ct{byteMap(){return[32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,0,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,97,98,99,100,101,102,103,104,105,106,107,108,109,110,111,112,113,114,115,116,117,118,119,120,121,122,32,32,32,32,32,32,97,98,99,100,101,102,103,104,105,106,107,108,109,110,111,112,113,114,115,116,117,118,119,120,121,122,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,241,242,243,244,245,246,247,248,249,250,251,252,32,254,255,208,209,210,211,212,213,214,215,216,217,218,219,220,221,222,223,224,225,226,227,228,229,230,231,232,233,234,235,236,237,238,239,208,209,210,211,212,213,214,215,216,217,218,219,220,221,222,223,224,225,226,227,228,229,230,231,232,233,234,235,236,237,238,239,32,241,242,243,244,245,246,247,248,249,250,251,252,32,254,255]}ngrams(){return[2150944,2151134,2151646,2152400,2152480,2153168,2153182,2153936,2153941,2154193,2154462,2154464,2154704,2154974,2154978,2155230,2156514,2158050,13688280,13689580,13884960,14015468,14015960,14016994,14017056,14164191,14210336,14211104,14216992,14407133,14407712,14413021,14536736,14538016,14538965,14538991,14540320,14540498,14557394,14557407,14557409,14602784,14602960,14603230,14604576,14605292,14605344,14606818,14671579,14672085,14672088,14672094,14733522,14734804,14803664,14803666,14803672,14806816,14865883,14868e3,14868192,14871584,15196894,15459616]}name(){return"ISO-8859-5"}language(){return"ru"}};ce.ISO_8859_5=s0;var i0=class extends ct{byteMap(){return[32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,0,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,97,98,99,100,101,102,103,104,105,106,107,108,109,110,111,112,113,114,115,116,117,118,119,120,121,122,32,32,32,32,32,32,97,98,99,100,101,102,103,104,105,106,107,108,109,110,111,112,113,114,115,116,117,118,119,120,121,122,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,193,194,195,196,197,198,199,200,201,202,203,204,205,206,207,208,209,210,211,212,213,214,215,216,217,218,32,32,32,32,32,224,225,226,227,228,229,230,231,232,233,234,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32]}ngrams(){return[2148324,2148326,2148551,2152932,2154986,2155748,2156006,2156743,13050055,13091104,13093408,13095200,13100064,13100227,13100231,13100232,13100234,13100236,13100237,13100239,13100243,13100249,13100258,13100261,13100264,13100266,13100320,13100576,13100746,13115591,13181127,13181153,13181156,13181157,13181160,13246663,13574343,13617440,13705415,13748512,13836487,14229703,14279913,14805536,14950599,14993696,15001888,15002144,15016135,15058720,15059232,15066656,15081671,15147207,15189792,15255524,15263264,15278279,15343815,15343845,15343848,15386912,15388960,15394336]}name(){return"ISO-8859-6"}language(){return"ar"}};ce.ISO_8859_6=i0;var o0=class extends ct{byteMap(){return[32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,0,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,97,98,99,100,101,102,103,104,105,106,107,108,109,110,111,112,113,114,115,116,117,118,119,120,121,122,32,32,32,32,32,32,97,98,99,100,101,102,103,104,105,106,107,108,109,110,111,112,113,114,115,116,117,118,119,120,121,122,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,161,162,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,220,32,221,222,223,32,252,32,253,254,192,225,226,227,228,229,230,231,232,233,234,235,236,237,238,239,240,241,32,243,244,245,246,247,248,249,250,251,220,221,222,223,224,225,226,227,228,229,230,231,232,233,234,235,236,237,238,239,240,241,242,243,244,245,246,247,248,249,250,251,252,253,254,32]}ngrams(){return[2154989,2154992,2155497,2155753,2156016,2156320,2157281,2157797,2158049,2158368,2158817,2158831,2158833,2159604,2159605,2159847,2159855,14672160,14754017,14754036,14805280,14806304,14807292,14807584,14936545,15067424,15069728,15147252,15199520,15200800,15278324,15327520,15330014,15331872,15393257,15393268,15525152,15540449,15540453,15540464,15589664,15725088,15725856,15790069,15790575,15793184,15868129,15868133,15868138,15868144,15868148,15983904,15984416,15987951,16048416,16048617,16050157,16050162,16050666,16052e3,16052213,16054765,16379168,16706848]}name(e){return e&&e.c1Bytes?"windows-1253":"ISO-8859-7"}language(){return"el"}};ce.ISO_8859_7=o0;var a0=class extends ct{byteMap(){return[32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,0,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,97,98,99,100,101,102,103,104,105,106,107,108,109,110,111,112,113,114,115,116,117,118,119,120,121,122,32,32,32,32,32,32,97,98,99,100,101,102,103,104,105,106,107,108,109,110,111,112,113,114,115,116,117,118,119,120,121,122,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,181,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,224,225,226,227,228,229,230,231,232,233,234,235,236,237,238,239,240,241,242,243,244,245,246,247,248,249,250,32,32,32,32,32]}ngrams(){return[new Oe("he",[2154725,2154727,2154729,2154746,2154985,2154990,2155744,2155749,2155753,2155758,2155762,2155769,2155770,2157792,2157796,2158304,2159340,2161132,14744096,14950624,14950625,14950628,14950636,14950638,14950649,15001056,15065120,15068448,15068960,15071264,15071776,15278308,15328288,15328762,15329773,15330592,15331104,15333408,15333920,15474912,15474916,15523872,15524896,15540448,15540449,15540452,15540460,15540462,15540473,15655968,15671524,15787040,15788320,15788525,15920160,16261348,16312813,16378912,16392416,16392417,16392420,16392428,16392430,16392441]),new Oe("he",[2154725,2154732,2155753,2155756,2155758,2155760,2157040,2157810,2157817,2158053,2158057,2158565,2158569,2160869,2160873,2161376,2161381,2161385,14688484,14688492,14688493,14688506,14738464,14738916,14740512,14741024,14754020,14754029,14754042,14950628,14950633,14950636,14950637,14950639,14950648,14950650,15002656,15065120,15066144,15196192,15327264,15327520,15328288,15474916,15474925,15474938,15528480,15530272,15591913,15591920,15591928,15605988,15605997,15606010,15655200,15655968,15918112,16326884,16326893,16326906,16376864,16441376,16442400,16442857])]}name(e){return e&&e.c1Bytes?"windows-1255":"ISO-8859-8"}language(){return"he"}};ce.ISO_8859_8=a0;var c0=class extends ct{byteMap(){return[32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,0,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,97,98,99,100,101,102,103,104,105,106,107,108,109,110,111,112,113,114,115,116,117,118,119,120,121,122,32,32,32,32,32,32,97,98,99,100,101,102,103,104,105,106,107,108,109,110,111,112,113,114,115,116,117,118,119,120,121,122,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,170,32,32,32,32,32,32,32,32,32,32,181,32,32,32,32,186,32,32,32,32,32,224,225,226,227,228,229,230,231,232,233,234,235,236,237,238,239,240,241,242,243,244,245,246,32,248,249,250,251,252,105,254,223,224,225,226,227,228,229,230,231,232,233,234,235,236,237,238,239,240,241,242,243,244,245,246,32,248,249,250,251,252,253,254,255]}ngrams(){return[2122337,2122345,2122357,2122849,2122853,2123621,2123873,2124140,2124641,2124655,2125153,2125676,2126689,2126945,2127461,2128225,6365282,6384416,6384737,6384993,6385184,6385405,6386208,6386273,6386429,6386685,6388065,6449522,6578464,6579488,6580512,6627426,6627435,6644841,6647328,6648352,6648425,6648681,6909029,6909472,6909545,6910496,7102830,7102834,7103776,7103858,7217249,7217250,7217259,7234657,7234661,7234848,7235872,7235950,7273760,7498094,7535982,7759136,7954720,7958386,16608800,16608868,16609021,16642301]}name(e){return e&&e.c1Bytes?"windows-1254":"ISO-8859-9"}language(){return"tr"}};ce.ISO_8859_9=c0;var u0=class extends ct{byteMap(){return[32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,0,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,97,98,99,100,101,102,103,104,105,106,107,108,109,110,111,112,113,114,115,116,117,118,119,120,121,122,32,32,32,32,32,32,97,98,99,100,101,102,103,104,105,106,107,108,109,110,111,112,113,114,115,116,117,118,119,120,121,122,32,32,32,32,32,144,131,32,131,32,32,32,32,32,32,154,32,156,157,158,159,144,32,32,32,32,32,32,32,32,32,154,32,156,157,158,159,32,162,162,188,32,180,32,32,184,32,186,32,32,32,32,191,32,32,179,179,180,181,32,32,184,32,186,32,188,190,190,191,224,225,226,227,228,229,230,231,232,233,234,235,236,237,238,239,240,241,242,243,244,245,246,247,248,249,250,251,252,253,254,255,224,225,226,227,228,229,230,231,232,233,234,235,236,237,238,239,240,241,242,243,244,245,246,247,248,249,250,251,252,253,254,255]}ngrams(){return[2155040,2155246,2155758,2156512,2156576,2157280,2157294,2158048,2158053,2158305,2158574,2158576,2158816,2159086,2159090,2159342,2160626,2162162,14740968,14742268,14937632,15068156,15068648,15069682,15069728,15212783,15263008,15263776,15269664,15459821,15460384,15465709,15589408,15590688,15591653,15591679,15592992,15593186,15605986,15605999,15606001,15655456,15655648,15655918,15657248,15657980,15658016,15659506,15724267,15724773,15724776,15724782,15786210,15787492,15856352,15856354,15856360,15859488,15918571,15920672,15920880,15924256,16249582,16512288]}name(){return"windows-1251"}language(){return"ru"}};ce.windows_1251=u0;var l0=class extends ct{byteMap(){return[32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,0,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,97,98,99,100,101,102,103,104,105,106,107,108,109,110,111,112,113,114,115,116,117,118,119,120,121,122,32,32,32,32,32,32,97,98,99,100,101,102,103,104,105,106,107,108,109,110,111,112,113,114,115,116,117,118,119,120,121,122,32,32,32,32,32,32,129,32,131,32,32,32,32,136,32,138,32,156,141,142,143,144,32,32,32,32,32,32,32,152,32,154,32,156,32,32,159,32,32,32,32,32,32,32,32,32,32,170,32,32,32,32,32,32,32,32,32,32,181,32,32,32,32,32,32,32,32,32,32,192,193,194,195,196,197,198,199,200,201,202,203,204,205,206,207,208,209,210,211,212,213,214,32,216,217,218,219,220,221,222,223,224,225,226,227,228,229,230,231,232,233,234,235,236,237,238,239,32,32,32,32,244,32,32,32,32,249,32,251,252,32,32,255]}ngrams(){return[2148321,2148324,2148551,2153185,2153965,2154977,2155492,2156231,13050055,13091104,13093408,13095200,13099296,13099459,13099463,13099464,13099466,13099468,13099469,13099471,13099475,13099482,13099486,13099491,13099494,13099501,13099808,13100064,13100234,13115591,13181127,13181149,13181153,13181155,13181158,13246663,13574343,13617440,13705415,13748512,13836487,14295239,14344684,14544160,14753991,14797088,14806048,14806304,14885063,14927648,14928160,14935072,14950599,15016135,15058720,15124449,15131680,15474887,15540423,15540451,15540454,15583520,15585568,15590432]}name(){return"windows-1256"}language(){return"ar"}};ce.windows_1256=l0;var d0=class extends ct{match(e){return e.inputBytes.some(n=>n>=128)?super.match(e):null}byteMap(){let e=new Array(256).fill(32);e[39]=0;for(let n=65;n<=90;n++)e[n]=n+32;for(let n=97;n<=122;n++)e[n]=n;e[142]=142,e[168]=e[184]=184,e[170]=e[186]=186,e[175]=e[191]=191,e[181]=181;for(let n=192;n<=214;n++)e[n]=n+32;for(let n=216;n<=222;n++)e[n]=n+32;e[223]=223;for(let n=224;n<=246;n++)e[n]=n;for(let n=248;n<=254;n++)e[n]=n;return e}ngrams(){return[new Oe("et",[2122090,2122098,2123109,2124135,2124385,2124641,2124645,2124649,2124655,2124661,2124897,2125417,2125678,2126441,2126693,2126949,6365281,6365290,6365291,6365292,6382112,6382624,6384499,6386549,6386785,6387297,6561908,6578464,6583667,6627435,6627443,6645100,6645107,6646816,6646885,6646900,6648608,6648692,6889579,6906912,6910570,6910752,6971680,7037299,7038309,7039346,7040879,7041893,7041908,7104875,7107616,7544929,7544939,7562528,7562604,7566437,7566441,7566708,7627115,7627124,7629088,7697184,7697253,7697505]),new Oe("lv",[2122098,2122601,2122849,2124146,2124154,2124897,2125282,2125921,2125938,2126433,2126689,2126699,2126949,2127214,2127457,6365289,6365301,6365302,6382185,6383904,6384499,6384751,6385778,6386293,6386464,6386806,6449509,6452512,6515052,6515060,6578464,6578546,6583584,6584864,6644850,6646123,6646643,6647393,6648608,6680693,6889577,6907236,6907376,6908642,6909046,7041908,7102836,7106404,7233824,7300193,7496043,7501166,7544947,7544949,7544950,7566453,7566574,7632160,7632489,7676022,7695904,7697184,7758188,14840608]),new Oe("lt",[2122089,2122341,2124146,2124641,2124905,2125167,2126433,2126689,2126699,2126709,2126945,2126949,2126965,2127457,2127465,6365300,6365424,6383904,6383988,6384112,6384738,6384993,6385268,6386274,6386292,6386976,6387050,6418553,6447392,6448489,6448494,6647401,6648949,6889569,6889577,6889579,6889581,6906217,6907246,6907252,6909543,6910496,6910752,6942827,6971757,6972704,7037289,7037292,7103073,7104869,7170419,7171947,7269152,7301733,7302009,7303968,7496176,7544937,7544939,7544950,7564129,7629088,7632246,7957356])]}name(){return"windows-1257"}};ce.windows_1257=d0;var f0=class extends ct{match(e){return e.inputBytes.some(n=>n>=128)?super.match(e):null}byteMap(){let e=new Array(256).fill(32);e[39]=0;for(let n=65;n<=90;n++)e[n]=n+32;for(let n=97;n<=122;n++)e[n]=n;e[131]=131,e[136]=136,e[140]=e[156]=156,e[159]=255,e[170]=170,e[181]=181,e[186]=186;for(let n=192;n<=203;n++)e[n]=n+32;e[204]=204;for(let n=205;n<=209;n++)e[n]=n+32;e[210]=210;for(let n=211;n<=214;n++)e[n]=n+32;for(let n=216;n<=221;n++)e[n]=n+32;e[222]=222,e[223]=223;for(let n=224;n<=246;n++)e[n]=n;for(let n=248;n<=253;n++)e[n]=n;return e[255]=255,e}ngrams(){return[2122600,2122721,2123625,2123887,2125415,2125928,2126952,2126953,2126962,2127465,2127584,6419060,6496355,6496374,6514720,6514925,6545763,6758504,6758510,6758516,6758518,6812782,6815198,6815221,6824052,6844402,6876526,6889582,6889588,6941394,6941420,6941426,7217251,7217262,7217268,7235360,7235572,7235581,7235616,7302759,7336547,7610483,7629053,7629290,7631471,7676020,7760362,7790624,13396256,13397607,14557288,14771048,15395950,15397492,15494759,15496224,15560296,15885088,15886624,15887904,15889440,16018976,16108649,16643532]}name(){return"windows-1258"}language(){return"vi"}};ce.windows_1258=f0;var p0=class extends ct{byteMap(){let e=new Array(256).fill(32);e[39]=0;for(let n=65;n<=90;n++)e[n]=n+32;for(let n=97;n<=122;n++)e[n]=n;for(let n=161;n<=218;n++)e[n]=n;for(let n=223;n<=251;n++)e[n]=n;return e}ngrams(){return[2138578,2138856,2146514,2148291,2154949,10604985,10605251,10669479,10671554,10799058,11064263,11195847,11200960,11200995,11910083,12042976,12042979,12047848,12132544,12165586,12173522,12305360,12314553,12636873,12828960,12829619,12829633,12832936,12832994,12837026,13091779,13095353,13095617,13096117,13226679,13226724,13293544,13477063,13674707,13689538,13744416,13805473,13812171,13812452,13812512,13812704,13814226,13821111,13879249,13940155,14009017,14010324,14149837,14721749,14728167,14796240,14860964,14920425,14924193,14989250,15258279,15262634,15319250,15328185]}name(){return"windows-874"}language(){return"th"}};ce.windows_874=p0;var h0=class extends ct{byteMap(){return[32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,0,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,97,98,99,100,101,102,103,104,105,106,107,108,109,110,111,112,113,114,115,116,117,118,119,120,121,122,32,32,32,32,32,32,97,98,99,100,101,102,103,104,105,106,107,108,109,110,111,112,113,114,115,116,117,118,119,120,121,122,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,163,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,163,32,32,32,32,32,32,32,32,32,32,32,32,192,193,194,195,196,197,198,199,200,201,202,203,204,205,206,207,208,209,210,211,212,213,214,215,216,217,218,219,220,221,222,223,192,193,194,195,196,197,198,199,200,201,202,203,204,205,206,207,208,209,210,211,212,213,214,215,216,217,218,219,220,221,222,223]}ngrams(){return[2147535,2148640,2149313,2149327,2150081,2150085,2150338,2150607,2150610,2151105,2151375,2151380,2151631,2152224,2152399,2153153,2153684,2154196,12701385,12702936,12963032,12963529,12964820,12964896,13094688,13181136,13223200,13224224,13226272,13419982,13420832,13424846,13549856,13550880,13552069,13552081,13553440,13553623,13574352,13574355,13574359,13617103,13617696,13618392,13618464,13620180,13621024,13621185,13684684,13685445,13685449,13685455,13812183,13813188,13881632,13882561,13882569,13882583,13944268,13946656,13946834,13948960,14272544,14603471]}name(){return"KOI8-R"}language(){return"ru"}};ce.KOI8_R=h0});var Qm=g(gn=>{"use strict";var vk=gn&&gn.__importDefault||function(t){return t&&t.__esModule?t:{default:t}};Object.defineProperty(gn,"__esModule",{value:!0});gn.ISO_2022_CN=gn.ISO_2022_KR=gn.ISO_2022_JP=void 0;var Lk=vk(Jr()),Hi=class{constructor(){this.escapeSequences=[]}name(){return"ISO_2022"}match(e){let n,r,s,i=0,o=0,a=0,c,u=e.inputBytes,d=e.inputLen;e:for(n=0;n<d;n++){if(u[n]==27){t:for(s=0;s<this.escapeSequences.length;s++){let l=this.escapeSequences[s];if(d-n<l.length)continue t;for(r=1;r<l.length;r++)if(l[r]!=u[n+r])continue t;i++,n+=l.length-1;continue e}o++}(u[n]==14||u[n]==15)&&a++}return i==0?null:(c=(100*i-100*o)/(i+o),i+a<5&&(c-=(5-(i+a))*10),c<=0?null:(0,Lk.default)(e,this,c))}},_0=class extends Hi{constructor(){super(...arguments),this.escapeSequences=[[27,36,40,67],[27,36,40,68],[27,36,64],[27,36,65],[27,36,66],[27,38,64],[27,40,66],[27,40,72],[27,40,73],[27,40,74],[27,46,65],[27,46,70]]}name(){return"ISO-2022-JP"}language(){return"ja"}};gn.ISO_2022_JP=_0;var m0=class extends Hi{constructor(){super(...arguments),this.escapeSequences=[[27,36,41,67]]}name(){return"ISO-2022-KR"}language(){return"kr"}};gn.ISO_2022_KR=m0;var x0=class extends Hi{constructor(){super(...arguments),this.escapeSequences=[[27,36,41,65],[27,36,41,71],[27,36,42,72],[27,36,41,69],[27,36,43,73],[27,36,43,74],[27,36,43,75],[27,36,43,76],[27,36,43,77],[27,78],[27,79]]}name(){return"ISO-2022-CN"}language(){return"zh"}};gn.ISO_2022_CN=x0});var Zm=g(Oa=>{"use strict";Object.defineProperty(Oa,"__esModule",{value:!0});Oa.isByteArray=void 0;var Ck=t=>t==null||typeof t!="object"?!1:isFinite(t.length)&&t.length>=0;Oa.isByteArray=Ck});var tx=g(_e=>{"use strict";var kk=_e&&_e.__createBinding||(Object.create?(function(t,e,n,r){r===void 0&&(r=n);var s=Object.getOwnPropertyDescriptor(e,n);(!s||("get"in s?!e.__esModule:s.writable||s.configurable))&&(s={enumerable:!0,get:function(){return e[n]}}),Object.defineProperty(t,r,s)}):(function(t,e,n,r){r===void 0&&(r=n),t[r]=e[n]})),Rk=_e&&_e.__setModuleDefault||(Object.create?(function(t,e){Object.defineProperty(t,"default",{enumerable:!0,value:e})}):function(t,e){t.default=e}),Pa=_e&&_e.__importStar||(function(){var t=function(e){return t=Object.getOwnPropertyNames||function(n){var r=[];for(var s in n)Object.prototype.hasOwnProperty.call(n,s)&&(r[r.length]=s);return r},t(e)};return function(e){if(e&&e.__esModule)return e;var n={};if(e!=null)for(var r=t(e),s=0;s<r.length;s++)r[s]!=="default"&&kk(n,e,r[s]);return Rk(n,e),n}})(),E0=_e&&_e.__importDefault||function(t){return t&&t.__esModule?t:{default:t}};Object.defineProperty(_e,"__esModule",{value:!0});_e.detectFileSync=_e.detectFile=_e.analyse=_e.detect=void 0;var ex=E0(Km()),Nk=E0(Wm()),Ik=E0(Hm()),Da=Pa(Vm()),Vi=Pa(zm()),Ct=Pa(Xm()),g0=Pa(Qm()),Ok=Zm(),Dk=[new Ik.default,new Da.UTF_16BE,new Da.UTF_16LE,new Da.UTF_32BE,new Da.UTF_32LE,new Vi.sjis,new Vi.big5,new Vi.euc_jp,new Vi.euc_kr,new Vi.gb_18030,new g0.ISO_2022_JP,new g0.ISO_2022_KR,new g0.ISO_2022_CN,new Ct.ISO_8859_1,new Ct.ISO_8859_2,new Ct.ISO_8859_5,new Ct.ISO_8859_6,new Ct.ISO_8859_7,new Ct.ISO_8859_8,new Ct.ISO_8859_9,new Ct.windows_1251,new Ct.windows_1256,new Ct.windows_1257,new Ct.windows_1258,new Ct.windows_874,new Ct.KOI8_R,new Nk.default],Pk=t=>{let e=(0,_e.analyse)(t);return e.length>0?e[0].name:null};_e.detect=Pk;var Mk=t=>{if(!(0,Ok.isByteArray)(t))throw new Error("Input must be a byte array, e.g. Buffer or Uint8Array");let e=[];for(let i=0;i<256;i++)e[i]=0;for(let i=t.length-1;i>=0;i--)e[t[i]&255]++;let n=!1;for(let i=128;i<=159;i+=1)if(e[i]!==0){n=!0;break}let r={byteStats:e,c1Bytes:n,rawInput:t,rawLen:t.length,inputBytes:t,inputLen:t.length};return Dk.map(i=>i.match(r)).filter(i=>!!i).sort((i,o)=>o.confidence-i.confidence)};_e.analyse=Mk;var Bk=(t,e={})=>new Promise((n,r)=>{let s,i=(0,ex.default)(),o=(c,u)=>{s&&i.closeSync(s),c?r(c):u?n((0,_e.detect)(u)):r(new Error("No error and no buffer received"))},a=e?.sampleSize||0;if(a>0){s=i.openSync(t,"r");let c=Buffer.allocUnsafe(a);i.read(s,c,0,a,e.offset,(u,d)=>{u?o(u,null):(d<a&&(c=c.subarray(0,d)),o(null,c))});return}i.readFile(t,o)});_e.detectFile=Bk;var Uk=(t,e={})=>{let n=(0,ex.default)();if(e&&e.sampleSize){let r=n.openSync(t,"r"),s=Buffer.allocUnsafe(e.sampleSize),i=n.readSync(r,s,0,e.sampleSize,e.offset);return i<e.sampleSize&&(s=s.subarray(0,i)),n.closeSync(r),(0,_e.detect)(s)}return(0,_e.detect)(n.readFileSync(t))};_e.detectFileSync=Uk;_e.default={analyse:_e.analyse,detect:_e.detect,detectFileSync:_e.detectFileSync,detectFile:_e.detectFile}});var Gn=g((dK,nx)=>{"use strict";var Ma=require("buffer"),Us=Ma.Buffer,Gt={},Wt;for(Wt in Ma)Ma.hasOwnProperty(Wt)&&(Wt==="SlowBuffer"||Wt==="Buffer"||(Gt[Wt]=Ma[Wt]));var js=Gt.Buffer={};for(Wt in Us)Us.hasOwnProperty(Wt)&&(Wt==="allocUnsafe"||Wt==="allocUnsafeSlow"||(js[Wt]=Us[Wt]));Gt.Buffer.prototype=Us.prototype;(!js.from||js.from===Uint8Array.from)&&(js.from=function(t,e,n){if(typeof t=="number")throw new TypeError('The "value" argument must not be of type number. Received type '+typeof t);if(t&&typeof t.length>"u")throw new TypeError("The first argument must be one of type string, Buffer, ArrayBuffer, Array, or Array-like Object. Received type "+typeof t);return Us(t,e,n)});js.alloc||(js.alloc=function(t,e,n){if(typeof t!="number")throw new TypeError('The "size" argument must be of type number. Received type '+typeof t);if(t<0||t>=2*(1<<30))throw new RangeError('The value "'+t+'" is invalid for option "size"');var r=Us(t);return!e||e.length===0?r.fill(0):typeof n=="string"?r.fill(e,n):r.fill(e),r});if(!Gt.kStringMaxLength)try{Gt.kStringMaxLength=process.binding("buffer").kStringMaxLength}catch{}Gt.constants||(Gt.constants={MAX_LENGTH:Gt.kMaxLength},Gt.kStringMaxLength&&(Gt.constants.MAX_STRING_LENGTH=Gt.kStringMaxLength));nx.exports=Gt});var sx=g(S0=>{"use strict";var rx="\uFEFF";S0.PrependBOM=y0;function y0(t,e){this.encoder=t,this.addBOM=!0}y0.prototype.write=function(t){return this.addBOM&&(t=rx+t,this.addBOM=!1),this.encoder.write(t)};y0.prototype.end=function(){return this.encoder.end()};S0.StripBOM=b0;function b0(t,e){this.decoder=t,this.pass=!1,this.options=e||{}}b0.prototype.write=function(t){var e=this.decoder.write(t);return this.pass||!e||(e[0]===rx&&(e=e.slice(1),typeof this.options.stripBOM=="function"&&this.options.stripBOM()),this.pass=!0),e};b0.prototype.end=function(){return this.decoder.end()}});var T0=g((pK,ix)=>{"use strict";var jk=typeof Object.hasOwn>"u"?Function.call.bind(Object.prototype.hasOwnProperty):Object.hasOwn;function $k(t,e){for(var n in e)jk(e,n)&&(t[n]=e[n])}ix.exports=$k});var ax=g((hK,ox)=>{"use strict";var Wn=Gn().Buffer;ox.exports={utf8:{type:"_internal",bomAware:!0},cesu8:{type:"_internal",bomAware:!0},unicode11utf8:"utf8",ucs2:{type:"_internal",bomAware:!0},utf16le:"ucs2",binary:{type:"_internal"},base64:{type:"_internal"},hex:{type:"_internal"},_internal:A0};function A0(t,e){this.enc=t.encodingName,this.bomAware=t.bomAware,this.enc==="base64"?this.encoder=L0:this.enc==="utf8"?this.encoder=R0:this.enc==="cesu8"&&(this.enc="utf8",this.encoder=C0,Wn.from("eda0bdedb2a9","hex").toString()!=="\u{1F4A9}"&&(this.decoder=k0,this.defaultCharUnicode=e.defaultCharUnicode))}A0.prototype.encoder=v0;A0.prototype.decoder=w0;var Fk=require("string_decoder").StringDecoder;function w0(t,e){this.decoder=new Fk(e.enc)}w0.prototype.write=function(t){return Wn.isBuffer(t)||(t=Wn.from(t)),this.decoder.write(t)};w0.prototype.end=function(){return this.decoder.end()};function v0(t,e){this.enc=e.enc}v0.prototype.write=function(t){return Wn.from(t,this.enc)};v0.prototype.end=function(){};function L0(t,e){this.prevStr=""}L0.prototype.write=function(t){t=this.prevStr+t;var e=t.length-t.length%4;return this.prevStr=t.slice(e),t=t.slice(0,e),Wn.from(t,"base64")};L0.prototype.end=function(){return Wn.from(this.prevStr,"base64")};function C0(t,e){}C0.prototype.write=function(t){for(var e=Wn.alloc(t.length*3),n=0,r=0;r<t.length;r++){var s=t.charCodeAt(r);s<128?e[n++]=s:s<2048?(e[n++]=192+(s>>>6),e[n++]=128+(s&63)):(e[n++]=224+(s>>>12),e[n++]=128+(s>>>6&63),e[n++]=128+(s&63))}return e.slice(0,n)};C0.prototype.end=function(){};function k0(t,e){this.acc=0,this.contBytes=0,this.accBytes=0,this.defaultCharUnicode=e.defaultCharUnicode}k0.prototype.write=function(t){for(var e=this.acc,n=this.contBytes,r=this.accBytes,s="",i=0;i<t.length;i++){var o=t[i];(o&192)!==128?(n>0&&(s+=this.defaultCharUnicode,n=0),o<128?s+=String.fromCharCode(o):o<224?(e=o&31,n=1,r=1):o<240?(e=o&15,n=2,r=1):s+=this.defaultCharUnicode):n>0?(e=e<<6|o&63,n--,r++,n===0&&(r===2&&e<128&&e>0?s+=this.defaultCharUnicode:r===3&&e<2048?s+=this.defaultCharUnicode:s+=String.fromCharCode(e))):s+=this.defaultCharUnicode}return this.acc=e,this.contBytes=n,this.accBytes=r,s};k0.prototype.end=function(){var t=0;return this.contBytes>0&&(t+=this.defaultCharUnicode),t};function R0(t,e){this.highSurrogate=""}R0.prototype.write=function(t){if(this.highSurrogate&&(t=this.highSurrogate+t,this.highSurrogate=""),t.length>0){var e=t.charCodeAt(t.length-1);e>=55296&&e<56320&&(this.highSurrogate=t[t.length-1],t=t.slice(0,t.length-1))}return Wn.from(t,this.enc)};R0.prototype.end=function(){if(this.highSurrogate){var t=this.highSurrogate;return this.highSurrogate="",Wn.from(t,this.enc)}}});var lx=g(xr=>{"use strict";var Ba=Gn().Buffer;xr._utf32=N0;function N0(t,e){this.iconv=e,this.bomAware=!0,this.isLE=t.isLE}xr.utf32le={type:"_utf32",isLE:!0};xr.utf32be={type:"_utf32",isLE:!1};xr.ucs4le="utf32le";xr.ucs4be="utf32be";N0.prototype.encoder=I0;N0.prototype.decoder=O0;function I0(t,e){this.isLE=e.isLE,this.highSurrogate=0}I0.prototype.write=function(t){for(var e=Ba.from(t,"ucs2"),n=Ba.alloc(e.length*2+4),r=this.isLE?n.writeUInt32LE:n.writeUInt32BE,s=0,i=0;i<e.length;i+=2){var o=e.readUInt16LE(i),a=o>=55296&&o<56320,c=o>=56320&&o<57344;if(this.highSurrogate)if(a||!c)r.call(n,this.highSurrogate,s),s+=4;else{var u=(this.highSurrogate-55296<<10|o-56320)+65536;r.call(n,u,s),s+=4,this.highSurrogate=0;continue}a?this.highSurrogate=o:(r.call(n,o,s),s+=4,this.highSurrogate=0)}return s<n.length&&(n=n.slice(0,s)),n};I0.prototype.end=function(){if(this.highSurrogate){var t=Ba.alloc(4);return this.isLE?t.writeUInt32LE(this.highSurrogate,0):t.writeUInt32BE(this.highSurrogate,0),this.highSurrogate=0,t}};function O0(t,e){this.isLE=e.isLE,this.badChar=e.iconv.defaultCharUnicode.charCodeAt(0),this.overflow=[]}O0.prototype.write=function(t){if(t.length===0)return"";var e=0,n=0,r=Ba.alloc(t.length+4),s=0,i=this.isLE,o=this.overflow,a=this.badChar;if(o.length>0){for(;e<t.length&&o.length<4;e++)o.push(t[e]);o.length===4&&(i?n=o[0]|o[1]<<8|o[2]<<16|o[3]<<24:n=o[3]|o[2]<<8|o[1]<<16|o[0]<<24,o.length=0,s=cx(r,s,n,a))}for(;e<t.length-3;e+=4)i?n=t[e]|t[e+1]<<8|t[e+2]<<16|t[e+3]<<24:n=t[e+3]|t[e+2]<<8|t[e+1]<<16|t[e]<<24,s=cx(r,s,n,a);for(;e<t.length;e++)o.push(t[e]);return r.slice(0,s).toString("ucs2")};function cx(t,e,n,r){if((n<0||n>1114111)&&(n=r),n>=65536){n-=65536;var s=55296|n>>10;t[e++]=s&255,t[e++]=s>>8;var n=56320|n&1023}return t[e++]=n&255,t[e++]=n>>8,e}O0.prototype.end=function(){if(this.overflow.length!==0)return this.overflow.length=0,String.fromCharCode(this.badChar)};xr.utf32=D0;xr.ucs4="utf32";function D0(t,e){this.iconv=e}D0.prototype.encoder=P0;D0.prototype.decoder=M0;function P0(t,e){t=t||{},t.addBOM===void 0&&(t.addBOM=!0),this.encoder=e.iconv.getEncoder(t.defaultEncoding||"utf-32le",t)}P0.prototype.write=function(t){return this.encoder.write(t)};P0.prototype.end=function(){return this.encoder.end()};function M0(t,e){this.decoder=null,this.initialBufs=[],this.initialBufsLen=0,this.options=t||{},this.iconv=e.iconv}M0.prototype.write=function(t){if(!this.decoder){if(this.initialBufs.push(t),this.initialBufsLen+=t.length,this.initialBufsLen<32)return"";var e=ux(this.initialBufs,this.options.defaultEncoding);this.decoder=this.iconv.getDecoder(e,this.options);for(var n="",r=0;r<this.initialBufs.length;r++)n+=this.decoder.write(this.initialBufs[r]);return this.initialBufs.length=this.initialBufsLen=0,n}return this.decoder.write(t)};M0.prototype.end=function(){if(!this.decoder){var t=ux(this.initialBufs,this.options.defaultEncoding);this.decoder=this.iconv.getDecoder(t,this.options);for(var e="",n=0;n<this.initialBufs.length;n++)e+=this.decoder.write(this.initialBufs[n]);var r=this.decoder.end();return r&&(e+=r),this.initialBufs.length=this.initialBufsLen=0,e}return this.decoder.end()};function ux(t,e){var n=[],r=0,s=0,i=0,o=0,a=0;e:for(var c=0;c<t.length;c++)for(var u=t[c],d=0;d<u.length;d++)if(n.push(u[d]),n.length===4){if(r===0){if(n[0]===255&&n[1]===254&&n[2]===0&&n[3]===0)return"utf-32le";if(n[0]===0&&n[1]===0&&n[2]===254&&n[3]===255)return"utf-32be"}if((n[0]!==0||n[1]>16)&&i++,(n[3]!==0||n[2]>16)&&s++,n[0]===0&&n[1]===0&&(n[2]!==0||n[3]!==0)&&a++,(n[0]!==0||n[1]!==0)&&n[2]===0&&n[3]===0&&o++,n.length=0,r++,r>=100)break e}return a-i>o-s?"utf-32be":a-i<o-s?"utf-32le":e||"utf-32le"}});var px=g(q0=>{"use strict";var dx=Gn().Buffer;q0.utf16be=Ua;function Ua(){}Ua.prototype.encoder=B0;Ua.prototype.decoder=U0;Ua.prototype.bomAware=!0;function B0(){}B0.prototype.write=function(t){for(var e=dx.from(t,"ucs2"),n=0;n<e.length;n+=2){var r=e[n];e[n]=e[n+1],e[n+1]=r}return e};B0.prototype.end=function(){};function U0(){this.overflowByte=-1}U0.prototype.write=function(t){if(t.length==0)return"";var e=dx.alloc(t.length+1),n=0,r=0;for(this.overflowByte!==-1&&(e[0]=t[0],e[1]=this.overflowByte,n=1,r=2);n<t.length-1;n+=2,r+=2)e[r]=t[n+1],e[r+1]=t[n];return this.overflowByte=n==t.length-1?t[t.length-1]:-1,e.slice(0,r).toString("ucs2")};U0.prototype.end=function(){this.overflowByte=-1};q0.utf16=j0;function j0(t,e){this.iconv=e}j0.prototype.encoder=$0;j0.prototype.decoder=F0;function $0(t,e){t=t||{},t.addBOM===void 0&&(t.addBOM=!0),this.encoder=e.iconv.getEncoder("utf-16le",t)}$0.prototype.write=function(t){return this.encoder.write(t)};$0.prototype.end=function(){return this.encoder.end()};function F0(t,e){this.decoder=null,this.initialBufs=[],this.initialBufsLen=0,this.options=t||{},this.iconv=e.iconv}F0.prototype.write=function(t){if(!this.decoder){if(this.initialBufs.push(t),this.initialBufsLen+=t.length,this.initialBufsLen<16)return"";var e=fx(this.initialBufs,this.options.defaultEncoding);this.decoder=this.iconv.getDecoder(e,this.options);for(var n="",r=0;r<this.initialBufs.length;r++)n+=this.decoder.write(this.initialBufs[r]);return this.initialBufs.length=this.initialBufsLen=0,n}return this.decoder.write(t)};F0.prototype.end=function(){if(!this.decoder){var t=fx(this.initialBufs,this.options.defaultEncoding);this.decoder=this.iconv.getDecoder(t,this.options);for(var e="",n=0;n<this.initialBufs.length;n++)e+=this.decoder.write(this.initialBufs[n]);var r=this.decoder.end();return r&&(e+=r),this.initialBufs.length=this.initialBufsLen=0,e}return this.decoder.end()};function fx(t,e){var n=[],r=0,s=0,i=0;e:for(var o=0;o<t.length;o++)for(var a=t[o],c=0;c<a.length;c++)if(n.push(a[c]),n.length===2){if(r===0){if(n[0]===255&&n[1]===254)return"utf-16le";if(n[0]===254&&n[1]===255)return"utf-16be"}if(n[0]===0&&n[1]!==0&&i++,n[0]!==0&&n[1]===0&&s++,n.length=0,r++,r>=100)break e}return i>s?"utf-16be":i<s?"utf-16le":e||"utf-16le"}});var _x=g(Fa=>{"use strict";var En=Gn().Buffer;Fa.utf7=ja;Fa.unicode11utf7="utf7";function ja(t,e){this.iconv=e}ja.prototype.encoder=G0;ja.prototype.decoder=W0;ja.prototype.bomAware=!0;var qk=/[^A-Za-z0-9'\(\),-\.\/:\? \n\r\t]+/g;function G0(t,e){this.iconv=e.iconv}G0.prototype.write=function(t){return En.from(t.replace(qk,function(e){return"+"+(e==="+"?"":this.iconv.encode(e,"utf16-be").toString("base64").replace(/=+$/,""))+"-"}.bind(this)))};G0.prototype.end=function(){};function W0(t,e){this.iconv=e.iconv,this.inBase64=!1,this.base64Accum=""}var Kk=/[A-Za-z0-9\/+]/,H0=[];for(Yi=0;Yi<256;Yi++)H0[Yi]=Kk.test(String.fromCharCode(Yi));var Yi,Gk=43,Qr=45,K0=38;W0.prototype.write=function(t){for(var e="",n=0,r=this.inBase64,s=this.base64Accum,i=0;i<t.length;i++)if(!r)t[i]==Gk&&(e+=this.iconv.decode(t.slice(n,i),"ascii"),n=i+1,r=!0);else if(!H0[t[i]]){if(i==n&&t[i]==Qr)e+="+";else{var o=s+this.iconv.decode(t.slice(n,i),"ascii");e+=this.iconv.decode(En.from(o,"base64"),"utf16-be")}t[i]!=Qr&&i--,n=i+1,r=!1,s=""}if(!r)e+=this.iconv.decode(t.slice(n),"ascii");else{var o=s+this.iconv.decode(t.slice(n),"ascii"),a=o.length-o.length%8;s=o.slice(a),o=o.slice(0,a),e+=this.iconv.decode(En.from(o,"base64"),"utf16-be")}return this.inBase64=r,this.base64Accum=s,e};W0.prototype.end=function(){var t="";return this.inBase64&&this.base64Accum.length>0&&(t=this.iconv.decode(En.from(this.base64Accum,"base64"),"utf16-be")),this.inBase64=!1,this.base64Accum="",t};Fa.utf7imap=$a;function $a(t,e){this.iconv=e}$a.prototype.encoder=V0;$a.prototype.decoder=Y0;$a.prototype.bomAware=!0;function V0(t,e){this.iconv=e.iconv,this.inBase64=!1,this.base64Accum=En.alloc(6),this.base64AccumIdx=0}V0.prototype.write=function(t){for(var e=this.inBase64,n=this.base64Accum,r=this.base64AccumIdx,s=En.alloc(t.length*5+10),i=0,o=0;o<t.length;o++){var a=t.charCodeAt(o);a>=32&&a<=126?(e&&(r>0&&(i+=s.write(n.slice(0,r).toString("base64").replace(/\//g,",").replace(/=+$/,""),i),r=0),s[i++]=Qr,e=!1),e||(s[i++]=a,a===K0&&(s[i++]=Qr))):(e||(s[i++]=K0,e=!0),e&&(n[r++]=a>>8,n[r++]=a&255,r==n.length&&(i+=s.write(n.toString("base64").replace(/\//g,","),i),r=0)))}return this.inBase64=e,this.base64AccumIdx=r,s.slice(0,i)};V0.prototype.end=function(){var t=En.alloc(10),e=0;return this.inBase64&&(this.base64AccumIdx>0&&(e+=t.write(this.base64Accum.slice(0,this.base64AccumIdx).toString("base64").replace(/\//g,",").replace(/=+$/,""),e),this.base64AccumIdx=0),t[e++]=Qr,this.inBase64=!1),t.slice(0,e)};function Y0(t,e){this.iconv=e.iconv,this.inBase64=!1,this.base64Accum=""}var hx=H0.slice();hx[44]=!0;Y0.prototype.write=function(t){for(var e="",n=0,r=this.inBase64,s=this.base64Accum,i=0;i<t.length;i++)if(!r)t[i]==K0&&(e+=this.iconv.decode(t.slice(n,i),"ascii"),n=i+1,r=!0);else if(!hx[t[i]]){if(i==n&&t[i]==Qr)e+="&";else{var o=s+this.iconv.decode(t.slice(n,i),"ascii").replace(/,/g,"/");e+=this.iconv.decode(En.from(o,"base64"),"utf16-be")}t[i]!=Qr&&i--,n=i+1,r=!1,s=""}if(!r)e+=this.iconv.decode(t.slice(n),"ascii");else{var o=s+this.iconv.decode(t.slice(n),"ascii").replace(/,/g,"/"),a=o.length-o.length%8;s=o.slice(a),o=o.slice(0,a),e+=this.iconv.decode(En.from(o,"base64"),"utf16-be")}return this.inBase64=r,this.base64Accum=s,e};Y0.prototype.end=function(){var t="";return this.inBase64&&this.base64Accum.length>0&&(t=this.iconv.decode(En.from(this.base64Accum,"base64"),"utf16-be")),this.inBase64=!1,this.base64Accum="",t}});var xx=g(mx=>{"use strict";var qa=Gn().Buffer;mx._sbcs=z0;function z0(t,e){if(!t)throw new Error("SBCS codec is called without the data.");if(!t.chars||t.chars.length!==128&&t.chars.length!==256)throw new Error("Encoding '"+t.type+"' has incorrect 'chars' (must be of len 128 or 256)");if(t.chars.length===128){for(var n="",r=0;r<128;r++)n+=String.fromCharCode(r);t.chars=n+t.chars}this.decodeBuf=qa.from(t.chars,"ucs2");for(var s=qa.alloc(65536,e.defaultCharSingleByte.charCodeAt(0)),r=0;r<t.chars.length;r++)s[t.chars.charCodeAt(r)]=r;this.encodeBuf=s}z0.prototype.encoder=J0;z0.prototype.decoder=X0;function J0(t,e){this.encodeBuf=e.encodeBuf}J0.prototype.write=function(t){for(var e=qa.alloc(t.length),n=0;n<t.length;n++)e[n]=this.encodeBuf[t.charCodeAt(n)];return e};J0.prototype.end=function(){};function X0(t,e){this.decodeBuf=e.decodeBuf}X0.prototype.write=function(t){for(var e=this.decodeBuf,n=qa.alloc(t.length*2),r=0,s=0,i=0;i<t.length;i++)r=t[i]*2,s=i*2,n[s]=e[r],n[s+1]=e[r+1];return n.toString("ucs2")};X0.prototype.end=function(){}});var Ex=g((EK,gx)=>{"use strict";gx.exports={10029:"maccenteuro",maccenteuro:{type:"_sbcs",chars:"\xC4\u0100\u0101\xC9\u0104\xD6\xDC\xE1\u0105\u010C\xE4\u010D\u0106\u0107\xE9\u0179\u017A\u010E\xED\u010F\u0112\u0113\u0116\xF3\u0117\xF4\xF6\xF5\xFA\u011A\u011B\xFC\u2020\xB0\u0118\xA3\xA7\u2022\xB6\xDF\xAE\xA9\u2122\u0119\xA8\u2260\u0123\u012E\u012F\u012A\u2264\u2265\u012B\u0136\u2202\u2211\u0142\u013B\u013C\u013D\u013E\u0139\u013A\u0145\u0146\u0143\xAC\u221A\u0144\u0147\u2206\xAB\xBB\u2026\xA0\u0148\u0150\xD5\u0151\u014C\u2013\u2014\u201C\u201D\u2018\u2019\xF7\u25CA\u014D\u0154\u0155\u0158\u2039\u203A\u0159\u0156\u0157\u0160\u201A\u201E\u0161\u015A\u015B\xC1\u0164\u0165\xCD\u017D\u017E\u016A\xD3\xD4\u016B\u016E\xDA\u016F\u0170\u0171\u0172\u0173\xDD\xFD\u0137\u017B\u0141\u017C\u0122\u02C7"},808:"cp808",ibm808:"cp808",cp808:{type:"_sbcs",chars:"\u0410\u0411\u0412\u0413\u0414\u0415\u0416\u0417\u0418\u0419\u041A\u041B\u041C\u041D\u041E\u041F\u0420\u0421\u0422\u0423\u0424\u0425\u0426\u0427\u0428\u0429\u042A\u042B\u042C\u042D\u042E\u042F\u0430\u0431\u0432\u0433\u0434\u0435\u0436\u0437\u0438\u0439\u043A\u043B\u043C\u043D\u043E\u043F\u2591\u2592\u2593\u2502\u2524\u2561\u2562\u2556\u2555\u2563\u2551\u2557\u255D\u255C\u255B\u2510\u2514\u2534\u252C\u251C\u2500\u253C\u255E\u255F\u255A\u2554\u2569\u2566\u2560\u2550\u256C\u2567\u2568\u2564\u2565\u2559\u2558\u2552\u2553\u256B\u256A\u2518\u250C\u2588\u2584\u258C\u2590\u2580\u0440\u0441\u0442\u0443\u0444\u0445\u0446\u0447\u0448\u0449\u044A\u044B\u044C\u044D\u044E\u044F\u0401\u0451\u0404\u0454\u0407\u0457\u040E\u045E\xB0\u2219\xB7\u221A\u2116\u20AC\u25A0\xA0"},mik:{type:"_sbcs",chars:"\u0410\u0411\u0412\u0413\u0414\u0415\u0416\u0417\u0418\u0419\u041A\u041B\u041C\u041D\u041E\u041F\u0420\u0421\u0422\u0423\u0424\u0425\u0426\u0427\u0428\u0429\u042A\u042B\u042C\u042D\u042E\u042F\u0430\u0431\u0432\u0433\u0434\u0435\u0436\u0437\u0438\u0439\u043A\u043B\u043C\u043D\u043E\u043F\u0440\u0441\u0442\u0443\u0444\u0445\u0446\u0447\u0448\u0449\u044A\u044B\u044C\u044D\u044E\u044F\u2514\u2534\u252C\u251C\u2500\u253C\u2563\u2551\u255A\u2554\u2569\u2566\u2560\u2550\u256C\u2510\u2591\u2592\u2593\u2502\u2524\u2116\xA7\u2557\u255D\u2518\u250C\u2588\u2584\u258C\u2590\u2580\u03B1\xDF\u0393\u03C0\u03A3\u03C3\xB5\u03C4\u03A6\u0398\u03A9\u03B4\u221E\u03C6\u03B5\u2229\u2261\xB1\u2265\u2264\u2320\u2321\xF7\u2248\xB0\u2219\xB7\u221A\u207F\xB2\u25A0\xA0"},cp720:{type:"_sbcs",chars:"\x80\x81\xE9\xE2\x84\xE0\x86\xE7\xEA\xEB\xE8\xEF\xEE\x8D\x8E\x8F\x90\u0651\u0652\xF4\xA4\u0640\xFB\xF9\u0621\u0622\u0623\u0624\xA3\u0625\u0626\u0627\u0628\u0629\u062A\u062B\u062C\u062D\u062E\u062F\u0630\u0631\u0632\u0633\u0634\u0635\xAB\xBB\u2591\u2592\u2593\u2502\u2524\u2561\u2562\u2556\u2555\u2563\u2551\u2557\u255D\u255C\u255B\u2510\u2514\u2534\u252C\u251C\u2500\u253C\u255E\u255F\u255A\u2554\u2569\u2566\u2560\u2550\u256C\u2567\u2568\u2564\u2565\u2559\u2558\u2552\u2553\u256B\u256A\u2518\u250C\u2588\u2584\u258C\u2590\u2580\u0636\u0637\u0638\u0639\u063A\u0641\xB5\u0642\u0643\u0644\u0645\u0646\u0647\u0648\u0649\u064A\u2261\u064B\u064C\u064D\u064E\u064F\u0650\u2248\xB0\u2219\xB7\u221A\u207F\xB2\u25A0\xA0"},ascii8bit:"ascii",usascii:"ascii",ansix34:"ascii",ansix341968:"ascii",ansix341986:"ascii",csascii:"ascii",cp367:"ascii",ibm367:"ascii",isoir6:"ascii",iso646us:"ascii",iso646irv:"ascii",us:"ascii",latin1:"iso88591",latin2:"iso88592",latin3:"iso88593",latin4:"iso88594",latin5:"iso88599",latin6:"iso885910",latin7:"iso885913",latin8:"iso885914",latin9:"iso885915",latin10:"iso885916",csisolatin1:"iso88591",csisolatin2:"iso88592",csisolatin3:"iso88593",csisolatin4:"iso88594",csisolatincyrillic:"iso88595",csisolatinarabic:"iso88596",csisolatingreek:"iso88597",csisolatinhebrew:"iso88598",csisolatin5:"iso88599",csisolatin6:"iso885910",l1:"iso88591",l2:"iso88592",l3:"iso88593",l4:"iso88594",l5:"iso88599",l6:"iso885910",l7:"iso885913",l8:"iso885914",l9:"iso885915",l10:"iso885916",isoir14:"iso646jp",isoir57:"iso646cn",isoir100:"iso88591",isoir101:"iso88592",isoir109:"iso88593",isoir110:"iso88594",isoir144:"iso88595",isoir127:"iso88596",isoir126:"iso88597",isoir138:"iso88598",isoir148:"iso88599",isoir157:"iso885910",isoir166:"tis620",isoir179:"iso885913",isoir199:"iso885914",isoir203:"iso885915",isoir226:"iso885916",cp819:"iso88591",ibm819:"iso88591",cyrillic:"iso88595",arabic:"iso88596",arabic8:"iso88596",ecma114:"iso88596",asmo708:"iso88596",greek:"iso88597",greek8:"iso88597",ecma118:"iso88597",elot928:"iso88597",hebrew:"iso88598",hebrew8:"iso88598",iso88598i:"iso88598",iso88598e:"iso88598",turkish:"iso88599",turkish8:"iso88599",thai:"iso885911",thai8:"iso885911",celtic:"iso885914",celtic8:"iso885914",isoceltic:"iso885914",tis6200:"tis620",tis62025291:"tis620",tis62025330:"tis620",1e4:"macroman",10006:"macgreek",10007:"maccyrillic",10079:"maciceland",10081:"macturkish",cspc8codepage437:"cp437",cspc775baltic:"cp775",cspc850multilingual:"cp850",cspcp852:"cp852",cspc862latinhebrew:"cp862",cpgr:"cp869",msee:"cp1250",mscyrl:"cp1251",msansi:"cp1252",msgreek:"cp1253",msturk:"cp1254",mshebr:"cp1255",msarab:"cp1256",winbaltrim:"cp1257",cp20866:"koi8r",20866:"koi8r",ibm878:"koi8r",cskoi8r:"koi8r",cp21866:"koi8u",21866:"koi8u",ibm1168:"koi8u",strk10482002:"rk1048",tcvn5712:"tcvn",tcvn57121:"tcvn",gb198880:"iso646cn",cn:"iso646cn",csiso14jisc6220ro:"iso646jp",jisc62201969ro:"iso646jp",jp:"iso646jp",cshproman8:"hproman8",r8:"hproman8",roman8:"hproman8",xroman8:"hproman8",ibm1051:"hproman8",mac:"macintosh",csmacintosh:"macintosh"}});var bx=g((yK,yx)=>{"use strict";yx.exports={437:"cp437",737:"cp737",775:"cp775",850:"cp850",852:"cp852",855:"cp855",856:"cp856",857:"cp857",858:"cp858",860:"cp860",861:"cp861",862:"cp862",863:"cp863",864:"cp864",865:"cp865",866:"cp866",869:"cp869",874:"windows874",922:"cp922",1046:"cp1046",1124:"cp1124",1125:"cp1125",1129:"cp1129",1133:"cp1133",1161:"cp1161",1162:"cp1162",1163:"cp1163",1250:"windows1250",1251:"windows1251",1252:"windows1252",1253:"windows1253",1254:"windows1254",1255:"windows1255",1256:"windows1256",1257:"windows1257",1258:"windows1258",28591:"iso88591",28592:"iso88592",28593:"iso88593",28594:"iso88594",28595:"iso88595",28596:"iso88596",28597:"iso88597",28598:"iso88598",28599:"iso88599",28600:"iso885910",28601:"iso885911",28603:"iso885913",28604:"iso885914",28605:"iso885915",28606:"iso885916",windows874:{type:"_sbcs",chars:"\u20AC\uFFFD\uFFFD\uFFFD\uFFFD\u2026\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\u2018\u2019\u201C\u201D\u2022\u2013\u2014\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\xA0\u0E01\u0E02\u0E03\u0E04\u0E05\u0E06\u0E07\u0E08\u0E09\u0E0A\u0E0B\u0E0C\u0E0D\u0E0E\u0E0F\u0E10\u0E11\u0E12\u0E13\u0E14\u0E15\u0E16\u0E17\u0E18\u0E19\u0E1A\u0E1B\u0E1C\u0E1D\u0E1E\u0E1F\u0E20\u0E21\u0E22\u0E23\u0E24\u0E25\u0E26\u0E27\u0E28\u0E29\u0E2A\u0E2B\u0E2C\u0E2D\u0E2E\u0E2F\u0E30\u0E31\u0E32\u0E33\u0E34\u0E35\u0E36\u0E37\u0E38\u0E39\u0E3A\uFFFD\uFFFD\uFFFD\uFFFD\u0E3F\u0E40\u0E41\u0E42\u0E43\u0E44\u0E45\u0E46\u0E47\u0E48\u0E49\u0E4A\u0E4B\u0E4C\u0E4D\u0E4E\u0E4F\u0E50\u0E51\u0E52\u0E53\u0E54\u0E55\u0E56\u0E57\u0E58\u0E59\u0E5A\u0E5B\uFFFD\uFFFD\uFFFD\uFFFD"},win874:"windows874",cp874:"windows874",windows1250:{type:"_sbcs",chars:"\u20AC\uFFFD\u201A\uFFFD\u201E\u2026\u2020\u2021\uFFFD\u2030\u0160\u2039\u015A\u0164\u017D\u0179\uFFFD\u2018\u2019\u201C\u201D\u2022\u2013\u2014\uFFFD\u2122\u0161\u203A\u015B\u0165\u017E\u017A\xA0\u02C7\u02D8\u0141\xA4\u0104\xA6\xA7\xA8\xA9\u015E\xAB\xAC\xAD\xAE\u017B\xB0\xB1\u02DB\u0142\xB4\xB5\xB6\xB7\xB8\u0105\u015F\xBB\u013D\u02DD\u013E\u017C\u0154\xC1\xC2\u0102\xC4\u0139\u0106\xC7\u010C\xC9\u0118\xCB\u011A\xCD\xCE\u010E\u0110\u0143\u0147\xD3\xD4\u0150\xD6\xD7\u0158\u016E\xDA\u0170\xDC\xDD\u0162\xDF\u0155\xE1\xE2\u0103\xE4\u013A\u0107\xE7\u010D\xE9\u0119\xEB\u011B\xED\xEE\u010F\u0111\u0144\u0148\xF3\xF4\u0151\xF6\xF7\u0159\u016F\xFA\u0171\xFC\xFD\u0163\u02D9"},win1250:"windows1250",cp1250:"windows1250",windows1251:{type:"_sbcs",chars:"\u0402\u0403\u201A\u0453\u201E\u2026\u2020\u2021\u20AC\u2030\u0409\u2039\u040A\u040C\u040B\u040F\u0452\u2018\u2019\u201C\u201D\u2022\u2013\u2014\uFFFD\u2122\u0459\u203A\u045A\u045C\u045B\u045F\xA0\u040E\u045E\u0408\xA4\u0490\xA6\xA7\u0401\xA9\u0404\xAB\xAC\xAD\xAE\u0407\xB0\xB1\u0406\u0456\u0491\xB5\xB6\xB7\u0451\u2116\u0454\xBB\u0458\u0405\u0455\u0457\u0410\u0411\u0412\u0413\u0414\u0415\u0416\u0417\u0418\u0419\u041A\u041B\u041C\u041D\u041E\u041F\u0420\u0421\u0422\u0423\u0424\u0425\u0426\u0427\u0428\u0429\u042A\u042B\u042C\u042D\u042E\u042F\u0430\u0431\u0432\u0433\u0434\u0435\u0436\u0437\u0438\u0439\u043A\u043B\u043C\u043D\u043E\u043F\u0440\u0441\u0442\u0443\u0444\u0445\u0446\u0447\u0448\u0449\u044A\u044B\u044C\u044D\u044E\u044F"},win1251:"windows1251",cp1251:"windows1251",windows1252:{type:"_sbcs",chars:"\u20AC\uFFFD\u201A\u0192\u201E\u2026\u2020\u2021\u02C6\u2030\u0160\u2039\u0152\uFFFD\u017D\uFFFD\uFFFD\u2018\u2019\u201C\u201D\u2022\u2013\u2014\u02DC\u2122\u0161\u203A\u0153\uFFFD\u017E\u0178\xA0\xA1\xA2\xA3\xA4\xA5\xA6\xA7\xA8\xA9\xAA\xAB\xAC\xAD\xAE\xAF\xB0\xB1\xB2\xB3\xB4\xB5\xB6\xB7\xB8\xB9\xBA\xBB\xBC\xBD\xBE\xBF\xC0\xC1\xC2\xC3\xC4\xC5\xC6\xC7\xC8\xC9\xCA\xCB\xCC\xCD\xCE\xCF\xD0\xD1\xD2\xD3\xD4\xD5\xD6\xD7\xD8\xD9\xDA\xDB\xDC\xDD\xDE\xDF\xE0\xE1\xE2\xE3\xE4\xE5\xE6\xE7\xE8\xE9\xEA\xEB\xEC\xED\xEE\xEF\xF0\xF1\xF2\xF3\xF4\xF5\xF6\xF7\xF8\xF9\xFA\xFB\xFC\xFD\xFE\xFF"},win1252:"windows1252",cp1252:"windows1252",windows1253:{type:"_sbcs",chars:"\u20AC\uFFFD\u201A\u0192\u201E\u2026\u2020\u2021\uFFFD\u2030\uFFFD\u2039\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\u2018\u2019\u201C\u201D\u2022\u2013\u2014\uFFFD\u2122\uFFFD\u203A\uFFFD\uFFFD\uFFFD\uFFFD\xA0\u0385\u0386\xA3\xA4\xA5\xA6\xA7\xA8\xA9\uFFFD\xAB\xAC\xAD\xAE\u2015\xB0\xB1\xB2\xB3\u0384\xB5\xB6\xB7\u0388\u0389\u038A\xBB\u038C\xBD\u038E\u038F\u0390\u0391\u0392\u0393\u0394\u0395\u0396\u0397\u0398\u0399\u039A\u039B\u039C\u039D\u039E\u039F\u03A0\u03A1\uFFFD\u03A3\u03A4\u03A5\u03A6\u03A7\u03A8\u03A9\u03AA\u03AB\u03AC\u03AD\u03AE\u03AF\u03B0\u03B1\u03B2\u03B3\u03B4\u03B5\u03B6\u03B7\u03B8\u03B9\u03BA\u03BB\u03BC\u03BD\u03BE\u03BF\u03C0\u03C1\u03C2\u03C3\u03C4\u03C5\u03C6\u03C7\u03C8\u03C9\u03CA\u03CB\u03CC\u03CD\u03CE\uFFFD"},win1253:"windows1253",cp1253:"windows1253",windows1254:{type:"_sbcs",chars:"\u20AC\uFFFD\u201A\u0192\u201E\u2026\u2020\u2021\u02C6\u2030\u0160\u2039\u0152\uFFFD\uFFFD\uFFFD\uFFFD\u2018\u2019\u201C\u201D\u2022\u2013\u2014\u02DC\u2122\u0161\u203A\u0153\uFFFD\uFFFD\u0178\xA0\xA1\xA2\xA3\xA4\xA5\xA6\xA7\xA8\xA9\xAA\xAB\xAC\xAD\xAE\xAF\xB0\xB1\xB2\xB3\xB4\xB5\xB6\xB7\xB8\xB9\xBA\xBB\xBC\xBD\xBE\xBF\xC0\xC1\xC2\xC3\xC4\xC5\xC6\xC7\xC8\xC9\xCA\xCB\xCC\xCD\xCE\xCF\u011E\xD1\xD2\xD3\xD4\xD5\xD6\xD7\xD8\xD9\xDA\xDB\xDC\u0130\u015E\xDF\xE0\xE1\xE2\xE3\xE4\xE5\xE6\xE7\xE8\xE9\xEA\xEB\xEC\xED\xEE\xEF\u011F\xF1\xF2\xF3\xF4\xF5\xF6\xF7\xF8\xF9\xFA\xFB\xFC\u0131\u015F\xFF"},win1254:"windows1254",cp1254:"windows1254",windows1255:{type:"_sbcs",chars:"\u20AC\uFFFD\u201A\u0192\u201E\u2026\u2020\u2021\u02C6\u2030\uFFFD\u2039\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\u2018\u2019\u201C\u201D\u2022\u2013\u2014\u02DC\u2122\uFFFD\u203A\uFFFD\uFFFD\uFFFD\uFFFD\xA0\xA1\xA2\xA3\u20AA\xA5\xA6\xA7\xA8\xA9\xD7\xAB\xAC\xAD\xAE\xAF\xB0\xB1\xB2\xB3\xB4\xB5\xB6\xB7\xB8\xB9\xF7\xBB\xBC\xBD\xBE\xBF\u05B0\u05B1\u05B2\u05B3\u05B4\u05B5\u05B6\u05B7\u05B8\u05B9\u05BA\u05BB\u05BC\u05BD\u05BE\u05BF\u05C0\u05C1\u05C2\u05C3\u05F0\u05F1\u05F2\u05F3\u05F4\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\u05D0\u05D1\u05D2\u05D3\u05D4\u05D5\u05D6\u05D7\u05D8\u05D9\u05DA\u05DB\u05DC\u05DD\u05DE\u05DF\u05E0\u05E1\u05E2\u05E3\u05E4\u05E5\u05E6\u05E7\u05E8\u05E9\u05EA\uFFFD\uFFFD\u200E\u200F\uFFFD"},win1255:"windows1255",cp1255:"windows1255",windows1256:{type:"_sbcs",chars:"\u20AC\u067E\u201A\u0192\u201E\u2026\u2020\u2021\u02C6\u2030\u0679\u2039\u0152\u0686\u0698\u0688\u06AF\u2018\u2019\u201C\u201D\u2022\u2013\u2014\u06A9\u2122\u0691\u203A\u0153\u200C\u200D\u06BA\xA0\u060C\xA2\xA3\xA4\xA5\xA6\xA7\xA8\xA9\u06BE\xAB\xAC\xAD\xAE\xAF\xB0\xB1\xB2\xB3\xB4\xB5\xB6\xB7\xB8\xB9\u061B\xBB\xBC\xBD\xBE\u061F\u06C1\u0621\u0622\u0623\u0624\u0625\u0626\u0627\u0628\u0629\u062A\u062B\u062C\u062D\u062E\u062F\u0630\u0631\u0632\u0633\u0634\u0635\u0636\xD7\u0637\u0638\u0639\u063A\u0640\u0641\u0642\u0643\xE0\u0644\xE2\u0645\u0646\u0647\u0648\xE7\xE8\xE9\xEA\xEB\u0649\u064A\xEE\xEF\u064B\u064C\u064D\u064E\xF4\u064F\u0650\xF7\u0651\xF9\u0652\xFB\xFC\u200E\u200F\u06D2"},win1256:"windows1256",cp1256:"windows1256",windows1257:{type:"_sbcs",chars:"\u20AC\uFFFD\u201A\uFFFD\u201E\u2026\u2020\u2021\uFFFD\u2030\uFFFD\u2039\uFFFD\xA8\u02C7\xB8\uFFFD\u2018\u2019\u201C\u201D\u2022\u2013\u2014\uFFFD\u2122\uFFFD\u203A\uFFFD\xAF\u02DB\uFFFD\xA0\uFFFD\xA2\xA3\xA4\uFFFD\xA6\xA7\xD8\xA9\u0156\xAB\xAC\xAD\xAE\xC6\xB0\xB1\xB2\xB3\xB4\xB5\xB6\xB7\xF8\xB9\u0157\xBB\xBC\xBD\xBE\xE6\u0104\u012E\u0100\u0106\xC4\xC5\u0118\u0112\u010C\xC9\u0179\u0116\u0122\u0136\u012A\u013B\u0160\u0143\u0145\xD3\u014C\xD5\xD6\xD7\u0172\u0141\u015A\u016A\xDC\u017B\u017D\xDF\u0105\u012F\u0101\u0107\xE4\xE5\u0119\u0113\u010D\xE9\u017A\u0117\u0123\u0137\u012B\u013C\u0161\u0144\u0146\xF3\u014D\xF5\xF6\xF7\u0173\u0142\u015B\u016B\xFC\u017C\u017E\u02D9"},win1257:"windows1257",cp1257:"windows1257",windows1258:{type:"_sbcs",chars:"\u20AC\uFFFD\u201A\u0192\u201E\u2026\u2020\u2021\u02C6\u2030\uFFFD\u2039\u0152\uFFFD\uFFFD\uFFFD\uFFFD\u2018\u2019\u201C\u201D\u2022\u2013\u2014\u02DC\u2122\uFFFD\u203A\u0153\uFFFD\uFFFD\u0178\xA0\xA1\xA2\xA3\xA4\xA5\xA6\xA7\xA8\xA9\xAA\xAB\xAC\xAD\xAE\xAF\xB0\xB1\xB2\xB3\xB4\xB5\xB6\xB7\xB8\xB9\xBA\xBB\xBC\xBD\xBE\xBF\xC0\xC1\xC2\u0102\xC4\xC5\xC6\xC7\xC8\xC9\xCA\xCB\u0300\xCD\xCE\xCF\u0110\xD1\u0309\xD3\xD4\u01A0\xD6\xD7\xD8\xD9\xDA\xDB\xDC\u01AF\u0303\xDF\xE0\xE1\xE2\u0103\xE4\xE5\xE6\xE7\xE8\xE9\xEA\xEB\u0301\xED\xEE\xEF\u0111\xF1\u0323\xF3\xF4\u01A1\xF6\xF7\xF8\xF9\xFA\xFB\xFC\u01B0\u20AB\xFF"},win1258:"windows1258",cp1258:"windows1258",iso88591:{type:"_sbcs",chars:"\x80\x81\x82\x83\x84\x85\x86\x87\x88\x89\x8A\x8B\x8C\x8D\x8E\x8F\x90\x91\x92\x93\x94\x95\x96\x97\x98\x99\x9A\x9B\x9C\x9D\x9E\x9F\xA0\xA1\xA2\xA3\xA4\xA5\xA6\xA7\xA8\xA9\xAA\xAB\xAC\xAD\xAE\xAF\xB0\xB1\xB2\xB3\xB4\xB5\xB6\xB7\xB8\xB9\xBA\xBB\xBC\xBD\xBE\xBF\xC0\xC1\xC2\xC3\xC4\xC5\xC6\xC7\xC8\xC9\xCA\xCB\xCC\xCD\xCE\xCF\xD0\xD1\xD2\xD3\xD4\xD5\xD6\xD7\xD8\xD9\xDA\xDB\xDC\xDD\xDE\xDF\xE0\xE1\xE2\xE3\xE4\xE5\xE6\xE7\xE8\xE9\xEA\xEB\xEC\xED\xEE\xEF\xF0\xF1\xF2\xF3\xF4\xF5\xF6\xF7\xF8\xF9\xFA\xFB\xFC\xFD\xFE\xFF"},cp28591:"iso88591",iso88592:{type:"_sbcs",chars:"\x80\x81\x82\x83\x84\x85\x86\x87\x88\x89\x8A\x8B\x8C\x8D\x8E\x8F\x90\x91\x92\x93\x94\x95\x96\x97\x98\x99\x9A\x9B\x9C\x9D\x9E\x9F\xA0\u0104\u02D8\u0141\xA4\u013D\u015A\xA7\xA8\u0160\u015E\u0164\u0179\xAD\u017D\u017B\xB0\u0105\u02DB\u0142\xB4\u013E\u015B\u02C7\xB8\u0161\u015F\u0165\u017A\u02DD\u017E\u017C\u0154\xC1\xC2\u0102\xC4\u0139\u0106\xC7\u010C\xC9\u0118\xCB\u011A\xCD\xCE\u010E\u0110\u0143\u0147\xD3\xD4\u0150\xD6\xD7\u0158\u016E\xDA\u0170\xDC\xDD\u0162\xDF\u0155\xE1\xE2\u0103\xE4\u013A\u0107\xE7\u010D\xE9\u0119\xEB\u011B\xED\xEE\u010F\u0111\u0144\u0148\xF3\xF4\u0151\xF6\xF7\u0159\u016F\xFA\u0171\xFC\xFD\u0163\u02D9"},cp28592:"iso88592",iso88593:{type:"_sbcs",chars:"\x80\x81\x82\x83\x84\x85\x86\x87\x88\x89\x8A\x8B\x8C\x8D\x8E\x8F\x90\x91\x92\x93\x94\x95\x96\x97\x98\x99\x9A\x9B\x9C\x9D\x9E\x9F\xA0\u0126\u02D8\xA3\xA4\uFFFD\u0124\xA7\xA8\u0130\u015E\u011E\u0134\xAD\uFFFD\u017B\xB0\u0127\xB2\xB3\xB4\xB5\u0125\xB7\xB8\u0131\u015F\u011F\u0135\xBD\uFFFD\u017C\xC0\xC1\xC2\uFFFD\xC4\u010A\u0108\xC7\xC8\xC9\xCA\xCB\xCC\xCD\xCE\xCF\uFFFD\xD1\xD2\xD3\xD4\u0120\xD6\xD7\u011C\xD9\xDA\xDB\xDC\u016C\u015C\xDF\xE0\xE1\xE2\uFFFD\xE4\u010B\u0109\xE7\xE8\xE9\xEA\xEB\xEC\xED\xEE\xEF\uFFFD\xF1\xF2\xF3\xF4\u0121\xF6\xF7\u011D\xF9\xFA\xFB\xFC\u016D\u015D\u02D9"},cp28593:"iso88593",iso88594:{type:"_sbcs",chars:"\x80\x81\x82\x83\x84\x85\x86\x87\x88\x89\x8A\x8B\x8C\x8D\x8E\x8F\x90\x91\x92\x93\x94\x95\x96\x97\x98\x99\x9A\x9B\x9C\x9D\x9E\x9F\xA0\u0104\u0138\u0156\xA4\u0128\u013B\xA7\xA8\u0160\u0112\u0122\u0166\xAD\u017D\xAF\xB0\u0105\u02DB\u0157\xB4\u0129\u013C\u02C7\xB8\u0161\u0113\u0123\u0167\u014A\u017E\u014B\u0100\xC1\xC2\xC3\xC4\xC5\xC6\u012E\u010C\xC9\u0118\xCB\u0116\xCD\xCE\u012A\u0110\u0145\u014C\u0136\xD4\xD5\xD6\xD7\xD8\u0172\xDA\xDB\xDC\u0168\u016A\xDF\u0101\xE1\xE2\xE3\xE4\xE5\xE6\u012F\u010D\xE9\u0119\xEB\u0117\xED\xEE\u012B\u0111\u0146\u014D\u0137\xF4\xF5\xF6\xF7\xF8\u0173\xFA\xFB\xFC\u0169\u016B\u02D9"},cp28594:"iso88594",iso88595:{type:"_sbcs",chars:"\x80\x81\x82\x83\x84\x85\x86\x87\x88\x89\x8A\x8B\x8C\x8D\x8E\x8F\x90\x91\x92\x93\x94\x95\x96\x97\x98\x99\x9A\x9B\x9C\x9D\x9E\x9F\xA0\u0401\u0402\u0403\u0404\u0405\u0406\u0407\u0408\u0409\u040A\u040B\u040C\xAD\u040E\u040F\u0410\u0411\u0412\u0413\u0414\u0415\u0416\u0417\u0418\u0419\u041A\u041B\u041C\u041D\u041E\u041F\u0420\u0421\u0422\u0423\u0424\u0425\u0426\u0427\u0428\u0429\u042A\u042B\u042C\u042D\u042E\u042F\u0430\u0431\u0432\u0433\u0434\u0435\u0436\u0437\u0438\u0439\u043A\u043B\u043C\u043D\u043E\u043F\u0440\u0441\u0442\u0443\u0444\u0445\u0446\u0447\u0448\u0449\u044A\u044B\u044C\u044D\u044E\u044F\u2116\u0451\u0452\u0453\u0454\u0455\u0456\u0457\u0458\u0459\u045A\u045B\u045C\xA7\u045E\u045F"},cp28595:"iso88595",iso88596:{type:"_sbcs",chars:"\x80\x81\x82\x83\x84\x85\x86\x87\x88\x89\x8A\x8B\x8C\x8D\x8E\x8F\x90\x91\x92\x93\x94\x95\x96\x97\x98\x99\x9A\x9B\x9C\x9D\x9E\x9F\xA0\uFFFD\uFFFD\uFFFD\xA4\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\u060C\xAD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\u061B\uFFFD\uFFFD\uFFFD\u061F\uFFFD\u0621\u0622\u0623\u0624\u0625\u0626\u0627\u0628\u0629\u062A\u062B\u062C\u062D\u062E\u062F\u0630\u0631\u0632\u0633\u0634\u0635\u0636\u0637\u0638\u0639\u063A\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\u0640\u0641\u0642\u0643\u0644\u0645\u0646\u0647\u0648\u0649\u064A\u064B\u064C\u064D\u064E\u064F\u0650\u0651\u0652\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD"},cp28596:"iso88596",iso88597:{type:"_sbcs",chars:"\x80\x81\x82\x83\x84\x85\x86\x87\x88\x89\x8A\x8B\x8C\x8D\x8E\x8F\x90\x91\x92\x93\x94\x95\x96\x97\x98\x99\x9A\x9B\x9C\x9D\x9E\x9F\xA0\u2018\u2019\xA3\u20AC\u20AF\xA6\xA7\xA8\xA9\u037A\xAB\xAC\xAD\uFFFD\u2015\xB0\xB1\xB2\xB3\u0384\u0385\u0386\xB7\u0388\u0389\u038A\xBB\u038C\xBD\u038E\u038F\u0390\u0391\u0392\u0393\u0394\u0395\u0396\u0397\u0398\u0399\u039A\u039B\u039C\u039D\u039E\u039F\u03A0\u03A1\uFFFD\u03A3\u03A4\u03A5\u03A6\u03A7\u03A8\u03A9\u03AA\u03AB\u03AC\u03AD\u03AE\u03AF\u03B0\u03B1\u03B2\u03B3\u03B4\u03B5\u03B6\u03B7\u03B8\u03B9\u03BA\u03BB\u03BC\u03BD\u03BE\u03BF\u03C0\u03C1\u03C2\u03C3\u03C4\u03C5\u03C6\u03C7\u03C8\u03C9\u03CA\u03CB\u03CC\u03CD\u03CE\uFFFD"},cp28597:"iso88597",iso88598:{type:"_sbcs",chars:"\x80\x81\x82\x83\x84\x85\x86\x87\x88\x89\x8A\x8B\x8C\x8D\x8E\x8F\x90\x91\x92\x93\x94\x95\x96\x97\x98\x99\x9A\x9B\x9C\x9D\x9E\x9F\xA0\uFFFD\xA2\xA3\xA4\xA5\xA6\xA7\xA8\xA9\xD7\xAB\xAC\xAD\xAE\xAF\xB0\xB1\xB2\xB3\xB4\xB5\xB6\xB7\xB8\xB9\xF7\xBB\xBC\xBD\xBE\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\u2017\u05D0\u05D1\u05D2\u05D3\u05D4\u05D5\u05D6\u05D7\u05D8\u05D9\u05DA\u05DB\u05DC\u05DD\u05DE\u05DF\u05E0\u05E1\u05E2\u05E3\u05E4\u05E5\u05E6\u05E7\u05E8\u05E9\u05EA\uFFFD\uFFFD\u200E\u200F\uFFFD"},cp28598:"iso88598",iso88599:{type:"_sbcs",chars:"\x80\x81\x82\x83\x84\x85\x86\x87\x88\x89\x8A\x8B\x8C\x8D\x8E\x8F\x90\x91\x92\x93\x94\x95\x96\x97\x98\x99\x9A\x9B\x9C\x9D\x9E\x9F\xA0\xA1\xA2\xA3\xA4\xA5\xA6\xA7\xA8\xA9\xAA\xAB\xAC\xAD\xAE\xAF\xB0\xB1\xB2\xB3\xB4\xB5\xB6\xB7\xB8\xB9\xBA\xBB\xBC\xBD\xBE\xBF\xC0\xC1\xC2\xC3\xC4\xC5\xC6\xC7\xC8\xC9\xCA\xCB\xCC\xCD\xCE\xCF\u011E\xD1\xD2\xD3\xD4\xD5\xD6\xD7\xD8\xD9\xDA\xDB\xDC\u0130\u015E\xDF\xE0\xE1\xE2\xE3\xE4\xE5\xE6\xE7\xE8\xE9\xEA\xEB\xEC\xED\xEE\xEF\u011F\xF1\xF2\xF3\xF4\xF5\xF6\xF7\xF8\xF9\xFA\xFB\xFC\u0131\u015F\xFF"},cp28599:"iso88599",iso885910:{type:"_sbcs",chars:"\x80\x81\x82\x83\x84\x85\x86\x87\x88\x89\x8A\x8B\x8C\x8D\x8E\x8F\x90\x91\x92\x93\x94\x95\x96\x97\x98\x99\x9A\x9B\x9C\x9D\x9E\x9F\xA0\u0104\u0112\u0122\u012A\u0128\u0136\xA7\u013B\u0110\u0160\u0166\u017D\xAD\u016A\u014A\xB0\u0105\u0113\u0123\u012B\u0129\u0137\xB7\u013C\u0111\u0161\u0167\u017E\u2015\u016B\u014B\u0100\xC1\xC2\xC3\xC4\xC5\xC6\u012E\u010C\xC9\u0118\xCB\u0116\xCD\xCE\xCF\xD0\u0145\u014C\xD3\xD4\xD5\xD6\u0168\xD8\u0172\xDA\xDB\xDC\xDD\xDE\xDF\u0101\xE1\xE2\xE3\xE4\xE5\xE6\u012F\u010D\xE9\u0119\xEB\u0117\xED\xEE\xEF\xF0\u0146\u014D\xF3\xF4\xF5\xF6\u0169\xF8\u0173\xFA\xFB\xFC\xFD\xFE\u0138"},cp28600:"iso885910",iso885911:{type:"_sbcs",chars:"\x80\x81\x82\x83\x84\x85\x86\x87\x88\x89\x8A\x8B\x8C\x8D\x8E\x8F\x90\x91\x92\x93\x94\x95\x96\x97\x98\x99\x9A\x9B\x9C\x9D\x9E\x9F\xA0\u0E01\u0E02\u0E03\u0E04\u0E05\u0E06\u0E07\u0E08\u0E09\u0E0A\u0E0B\u0E0C\u0E0D\u0E0E\u0E0F\u0E10\u0E11\u0E12\u0E13\u0E14\u0E15\u0E16\u0E17\u0E18\u0E19\u0E1A\u0E1B\u0E1C\u0E1D\u0E1E\u0E1F\u0E20\u0E21\u0E22\u0E23\u0E24\u0E25\u0E26\u0E27\u0E28\u0E29\u0E2A\u0E2B\u0E2C\u0E2D\u0E2E\u0E2F\u0E30\u0E31\u0E32\u0E33\u0E34\u0E35\u0E36\u0E37\u0E38\u0E39\u0E3A\uFFFD\uFFFD\uFFFD\uFFFD\u0E3F\u0E40\u0E41\u0E42\u0E43\u0E44\u0E45\u0E46\u0E47\u0E48\u0E49\u0E4A\u0E4B\u0E4C\u0E4D\u0E4E\u0E4F\u0E50\u0E51\u0E52\u0E53\u0E54\u0E55\u0E56\u0E57\u0E58\u0E59\u0E5A\u0E5B\uFFFD\uFFFD\uFFFD\uFFFD"},cp28601:"iso885911",iso885913:{type:"_sbcs",chars:"\x80\x81\x82\x83\x84\x85\x86\x87\x88\x89\x8A\x8B\x8C\x8D\x8E\x8F\x90\x91\x92\x93\x94\x95\x96\x97\x98\x99\x9A\x9B\x9C\x9D\x9E\x9F\xA0\u201D\xA2\xA3\xA4\u201E\xA6\xA7\xD8\xA9\u0156\xAB\xAC\xAD\xAE\xC6\xB0\xB1\xB2\xB3\u201C\xB5\xB6\xB7\xF8\xB9\u0157\xBB\xBC\xBD\xBE\xE6\u0104\u012E\u0100\u0106\xC4\xC5\u0118\u0112\u010C\xC9\u0179\u0116\u0122\u0136\u012A\u013B\u0160\u0143\u0145\xD3\u014C\xD5\xD6\xD7\u0172\u0141\u015A\u016A\xDC\u017B\u017D\xDF\u0105\u012F\u0101\u0107\xE4\xE5\u0119\u0113\u010D\xE9\u017A\u0117\u0123\u0137\u012B\u013C\u0161\u0144\u0146\xF3\u014D\xF5\xF6\xF7\u0173\u0142\u015B\u016B\xFC\u017C\u017E\u2019"},cp28603:"iso885913",iso885914:{type:"_sbcs",chars:"\x80\x81\x82\x83\x84\x85\x86\x87\x88\x89\x8A\x8B\x8C\x8D\x8E\x8F\x90\x91\x92\x93\x94\x95\x96\x97\x98\x99\x9A\x9B\x9C\x9D\x9E\x9F\xA0\u1E02\u1E03\xA3\u010A\u010B\u1E0A\xA7\u1E80\xA9\u1E82\u1E0B\u1EF2\xAD\xAE\u0178\u1E1E\u1E1F\u0120\u0121\u1E40\u1E41\xB6\u1E56\u1E81\u1E57\u1E83\u1E60\u1EF3\u1E84\u1E85\u1E61\xC0\xC1\xC2\xC3\xC4\xC5\xC6\xC7\xC8\xC9\xCA\xCB\xCC\xCD\xCE\xCF\u0174\xD1\xD2\xD3\xD4\xD5\xD6\u1E6A\xD8\xD9\xDA\xDB\xDC\xDD\u0176\xDF\xE0\xE1\xE2\xE3\xE4\xE5\xE6\xE7\xE8\xE9\xEA\xEB\xEC\xED\xEE\xEF\u0175\xF1\xF2\xF3\xF4\xF5\xF6\u1E6B\xF8\xF9\xFA\xFB\xFC\xFD\u0177\xFF"},cp28604:"iso885914",iso885915:{type:"_sbcs",chars:"\x80\x81\x82\x83\x84\x85\x86\x87\x88\x89\x8A\x8B\x8C\x8D\x8E\x8F\x90\x91\x92\x93\x94\x95\x96\x97\x98\x99\x9A\x9B\x9C\x9D\x9E\x9F\xA0\xA1\xA2\xA3\u20AC\xA5\u0160\xA7\u0161\xA9\xAA\xAB\xAC\xAD\xAE\xAF\xB0\xB1\xB2\xB3\u017D\xB5\xB6\xB7\u017E\xB9\xBA\xBB\u0152\u0153\u0178\xBF\xC0\xC1\xC2\xC3\xC4\xC5\xC6\xC7\xC8\xC9\xCA\xCB\xCC\xCD\xCE\xCF\xD0\xD1\xD2\xD3\xD4\xD5\xD6\xD7\xD8\xD9\xDA\xDB\xDC\xDD\xDE\xDF\xE0\xE1\xE2\xE3\xE4\xE5\xE6\xE7\xE8\xE9\xEA\xEB\xEC\xED\xEE\xEF\xF0\xF1\xF2\xF3\xF4\xF5\xF6\xF7\xF8\xF9\xFA\xFB\xFC\xFD\xFE\xFF"},cp28605:"iso885915",iso885916:{type:"_sbcs",chars:"\x80\x81\x82\x83\x84\x85\x86\x87\x88\x89\x8A\x8B\x8C\x8D\x8E\x8F\x90\x91\x92\x93\x94\x95\x96\x97\x98\x99\x9A\x9B\x9C\x9D\x9E\x9F\xA0\u0104\u0105\u0141\u20AC\u201E\u0160\xA7\u0161\xA9\u0218\xAB\u0179\xAD\u017A\u017B\xB0\xB1\u010C\u0142\u017D\u201D\xB6\xB7\u017E\u010D\u0219\xBB\u0152\u0153\u0178\u017C\xC0\xC1\xC2\u0102\xC4\u0106\xC6\xC7\xC8\xC9\xCA\xCB\xCC\xCD\xCE\xCF\u0110\u0143\xD2\xD3\xD4\u0150\xD6\u015A\u0170\xD9\xDA\xDB\xDC\u0118\u021A\xDF\xE0\xE1\xE2\u0103\xE4\u0107\xE6\xE7\xE8\xE9\xEA\xEB\xEC\xED\xEE\xEF\u0111\u0144\xF2\xF3\xF4\u0151\xF6\u015B\u0171\xF9\xFA\xFB\xFC\u0119\u021B\xFF"},cp28606:"iso885916",cp437:{type:"_sbcs",chars:"\xC7\xFC\xE9\xE2\xE4\xE0\xE5\xE7\xEA\xEB\xE8\xEF\xEE\xEC\xC4\xC5\xC9\xE6\xC6\xF4\xF6\xF2\xFB\xF9\xFF\xD6\xDC\xA2\xA3\xA5\u20A7\u0192\xE1\xED\xF3\xFA\xF1\xD1\xAA\xBA\xBF\u2310\xAC\xBD\xBC\xA1\xAB\xBB\u2591\u2592\u2593\u2502\u2524\u2561\u2562\u2556\u2555\u2563\u2551\u2557\u255D\u255C\u255B\u2510\u2514\u2534\u252C\u251C\u2500\u253C\u255E\u255F\u255A\u2554\u2569\u2566\u2560\u2550\u256C\u2567\u2568\u2564\u2565\u2559\u2558\u2552\u2553\u256B\u256A\u2518\u250C\u2588\u2584\u258C\u2590\u2580\u03B1\xDF\u0393\u03C0\u03A3\u03C3\xB5\u03C4\u03A6\u0398\u03A9\u03B4\u221E\u03C6\u03B5\u2229\u2261\xB1\u2265\u2264\u2320\u2321\xF7\u2248\xB0\u2219\xB7\u221A\u207F\xB2\u25A0\xA0"},ibm437:"cp437",csibm437:"cp437",cp737:{type:"_sbcs",chars:"\u0391\u0392\u0393\u0394\u0395\u0396\u0397\u0398\u0399\u039A\u039B\u039C\u039D\u039E\u039F\u03A0\u03A1\u03A3\u03A4\u03A5\u03A6\u03A7\u03A8\u03A9\u03B1\u03B2\u03B3\u03B4\u03B5\u03B6\u03B7\u03B8\u03B9\u03BA\u03BB\u03BC\u03BD\u03BE\u03BF\u03C0\u03C1\u03C3\u03C2\u03C4\u03C5\u03C6\u03C7\u03C8\u2591\u2592\u2593\u2502\u2524\u2561\u2562\u2556\u2555\u2563\u2551\u2557\u255D\u255C\u255B\u2510\u2514\u2534\u252C\u251C\u2500\u253C\u255E\u255F\u255A\u2554\u2569\u2566\u2560\u2550\u256C\u2567\u2568\u2564\u2565\u2559\u2558\u2552\u2553\u256B\u256A\u2518\u250C\u2588\u2584\u258C\u2590\u2580\u03C9\u03AC\u03AD\u03AE\u03CA\u03AF\u03CC\u03CD\u03CB\u03CE\u0386\u0388\u0389\u038A\u038C\u038E\u038F\xB1\u2265\u2264\u03AA\u03AB\xF7\u2248\xB0\u2219\xB7\u221A\u207F\xB2\u25A0\xA0"},ibm737:"cp737",csibm737:"cp737",cp775:{type:"_sbcs",chars:"\u0106\xFC\xE9\u0101\xE4\u0123\xE5\u0107\u0142\u0113\u0156\u0157\u012B\u0179\xC4\xC5\xC9\xE6\xC6\u014D\xF6\u0122\xA2\u015A\u015B\xD6\xDC\xF8\xA3\xD8\xD7\xA4\u0100\u012A\xF3\u017B\u017C\u017A\u201D\xA6\xA9\xAE\xAC\xBD\xBC\u0141\xAB\xBB\u2591\u2592\u2593\u2502\u2524\u0104\u010C\u0118\u0116\u2563\u2551\u2557\u255D\u012E\u0160\u2510\u2514\u2534\u252C\u251C\u2500\u253C\u0172\u016A\u255A\u2554\u2569\u2566\u2560\u2550\u256C\u017D\u0105\u010D\u0119\u0117\u012F\u0161\u0173\u016B\u017E\u2518\u250C\u2588\u2584\u258C\u2590\u2580\xD3\xDF\u014C\u0143\xF5\xD5\xB5\u0144\u0136\u0137\u013B\u013C\u0146\u0112\u0145\u2019\xAD\xB1\u201C\xBE\xB6\xA7\xF7\u201E\xB0\u2219\xB7\xB9\xB3\xB2\u25A0\xA0"},ibm775:"cp775",csibm775:"cp775",cp850:{type:"_sbcs",chars:"\xC7\xFC\xE9\xE2\xE4\xE0\xE5\xE7\xEA\xEB\xE8\xEF\xEE\xEC\xC4\xC5\xC9\xE6\xC6\xF4\xF6\xF2\xFB\xF9\xFF\xD6\xDC\xF8\xA3\xD8\xD7\u0192\xE1\xED\xF3\xFA\xF1\xD1\xAA\xBA\xBF\xAE\xAC\xBD\xBC\xA1\xAB\xBB\u2591\u2592\u2593\u2502\u2524\xC1\xC2\xC0\xA9\u2563\u2551\u2557\u255D\xA2\xA5\u2510\u2514\u2534\u252C\u251C\u2500\u253C\xE3\xC3\u255A\u2554\u2569\u2566\u2560\u2550\u256C\xA4\xF0\xD0\xCA\xCB\xC8\u0131\xCD\xCE\xCF\u2518\u250C\u2588\u2584\xA6\xCC\u2580\xD3\xDF\xD4\xD2\xF5\xD5\xB5\xFE\xDE\xDA\xDB\xD9\xFD\xDD\xAF\xB4\xAD\xB1\u2017\xBE\xB6\xA7\xF7\xB8\xB0\xA8\xB7\xB9\xB3\xB2\u25A0\xA0"},ibm850:"cp850",csibm850:"cp850",cp852:{type:"_sbcs",chars:"\xC7\xFC\xE9\xE2\xE4\u016F\u0107\xE7\u0142\xEB\u0150\u0151\xEE\u0179\xC4\u0106\xC9\u0139\u013A\xF4\xF6\u013D\u013E\u015A\u015B\xD6\xDC\u0164\u0165\u0141\xD7\u010D\xE1\xED\xF3\xFA\u0104\u0105\u017D\u017E\u0118\u0119\xAC\u017A\u010C\u015F\xAB\xBB\u2591\u2592\u2593\u2502\u2524\xC1\xC2\u011A\u015E\u2563\u2551\u2557\u255D\u017B\u017C\u2510\u2514\u2534\u252C\u251C\u2500\u253C\u0102\u0103\u255A\u2554\u2569\u2566\u2560\u2550\u256C\xA4\u0111\u0110\u010E\xCB\u010F\u0147\xCD\xCE\u011B\u2518\u250C\u2588\u2584\u0162\u016E\u2580\xD3\xDF\xD4\u0143\u0144\u0148\u0160\u0161\u0154\xDA\u0155\u0170\xFD\xDD\u0163\xB4\xAD\u02DD\u02DB\u02C7\u02D8\xA7\xF7\xB8\xB0\xA8\u02D9\u0171\u0158\u0159\u25A0\xA0"},ibm852:"cp852",csibm852:"cp852",cp855:{type:"_sbcs",chars:"\u0452\u0402\u0453\u0403\u0451\u0401\u0454\u0404\u0455\u0405\u0456\u0406\u0457\u0407\u0458\u0408\u0459\u0409\u045A\u040A\u045B\u040B\u045C\u040C\u045E\u040E\u045F\u040F\u044E\u042E\u044A\u042A\u0430\u0410\u0431\u0411\u0446\u0426\u0434\u0414\u0435\u0415\u0444\u0424\u0433\u0413\xAB\xBB\u2591\u2592\u2593\u2502\u2524\u0445\u0425\u0438\u0418\u2563\u2551\u2557\u255D\u0439\u0419\u2510\u2514\u2534\u252C\u251C\u2500\u253C\u043A\u041A\u255A\u2554\u2569\u2566\u2560\u2550\u256C\xA4\u043B\u041B\u043C\u041C\u043D\u041D\u043E\u041E\u043F\u2518\u250C\u2588\u2584\u041F\u044F\u2580\u042F\u0440\u0420\u0441\u0421\u0442\u0422\u0443\u0423\u0436\u0416\u0432\u0412\u044C\u042C\u2116\xAD\u044B\u042B\u0437\u0417\u0448\u0428\u044D\u042D\u0449\u0429\u0447\u0427\xA7\u25A0\xA0"},ibm855:"cp855",csibm855:"cp855",cp856:{type:"_sbcs",chars:"\u05D0\u05D1\u05D2\u05D3\u05D4\u05D5\u05D6\u05D7\u05D8\u05D9\u05DA\u05DB\u05DC\u05DD\u05DE\u05DF\u05E0\u05E1\u05E2\u05E3\u05E4\u05E5\u05E6\u05E7\u05E8\u05E9\u05EA\uFFFD\xA3\uFFFD\xD7\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\xAE\xAC\xBD\xBC\uFFFD\xAB\xBB\u2591\u2592\u2593\u2502\u2524\uFFFD\uFFFD\uFFFD\xA9\u2563\u2551\u2557\u255D\xA2\xA5\u2510\u2514\u2534\u252C\u251C\u2500\u253C\uFFFD\uFFFD\u255A\u2554\u2569\u2566\u2560\u2550\u256C\xA4\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\u2518\u250C\u2588\u2584\xA6\uFFFD\u2580\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\xB5\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\xAF\xB4\xAD\xB1\u2017\xBE\xB6\xA7\xF7\xB8\xB0\xA8\xB7\xB9\xB3\xB2\u25A0\xA0"},ibm856:"cp856",csibm856:"cp856",cp857:{type:"_sbcs",chars:"\xC7\xFC\xE9\xE2\xE4\xE0\xE5\xE7\xEA\xEB\xE8\xEF\xEE\u0131\xC4\xC5\xC9\xE6\xC6\xF4\xF6\xF2\xFB\xF9\u0130\xD6\xDC\xF8\xA3\xD8\u015E\u015F\xE1\xED\xF3\xFA\xF1\xD1\u011E\u011F\xBF\xAE\xAC\xBD\xBC\xA1\xAB\xBB\u2591\u2592\u2593\u2502\u2524\xC1\xC2\xC0\xA9\u2563\u2551\u2557\u255D\xA2\xA5\u2510\u2514\u2534\u252C\u251C\u2500\u253C\xE3\xC3\u255A\u2554\u2569\u2566\u2560\u2550\u256C\xA4\xBA\xAA\xCA\xCB\xC8\uFFFD\xCD\xCE\xCF\u2518\u250C\u2588\u2584\xA6\xCC\u2580\xD3\xDF\xD4\xD2\xF5\xD5\xB5\uFFFD\xD7\xDA\xDB\xD9\xEC\xFF\xAF\xB4\xAD\xB1\uFFFD\xBE\xB6\xA7\xF7\xB8\xB0\xA8\xB7\xB9\xB3\xB2\u25A0\xA0"},ibm857:"cp857",csibm857:"cp857",cp858:{type:"_sbcs",chars:"\xC7\xFC\xE9\xE2\xE4\xE0\xE5\xE7\xEA\xEB\xE8\xEF\xEE\xEC\xC4\xC5\xC9\xE6\xC6\xF4\xF6\xF2\xFB\xF9\xFF\xD6\xDC\xF8\xA3\xD8\xD7\u0192\xE1\xED\xF3\xFA\xF1\xD1\xAA\xBA\xBF\xAE\xAC\xBD\xBC\xA1\xAB\xBB\u2591\u2592\u2593\u2502\u2524\xC1\xC2\xC0\xA9\u2563\u2551\u2557\u255D\xA2\xA5\u2510\u2514\u2534\u252C\u251C\u2500\u253C\xE3\xC3\u255A\u2554\u2569\u2566\u2560\u2550\u256C\xA4\xF0\xD0\xCA\xCB\xC8\u20AC\xCD\xCE\xCF\u2518\u250C\u2588\u2584\xA6\xCC\u2580\xD3\xDF\xD4\xD2\xF5\xD5\xB5\xFE\xDE\xDA\xDB\xD9\xFD\xDD\xAF\xB4\xAD\xB1\u2017\xBE\xB6\xA7\xF7\xB8\xB0\xA8\xB7\xB9\xB3\xB2\u25A0\xA0"},ibm858:"cp858",csibm858:"cp858",cp860:{type:"_sbcs",chars:"\xC7\xFC\xE9\xE2\xE3\xE0\xC1\xE7\xEA\xCA\xE8\xCD\xD4\xEC\xC3\xC2\xC9\xC0\xC8\xF4\xF5\xF2\xDA\xF9\xCC\xD5\xDC\xA2\xA3\xD9\u20A7\xD3\xE1\xED\xF3\xFA\xF1\xD1\xAA\xBA\xBF\xD2\xAC\xBD\xBC\xA1\xAB\xBB\u2591\u2592\u2593\u2502\u2524\u2561\u2562\u2556\u2555\u2563\u2551\u2557\u255D\u255C\u255B\u2510\u2514\u2534\u252C\u251C\u2500\u253C\u255E\u255F\u255A\u2554\u2569\u2566\u2560\u2550\u256C\u2567\u2568\u2564\u2565\u2559\u2558\u2552\u2553\u256B\u256A\u2518\u250C\u2588\u2584\u258C\u2590\u2580\u03B1\xDF\u0393\u03C0\u03A3\u03C3\xB5\u03C4\u03A6\u0398\u03A9\u03B4\u221E\u03C6\u03B5\u2229\u2261\xB1\u2265\u2264\u2320\u2321\xF7\u2248\xB0\u2219\xB7\u221A\u207F\xB2\u25A0\xA0"},ibm860:"cp860",csibm860:"cp860",cp861:{type:"_sbcs",chars:"\xC7\xFC\xE9\xE2\xE4\xE0\xE5\xE7\xEA\xEB\xE8\xD0\xF0\xDE\xC4\xC5\xC9\xE6\xC6\xF4\xF6\xFE\xFB\xDD\xFD\xD6\xDC\xF8\xA3\xD8\u20A7\u0192\xE1\xED\xF3\xFA\xC1\xCD\xD3\xDA\xBF\u2310\xAC\xBD\xBC\xA1\xAB\xBB\u2591\u2592\u2593\u2502\u2524\u2561\u2562\u2556\u2555\u2563\u2551\u2557\u255D\u255C\u255B\u2510\u2514\u2534\u252C\u251C\u2500\u253C\u255E\u255F\u255A\u2554\u2569\u2566\u2560\u2550\u256C\u2567\u2568\u2564\u2565\u2559\u2558\u2552\u2553\u256B\u256A\u2518\u250C\u2588\u2584\u258C\u2590\u2580\u03B1\xDF\u0393\u03C0\u03A3\u03C3\xB5\u03C4\u03A6\u0398\u03A9\u03B4\u221E\u03C6\u03B5\u2229\u2261\xB1\u2265\u2264\u2320\u2321\xF7\u2248\xB0\u2219\xB7\u221A\u207F\xB2\u25A0\xA0"},ibm861:"cp861",csibm861:"cp861",cp862:{type:"_sbcs",chars:"\u05D0\u05D1\u05D2\u05D3\u05D4\u05D5\u05D6\u05D7\u05D8\u05D9\u05DA\u05DB\u05DC\u05DD\u05DE\u05DF\u05E0\u05E1\u05E2\u05E3\u05E4\u05E5\u05E6\u05E7\u05E8\u05E9\u05EA\xA2\xA3\xA5\u20A7\u0192\xE1\xED\xF3\xFA\xF1\xD1\xAA\xBA\xBF\u2310\xAC\xBD\xBC\xA1\xAB\xBB\u2591\u2592\u2593\u2502\u2524\u2561\u2562\u2556\u2555\u2563\u2551\u2557\u255D\u255C\u255B\u2510\u2514\u2534\u252C\u251C\u2500\u253C\u255E\u255F\u255A\u2554\u2569\u2566\u2560\u2550\u256C\u2567\u2568\u2564\u2565\u2559\u2558\u2552\u2553\u256B\u256A\u2518\u250C\u2588\u2584\u258C\u2590\u2580\u03B1\xDF\u0393\u03C0\u03A3\u03C3\xB5\u03C4\u03A6\u0398\u03A9\u03B4\u221E\u03C6\u03B5\u2229\u2261\xB1\u2265\u2264\u2320\u2321\xF7\u2248\xB0\u2219\xB7\u221A\u207F\xB2\u25A0\xA0"},ibm862:"cp862",csibm862:"cp862",cp863:{type:"_sbcs",chars:"\xC7\xFC\xE9\xE2\xC2\xE0\xB6\xE7\xEA\xEB\xE8\xEF\xEE\u2017\xC0\xA7\xC9\xC8\xCA\xF4\xCB\xCF\xFB\xF9\xA4\xD4\xDC\xA2\xA3\xD9\xDB\u0192\xA6\xB4\xF3\xFA\xA8\xB8\xB3\xAF\xCE\u2310\xAC\xBD\xBC\xBE\xAB\xBB\u2591\u2592\u2593\u2502\u2524\u2561\u2562\u2556\u2555\u2563\u2551\u2557\u255D\u255C\u255B\u2510\u2514\u2534\u252C\u251C\u2500\u253C\u255E\u255F\u255A\u2554\u2569\u2566\u2560\u2550\u256C\u2567\u2568\u2564\u2565\u2559\u2558\u2552\u2553\u256B\u256A\u2518\u250C\u2588\u2584\u258C\u2590\u2580\u03B1\xDF\u0393\u03C0\u03A3\u03C3\xB5\u03C4\u03A6\u0398\u03A9\u03B4\u221E\u03C6\u03B5\u2229\u2261\xB1\u2265\u2264\u2320\u2321\xF7\u2248\xB0\u2219\xB7\u221A\u207F\xB2\u25A0\xA0"},ibm863:"cp863",csibm863:"cp863",cp864:{type:"_sbcs",chars:`\0\x07\b
144
144
  \v\f\r\x1B !"#$\u066A&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\\]^_\`abcdefghijklmnopqrstuvwxyz{|}~\x7F\xB0\xB7\u2219\u221A\u2592\u2500\u2502\u253C\u2524\u252C\u251C\u2534\u2510\u250C\u2514\u2518\u03B2\u221E\u03C6\xB1\xBD\xBC\u2248\xAB\xBB\uFEF7\uFEF8\uFFFD\uFFFD\uFEFB\uFEFC\uFFFD\xA0\xAD\uFE82\xA3\xA4\uFE84\uFFFD\uFFFD\uFE8E\uFE8F\uFE95\uFE99\u060C\uFE9D\uFEA1\uFEA5\u0660\u0661\u0662\u0663\u0664\u0665\u0666\u0667\u0668\u0669\uFED1\u061B\uFEB1\uFEB5\uFEB9\u061F\xA2\uFE80\uFE81\uFE83\uFE85\uFECA\uFE8B\uFE8D\uFE91\uFE93\uFE97\uFE9B\uFE9F\uFEA3\uFEA7\uFEA9\uFEAB\uFEAD\uFEAF\uFEB3\uFEB7\uFEBB\uFEBF\uFEC1\uFEC5\uFECB\uFECF\xA6\xAC\xF7\xD7\uFEC9\u0640\uFED3\uFED7\uFEDB\uFEDF\uFEE3\uFEE7\uFEEB\uFEED\uFEEF\uFEF3\uFEBD\uFECC\uFECE\uFECD\uFEE1\uFE7D\u0651\uFEE5\uFEE9\uFEEC\uFEF0\uFEF2\uFED0\uFED5\uFEF5\uFEF6\uFEDD\uFED9\uFEF1\u25A0\uFFFD`},ibm864:"cp864",csibm864:"cp864",cp865:{type:"_sbcs",chars:"\xC7\xFC\xE9\xE2\xE4\xE0\xE5\xE7\xEA\xEB\xE8\xEF\xEE\xEC\xC4\xC5\xC9\xE6\xC6\xF4\xF6\xF2\xFB\xF9\xFF\xD6\xDC\xF8\xA3\xD8\u20A7\u0192\xE1\xED\xF3\xFA\xF1\xD1\xAA\xBA\xBF\u2310\xAC\xBD\xBC\xA1\xAB\xA4\u2591\u2592\u2593\u2502\u2524\u2561\u2562\u2556\u2555\u2563\u2551\u2557\u255D\u255C\u255B\u2510\u2514\u2534\u252C\u251C\u2500\u253C\u255E\u255F\u255A\u2554\u2569\u2566\u2560\u2550\u256C\u2567\u2568\u2564\u2565\u2559\u2558\u2552\u2553\u256B\u256A\u2518\u250C\u2588\u2584\u258C\u2590\u2580\u03B1\xDF\u0393\u03C0\u03A3\u03C3\xB5\u03C4\u03A6\u0398\u03A9\u03B4\u221E\u03C6\u03B5\u2229\u2261\xB1\u2265\u2264\u2320\u2321\xF7\u2248\xB0\u2219\xB7\u221A\u207F\xB2\u25A0\xA0"},ibm865:"cp865",csibm865:"cp865",cp866:{type:"_sbcs",chars:"\u0410\u0411\u0412\u0413\u0414\u0415\u0416\u0417\u0418\u0419\u041A\u041B\u041C\u041D\u041E\u041F\u0420\u0421\u0422\u0423\u0424\u0425\u0426\u0427\u0428\u0429\u042A\u042B\u042C\u042D\u042E\u042F\u0430\u0431\u0432\u0433\u0434\u0435\u0436\u0437\u0438\u0439\u043A\u043B\u043C\u043D\u043E\u043F\u2591\u2592\u2593\u2502\u2524\u2561\u2562\u2556\u2555\u2563\u2551\u2557\u255D\u255C\u255B\u2510\u2514\u2534\u252C\u251C\u2500\u253C\u255E\u255F\u255A\u2554\u2569\u2566\u2560\u2550\u256C\u2567\u2568\u2564\u2565\u2559\u2558\u2552\u2553\u256B\u256A\u2518\u250C\u2588\u2584\u258C\u2590\u2580\u0440\u0441\u0442\u0443\u0444\u0445\u0446\u0447\u0448\u0449\u044A\u044B\u044C\u044D\u044E\u044F\u0401\u0451\u0404\u0454\u0407\u0457\u040E\u045E\xB0\u2219\xB7\u221A\u2116\xA4\u25A0\xA0"},ibm866:"cp866",csibm866:"cp866",cp869:{type:"_sbcs",chars:"\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\u0386\uFFFD\xB7\xAC\xA6\u2018\u2019\u0388\u2015\u0389\u038A\u03AA\u038C\uFFFD\uFFFD\u038E\u03AB\xA9\u038F\xB2\xB3\u03AC\xA3\u03AD\u03AE\u03AF\u03CA\u0390\u03CC\u03CD\u0391\u0392\u0393\u0394\u0395\u0396\u0397\xBD\u0398\u0399\xAB\xBB\u2591\u2592\u2593\u2502\u2524\u039A\u039B\u039C\u039D\u2563\u2551\u2557\u255D\u039E\u039F\u2510\u2514\u2534\u252C\u251C\u2500\u253C\u03A0\u03A1\u255A\u2554\u2569\u2566\u2560\u2550\u256C\u03A3\u03A4\u03A5\u03A6\u03A7\u03A8\u03A9\u03B1\u03B2\u03B3\u2518\u250C\u2588\u2584\u03B4\u03B5\u2580\u03B6\u03B7\u03B8\u03B9\u03BA\u03BB\u03BC\u03BD\u03BE\u03BF\u03C0\u03C1\u03C3\u03C2\u03C4\u0384\xAD\xB1\u03C5\u03C6\u03C7\xA7\u03C8\u0385\xB0\xA8\u03C9\u03CB\u03B0\u03CE\u25A0\xA0"},ibm869:"cp869",csibm869:"cp869",cp922:{type:"_sbcs",chars:"\x80\x81\x82\x83\x84\x85\x86\x87\x88\x89\x8A\x8B\x8C\x8D\x8E\x8F\x90\x91\x92\x93\x94\x95\x96\x97\x98\x99\x9A\x9B\x9C\x9D\x9E\x9F\xA0\xA1\xA2\xA3\xA4\xA5\xA6\xA7\xA8\xA9\xAA\xAB\xAC\xAD\xAE\u203E\xB0\xB1\xB2\xB3\xB4\xB5\xB6\xB7\xB8\xB9\xBA\xBB\xBC\xBD\xBE\xBF\xC0\xC1\xC2\xC3\xC4\xC5\xC6\xC7\xC8\xC9\xCA\xCB\xCC\xCD\xCE\xCF\u0160\xD1\xD2\xD3\xD4\xD5\xD6\xD7\xD8\xD9\xDA\xDB\xDC\xDD\u017D\xDF\xE0\xE1\xE2\xE3\xE4\xE5\xE6\xE7\xE8\xE9\xEA\xEB\xEC\xED\xEE\xEF\u0161\xF1\xF2\xF3\xF4\xF5\xF6\xF7\xF8\xF9\xFA\xFB\xFC\xFD\u017E\xFF"},ibm922:"cp922",csibm922:"cp922",cp1046:{type:"_sbcs",chars:"\uFE88\xD7\xF7\uF8F6\uF8F5\uF8F4\uF8F7\uFE71\x88\u25A0\u2502\u2500\u2510\u250C\u2514\u2518\uFE79\uFE7B\uFE7D\uFE7F\uFE77\uFE8A\uFEF0\uFEF3\uFEF2\uFECE\uFECF\uFED0\uFEF6\uFEF8\uFEFA\uFEFC\xA0\uF8FA\uF8F9\uF8F8\xA4\uF8FB\uFE8B\uFE91\uFE97\uFE9B\uFE9F\uFEA3\u060C\xAD\uFEA7\uFEB3\u0660\u0661\u0662\u0663\u0664\u0665\u0666\u0667\u0668\u0669\uFEB7\u061B\uFEBB\uFEBF\uFECA\u061F\uFECB\u0621\u0622\u0623\u0624\u0625\u0626\u0627\u0628\u0629\u062A\u062B\u062C\u062D\u062E\u062F\u0630\u0631\u0632\u0633\u0634\u0635\u0636\u0637\uFEC7\u0639\u063A\uFECC\uFE82\uFE84\uFE8E\uFED3\u0640\u0641\u0642\u0643\u0644\u0645\u0646\u0647\u0648\u0649\u064A\u064B\u064C\u064D\u064E\u064F\u0650\u0651\u0652\uFED7\uFEDB\uFEDF\uF8FC\uFEF5\uFEF7\uFEF9\uFEFB\uFEE3\uFEE7\uFEEC\uFEE9\uFFFD"},ibm1046:"cp1046",csibm1046:"cp1046",cp1124:{type:"_sbcs",chars:"\x80\x81\x82\x83\x84\x85\x86\x87\x88\x89\x8A\x8B\x8C\x8D\x8E\x8F\x90\x91\x92\x93\x94\x95\x96\x97\x98\x99\x9A\x9B\x9C\x9D\x9E\x9F\xA0\u0401\u0402\u0490\u0404\u0405\u0406\u0407\u0408\u0409\u040A\u040B\u040C\xAD\u040E\u040F\u0410\u0411\u0412\u0413\u0414\u0415\u0416\u0417\u0418\u0419\u041A\u041B\u041C\u041D\u041E\u041F\u0420\u0421\u0422\u0423\u0424\u0425\u0426\u0427\u0428\u0429\u042A\u042B\u042C\u042D\u042E\u042F\u0430\u0431\u0432\u0433\u0434\u0435\u0436\u0437\u0438\u0439\u043A\u043B\u043C\u043D\u043E\u043F\u0440\u0441\u0442\u0443\u0444\u0445\u0446\u0447\u0448\u0449\u044A\u044B\u044C\u044D\u044E\u044F\u2116\u0451\u0452\u0491\u0454\u0455\u0456\u0457\u0458\u0459\u045A\u045B\u045C\xA7\u045E\u045F"},ibm1124:"cp1124",csibm1124:"cp1124",cp1125:{type:"_sbcs",chars:"\u0410\u0411\u0412\u0413\u0414\u0415\u0416\u0417\u0418\u0419\u041A\u041B\u041C\u041D\u041E\u041F\u0420\u0421\u0422\u0423\u0424\u0425\u0426\u0427\u0428\u0429\u042A\u042B\u042C\u042D\u042E\u042F\u0430\u0431\u0432\u0433\u0434\u0435\u0436\u0437\u0438\u0439\u043A\u043B\u043C\u043D\u043E\u043F\u2591\u2592\u2593\u2502\u2524\u2561\u2562\u2556\u2555\u2563\u2551\u2557\u255D\u255C\u255B\u2510\u2514\u2534\u252C\u251C\u2500\u253C\u255E\u255F\u255A\u2554\u2569\u2566\u2560\u2550\u256C\u2567\u2568\u2564\u2565\u2559\u2558\u2552\u2553\u256B\u256A\u2518\u250C\u2588\u2584\u258C\u2590\u2580\u0440\u0441\u0442\u0443\u0444\u0445\u0446\u0447\u0448\u0449\u044A\u044B\u044C\u044D\u044E\u044F\u0401\u0451\u0490\u0491\u0404\u0454\u0406\u0456\u0407\u0457\xB7\u221A\u2116\xA4\u25A0\xA0"},ibm1125:"cp1125",csibm1125:"cp1125",cp1129:{type:"_sbcs",chars:"\x80\x81\x82\x83\x84\x85\x86\x87\x88\x89\x8A\x8B\x8C\x8D\x8E\x8F\x90\x91\x92\x93\x94\x95\x96\x97\x98\x99\x9A\x9B\x9C\x9D\x9E\x9F\xA0\xA1\xA2\xA3\xA4\xA5\xA6\xA7\u0153\xA9\xAA\xAB\xAC\xAD\xAE\xAF\xB0\xB1\xB2\xB3\u0178\xB5\xB6\xB7\u0152\xB9\xBA\xBB\xBC\xBD\xBE\xBF\xC0\xC1\xC2\u0102\xC4\xC5\xC6\xC7\xC8\xC9\xCA\xCB\u0300\xCD\xCE\xCF\u0110\xD1\u0309\xD3\xD4\u01A0\xD6\xD7\xD8\xD9\xDA\xDB\xDC\u01AF\u0303\xDF\xE0\xE1\xE2\u0103\xE4\xE5\xE6\xE7\xE8\xE9\xEA\xEB\u0301\xED\xEE\xEF\u0111\xF1\u0323\xF3\xF4\u01A1\xF6\xF7\xF8\xF9\xFA\xFB\xFC\u01B0\u20AB\xFF"},ibm1129:"cp1129",csibm1129:"cp1129",cp1133:{type:"_sbcs",chars:"\x80\x81\x82\x83\x84\x85\x86\x87\x88\x89\x8A\x8B\x8C\x8D\x8E\x8F\x90\x91\x92\x93\x94\x95\x96\x97\x98\x99\x9A\x9B\x9C\x9D\x9E\x9F\xA0\u0E81\u0E82\u0E84\u0E87\u0E88\u0EAA\u0E8A\u0E8D\u0E94\u0E95\u0E96\u0E97\u0E99\u0E9A\u0E9B\u0E9C\u0E9D\u0E9E\u0E9F\u0EA1\u0EA2\u0EA3\u0EA5\u0EA7\u0EAB\u0EAD\u0EAE\uFFFD\uFFFD\uFFFD\u0EAF\u0EB0\u0EB2\u0EB3\u0EB4\u0EB5\u0EB6\u0EB7\u0EB8\u0EB9\u0EBC\u0EB1\u0EBB\u0EBD\uFFFD\uFFFD\uFFFD\u0EC0\u0EC1\u0EC2\u0EC3\u0EC4\u0EC8\u0EC9\u0ECA\u0ECB\u0ECC\u0ECD\u0EC6\uFFFD\u0EDC\u0EDD\u20AD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\u0ED0\u0ED1\u0ED2\u0ED3\u0ED4\u0ED5\u0ED6\u0ED7\u0ED8\u0ED9\uFFFD\uFFFD\xA2\xAC\xA6\uFFFD"},ibm1133:"cp1133",csibm1133:"cp1133",cp1161:{type:"_sbcs",chars:"\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\u0E48\u0E01\u0E02\u0E03\u0E04\u0E05\u0E06\u0E07\u0E08\u0E09\u0E0A\u0E0B\u0E0C\u0E0D\u0E0E\u0E0F\u0E10\u0E11\u0E12\u0E13\u0E14\u0E15\u0E16\u0E17\u0E18\u0E19\u0E1A\u0E1B\u0E1C\u0E1D\u0E1E\u0E1F\u0E20\u0E21\u0E22\u0E23\u0E24\u0E25\u0E26\u0E27\u0E28\u0E29\u0E2A\u0E2B\u0E2C\u0E2D\u0E2E\u0E2F\u0E30\u0E31\u0E32\u0E33\u0E34\u0E35\u0E36\u0E37\u0E38\u0E39\u0E3A\u0E49\u0E4A\u0E4B\u20AC\u0E3F\u0E40\u0E41\u0E42\u0E43\u0E44\u0E45\u0E46\u0E47\u0E48\u0E49\u0E4A\u0E4B\u0E4C\u0E4D\u0E4E\u0E4F\u0E50\u0E51\u0E52\u0E53\u0E54\u0E55\u0E56\u0E57\u0E58\u0E59\u0E5A\u0E5B\xA2\xAC\xA6\xA0"},ibm1161:"cp1161",csibm1161:"cp1161",cp1162:{type:"_sbcs",chars:"\u20AC\x81\x82\x83\x84\u2026\x86\x87\x88\x89\x8A\x8B\x8C\x8D\x8E\x8F\x90\u2018\u2019\u201C\u201D\u2022\u2013\u2014\x98\x99\x9A\x9B\x9C\x9D\x9E\x9F\xA0\u0E01\u0E02\u0E03\u0E04\u0E05\u0E06\u0E07\u0E08\u0E09\u0E0A\u0E0B\u0E0C\u0E0D\u0E0E\u0E0F\u0E10\u0E11\u0E12\u0E13\u0E14\u0E15\u0E16\u0E17\u0E18\u0E19\u0E1A\u0E1B\u0E1C\u0E1D\u0E1E\u0E1F\u0E20\u0E21\u0E22\u0E23\u0E24\u0E25\u0E26\u0E27\u0E28\u0E29\u0E2A\u0E2B\u0E2C\u0E2D\u0E2E\u0E2F\u0E30\u0E31\u0E32\u0E33\u0E34\u0E35\u0E36\u0E37\u0E38\u0E39\u0E3A\uFFFD\uFFFD\uFFFD\uFFFD\u0E3F\u0E40\u0E41\u0E42\u0E43\u0E44\u0E45\u0E46\u0E47\u0E48\u0E49\u0E4A\u0E4B\u0E4C\u0E4D\u0E4E\u0E4F\u0E50\u0E51\u0E52\u0E53\u0E54\u0E55\u0E56\u0E57\u0E58\u0E59\u0E5A\u0E5B\uFFFD\uFFFD\uFFFD\uFFFD"},ibm1162:"cp1162",csibm1162:"cp1162",cp1163:{type:"_sbcs",chars:"\x80\x81\x82\x83\x84\x85\x86\x87\x88\x89\x8A\x8B\x8C\x8D\x8E\x8F\x90\x91\x92\x93\x94\x95\x96\x97\x98\x99\x9A\x9B\x9C\x9D\x9E\x9F\xA0\xA1\xA2\xA3\u20AC\xA5\xA6\xA7\u0153\xA9\xAA\xAB\xAC\xAD\xAE\xAF\xB0\xB1\xB2\xB3\u0178\xB5\xB6\xB7\u0152\xB9\xBA\xBB\xBC\xBD\xBE\xBF\xC0\xC1\xC2\u0102\xC4\xC5\xC6\xC7\xC8\xC9\xCA\xCB\u0300\xCD\xCE\xCF\u0110\xD1\u0309\xD3\xD4\u01A0\xD6\xD7\xD8\xD9\xDA\xDB\xDC\u01AF\u0303\xDF\xE0\xE1\xE2\u0103\xE4\xE5\xE6\xE7\xE8\xE9\xEA\xEB\u0301\xED\xEE\xEF\u0111\xF1\u0323\xF3\xF4\u01A1\xF6\xF7\xF8\xF9\xFA\xFB\xFC\u01B0\u20AB\xFF"},ibm1163:"cp1163",csibm1163:"cp1163",maccroatian:{type:"_sbcs",chars:"\xC4\xC5\xC7\xC9\xD1\xD6\xDC\xE1\xE0\xE2\xE4\xE3\xE5\xE7\xE9\xE8\xEA\xEB\xED\xEC\xEE\xEF\xF1\xF3\xF2\xF4\xF6\xF5\xFA\xF9\xFB\xFC\u2020\xB0\xA2\xA3\xA7\u2022\xB6\xDF\xAE\u0160\u2122\xB4\xA8\u2260\u017D\xD8\u221E\xB1\u2264\u2265\u2206\xB5\u2202\u2211\u220F\u0161\u222B\xAA\xBA\u2126\u017E\xF8\xBF\xA1\xAC\u221A\u0192\u2248\u0106\xAB\u010C\u2026\xA0\xC0\xC3\xD5\u0152\u0153\u0110\u2014\u201C\u201D\u2018\u2019\xF7\u25CA\uFFFD\xA9\u2044\xA4\u2039\u203A\xC6\xBB\u2013\xB7\u201A\u201E\u2030\xC2\u0107\xC1\u010D\xC8\xCD\xCE\xCF\xCC\xD3\xD4\u0111\xD2\xDA\xDB\xD9\u0131\u02C6\u02DC\xAF\u03C0\xCB\u02DA\xB8\xCA\xE6\u02C7"},maccyrillic:{type:"_sbcs",chars:"\u0410\u0411\u0412\u0413\u0414\u0415\u0416\u0417\u0418\u0419\u041A\u041B\u041C\u041D\u041E\u041F\u0420\u0421\u0422\u0423\u0424\u0425\u0426\u0427\u0428\u0429\u042A\u042B\u042C\u042D\u042E\u042F\u2020\xB0\xA2\xA3\xA7\u2022\xB6\u0406\xAE\xA9\u2122\u0402\u0452\u2260\u0403\u0453\u221E\xB1\u2264\u2265\u0456\xB5\u2202\u0408\u0404\u0454\u0407\u0457\u0409\u0459\u040A\u045A\u0458\u0405\xAC\u221A\u0192\u2248\u2206\xAB\xBB\u2026\xA0\u040B\u045B\u040C\u045C\u0455\u2013\u2014\u201C\u201D\u2018\u2019\xF7\u201E\u040E\u045E\u040F\u045F\u2116\u0401\u0451\u044F\u0430\u0431\u0432\u0433\u0434\u0435\u0436\u0437\u0438\u0439\u043A\u043B\u043C\u043D\u043E\u043F\u0440\u0441\u0442\u0443\u0444\u0445\u0446\u0447\u0448\u0449\u044A\u044B\u044C\u044D\u044E\xA4"},macgreek:{type:"_sbcs",chars:"\xC4\xB9\xB2\xC9\xB3\xD6\xDC\u0385\xE0\xE2\xE4\u0384\xA8\xE7\xE9\xE8\xEA\xEB\xA3\u2122\xEE\xEF\u2022\xBD\u2030\xF4\xF6\xA6\xAD\xF9\xFB\xFC\u2020\u0393\u0394\u0398\u039B\u039E\u03A0\xDF\xAE\xA9\u03A3\u03AA\xA7\u2260\xB0\u0387\u0391\xB1\u2264\u2265\xA5\u0392\u0395\u0396\u0397\u0399\u039A\u039C\u03A6\u03AB\u03A8\u03A9\u03AC\u039D\xAC\u039F\u03A1\u2248\u03A4\xAB\xBB\u2026\xA0\u03A5\u03A7\u0386\u0388\u0153\u2013\u2015\u201C\u201D\u2018\u2019\xF7\u0389\u038A\u038C\u038E\u03AD\u03AE\u03AF\u03CC\u038F\u03CD\u03B1\u03B2\u03C8\u03B4\u03B5\u03C6\u03B3\u03B7\u03B9\u03BE\u03BA\u03BB\u03BC\u03BD\u03BF\u03C0\u03CE\u03C1\u03C3\u03C4\u03B8\u03C9\u03C2\u03C7\u03C5\u03B6\u03CA\u03CB\u0390\u03B0\uFFFD"},maciceland:{type:"_sbcs",chars:"\xC4\xC5\xC7\xC9\xD1\xD6\xDC\xE1\xE0\xE2\xE4\xE3\xE5\xE7\xE9\xE8\xEA\xEB\xED\xEC\xEE\xEF\xF1\xF3\xF2\xF4\xF6\xF5\xFA\xF9\xFB\xFC\xDD\xB0\xA2\xA3\xA7\u2022\xB6\xDF\xAE\xA9\u2122\xB4\xA8\u2260\xC6\xD8\u221E\xB1\u2264\u2265\xA5\xB5\u2202\u2211\u220F\u03C0\u222B\xAA\xBA\u2126\xE6\xF8\xBF\xA1\xAC\u221A\u0192\u2248\u2206\xAB\xBB\u2026\xA0\xC0\xC3\xD5\u0152\u0153\u2013\u2014\u201C\u201D\u2018\u2019\xF7\u25CA\xFF\u0178\u2044\xA4\xD0\xF0\xDE\xFE\xFD\xB7\u201A\u201E\u2030\xC2\xCA\xC1\xCB\xC8\xCD\xCE\xCF\xCC\xD3\xD4\uFFFD\xD2\xDA\xDB\xD9\u0131\u02C6\u02DC\xAF\u02D8\u02D9\u02DA\xB8\u02DD\u02DB\u02C7"},macroman:{type:"_sbcs",chars:"\xC4\xC5\xC7\xC9\xD1\xD6\xDC\xE1\xE0\xE2\xE4\xE3\xE5\xE7\xE9\xE8\xEA\xEB\xED\xEC\xEE\xEF\xF1\xF3\xF2\xF4\xF6\xF5\xFA\xF9\xFB\xFC\u2020\xB0\xA2\xA3\xA7\u2022\xB6\xDF\xAE\xA9\u2122\xB4\xA8\u2260\xC6\xD8\u221E\xB1\u2264\u2265\xA5\xB5\u2202\u2211\u220F\u03C0\u222B\xAA\xBA\u2126\xE6\xF8\xBF\xA1\xAC\u221A\u0192\u2248\u2206\xAB\xBB\u2026\xA0\xC0\xC3\xD5\u0152\u0153\u2013\u2014\u201C\u201D\u2018\u2019\xF7\u25CA\xFF\u0178\u2044\xA4\u2039\u203A\uFB01\uFB02\u2021\xB7\u201A\u201E\u2030\xC2\xCA\xC1\xCB\xC8\xCD\xCE\xCF\xCC\xD3\xD4\uFFFD\xD2\xDA\xDB\xD9\u0131\u02C6\u02DC\xAF\u02D8\u02D9\u02DA\xB8\u02DD\u02DB\u02C7"},macromania:{type:"_sbcs",chars:"\xC4\xC5\xC7\xC9\xD1\xD6\xDC\xE1\xE0\xE2\xE4\xE3\xE5\xE7\xE9\xE8\xEA\xEB\xED\xEC\xEE\xEF\xF1\xF3\xF2\xF4\xF6\xF5\xFA\xF9\xFB\xFC\u2020\xB0\xA2\xA3\xA7\u2022\xB6\xDF\xAE\xA9\u2122\xB4\xA8\u2260\u0102\u015E\u221E\xB1\u2264\u2265\xA5\xB5\u2202\u2211\u220F\u03C0\u222B\xAA\xBA\u2126\u0103\u015F\xBF\xA1\xAC\u221A\u0192\u2248\u2206\xAB\xBB\u2026\xA0\xC0\xC3\xD5\u0152\u0153\u2013\u2014\u201C\u201D\u2018\u2019\xF7\u25CA\xFF\u0178\u2044\xA4\u2039\u203A\u0162\u0163\u2021\xB7\u201A\u201E\u2030\xC2\xCA\xC1\xCB\xC8\xCD\xCE\xCF\xCC\xD3\xD4\uFFFD\xD2\xDA\xDB\xD9\u0131\u02C6\u02DC\xAF\u02D8\u02D9\u02DA\xB8\u02DD\u02DB\u02C7"},macthai:{type:"_sbcs",chars:"\xAB\xBB\u2026\uF88C\uF88F\uF892\uF895\uF898\uF88B\uF88E\uF891\uF894\uF897\u201C\u201D\uF899\uFFFD\u2022\uF884\uF889\uF885\uF886\uF887\uF888\uF88A\uF88D\uF890\uF893\uF896\u2018\u2019\uFFFD\xA0\u0E01\u0E02\u0E03\u0E04\u0E05\u0E06\u0E07\u0E08\u0E09\u0E0A\u0E0B\u0E0C\u0E0D\u0E0E\u0E0F\u0E10\u0E11\u0E12\u0E13\u0E14\u0E15\u0E16\u0E17\u0E18\u0E19\u0E1A\u0E1B\u0E1C\u0E1D\u0E1E\u0E1F\u0E20\u0E21\u0E22\u0E23\u0E24\u0E25\u0E26\u0E27\u0E28\u0E29\u0E2A\u0E2B\u0E2C\u0E2D\u0E2E\u0E2F\u0E30\u0E31\u0E32\u0E33\u0E34\u0E35\u0E36\u0E37\u0E38\u0E39\u0E3A\uFEFF\u200B\u2013\u2014\u0E3F\u0E40\u0E41\u0E42\u0E43\u0E44\u0E45\u0E46\u0E47\u0E48\u0E49\u0E4A\u0E4B\u0E4C\u0E4D\u2122\u0E4F\u0E50\u0E51\u0E52\u0E53\u0E54\u0E55\u0E56\u0E57\u0E58\u0E59\xAE\xA9\uFFFD\uFFFD\uFFFD\uFFFD"},macturkish:{type:"_sbcs",chars:"\xC4\xC5\xC7\xC9\xD1\xD6\xDC\xE1\xE0\xE2\xE4\xE3\xE5\xE7\xE9\xE8\xEA\xEB\xED\xEC\xEE\xEF\xF1\xF3\xF2\xF4\xF6\xF5\xFA\xF9\xFB\xFC\u2020\xB0\xA2\xA3\xA7\u2022\xB6\xDF\xAE\xA9\u2122\xB4\xA8\u2260\xC6\xD8\u221E\xB1\u2264\u2265\xA5\xB5\u2202\u2211\u220F\u03C0\u222B\xAA\xBA\u2126\xE6\xF8\xBF\xA1\xAC\u221A\u0192\u2248\u2206\xAB\xBB\u2026\xA0\xC0\xC3\xD5\u0152\u0153\u2013\u2014\u201C\u201D\u2018\u2019\xF7\u25CA\xFF\u0178\u011E\u011F\u0130\u0131\u015E\u015F\u2021\xB7\u201A\u201E\u2030\xC2\xCA\xC1\xCB\xC8\xCD\xCE\xCF\xCC\xD3\xD4\uFFFD\xD2\xDA\xDB\xD9\uFFFD\u02C6\u02DC\xAF\u02D8\u02D9\u02DA\xB8\u02DD\u02DB\u02C7"},macukraine:{type:"_sbcs",chars:"\u0410\u0411\u0412\u0413\u0414\u0415\u0416\u0417\u0418\u0419\u041A\u041B\u041C\u041D\u041E\u041F\u0420\u0421\u0422\u0423\u0424\u0425\u0426\u0427\u0428\u0429\u042A\u042B\u042C\u042D\u042E\u042F\u2020\xB0\u0490\xA3\xA7\u2022\xB6\u0406\xAE\xA9\u2122\u0402\u0452\u2260\u0403\u0453\u221E\xB1\u2264\u2265\u0456\xB5\u0491\u0408\u0404\u0454\u0407\u0457\u0409\u0459\u040A\u045A\u0458\u0405\xAC\u221A\u0192\u2248\u2206\xAB\xBB\u2026\xA0\u040B\u045B\u040C\u045C\u0455\u2013\u2014\u201C\u201D\u2018\u2019\xF7\u201E\u040E\u045E\u040F\u045F\u2116\u0401\u0451\u044F\u0430\u0431\u0432\u0433\u0434\u0435\u0436\u0437\u0438\u0439\u043A\u043B\u043C\u043D\u043E\u043F\u0440\u0441\u0442\u0443\u0444\u0445\u0446\u0447\u0448\u0449\u044A\u044B\u044C\u044D\u044E\xA4"},koi8r:{type:"_sbcs",chars:"\u2500\u2502\u250C\u2510\u2514\u2518\u251C\u2524\u252C\u2534\u253C\u2580\u2584\u2588\u258C\u2590\u2591\u2592\u2593\u2320\u25A0\u2219\u221A\u2248\u2264\u2265\xA0\u2321\xB0\xB2\xB7\xF7\u2550\u2551\u2552\u0451\u2553\u2554\u2555\u2556\u2557\u2558\u2559\u255A\u255B\u255C\u255D\u255E\u255F\u2560\u2561\u0401\u2562\u2563\u2564\u2565\u2566\u2567\u2568\u2569\u256A\u256B\u256C\xA9\u044E\u0430\u0431\u0446\u0434\u0435\u0444\u0433\u0445\u0438\u0439\u043A\u043B\u043C\u043D\u043E\u043F\u044F\u0440\u0441\u0442\u0443\u0436\u0432\u044C\u044B\u0437\u0448\u044D\u0449\u0447\u044A\u042E\u0410\u0411\u0426\u0414\u0415\u0424\u0413\u0425\u0418\u0419\u041A\u041B\u041C\u041D\u041E\u041F\u042F\u0420\u0421\u0422\u0423\u0416\u0412\u042C\u042B\u0417\u0428\u042D\u0429\u0427\u042A"},koi8u:{type:"_sbcs",chars:"\u2500\u2502\u250C\u2510\u2514\u2518\u251C\u2524\u252C\u2534\u253C\u2580\u2584\u2588\u258C\u2590\u2591\u2592\u2593\u2320\u25A0\u2219\u221A\u2248\u2264\u2265\xA0\u2321\xB0\xB2\xB7\xF7\u2550\u2551\u2552\u0451\u0454\u2554\u0456\u0457\u2557\u2558\u2559\u255A\u255B\u0491\u255D\u255E\u255F\u2560\u2561\u0401\u0404\u2563\u0406\u0407\u2566\u2567\u2568\u2569\u256A\u0490\u256C\xA9\u044E\u0430\u0431\u0446\u0434\u0435\u0444\u0433\u0445\u0438\u0439\u043A\u043B\u043C\u043D\u043E\u043F\u044F\u0440\u0441\u0442\u0443\u0436\u0432\u044C\u044B\u0437\u0448\u044D\u0449\u0447\u044A\u042E\u0410\u0411\u0426\u0414\u0415\u0424\u0413\u0425\u0418\u0419\u041A\u041B\u041C\u041D\u041E\u041F\u042F\u0420\u0421\u0422\u0423\u0416\u0412\u042C\u042B\u0417\u0428\u042D\u0429\u0427\u042A"},koi8ru:{type:"_sbcs",chars:"\u2500\u2502\u250C\u2510\u2514\u2518\u251C\u2524\u252C\u2534\u253C\u2580\u2584\u2588\u258C\u2590\u2591\u2592\u2593\u2320\u25A0\u2219\u221A\u2248\u2264\u2265\xA0\u2321\xB0\xB2\xB7\xF7\u2550\u2551\u2552\u0451\u0454\u2554\u0456\u0457\u2557\u2558\u2559\u255A\u255B\u0491\u045E\u255E\u255F\u2560\u2561\u0401\u0404\u2563\u0406\u0407\u2566\u2567\u2568\u2569\u256A\u0490\u040E\xA9\u044E\u0430\u0431\u0446\u0434\u0435\u0444\u0433\u0445\u0438\u0439\u043A\u043B\u043C\u043D\u043E\u043F\u044F\u0440\u0441\u0442\u0443\u0436\u0432\u044C\u044B\u0437\u0448\u044D\u0449\u0447\u044A\u042E\u0410\u0411\u0426\u0414\u0415\u0424\u0413\u0425\u0418\u0419\u041A\u041B\u041C\u041D\u041E\u041F\u042F\u0420\u0421\u0422\u0423\u0416\u0412\u042C\u042B\u0417\u0428\u042D\u0429\u0427\u042A"},koi8t:{type:"_sbcs",chars:"\u049B\u0493\u201A\u0492\u201E\u2026\u2020\u2021\uFFFD\u2030\u04B3\u2039\u04B2\u04B7\u04B6\uFFFD\u049A\u2018\u2019\u201C\u201D\u2022\u2013\u2014\uFFFD\u2122\uFFFD\u203A\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\u04EF\u04EE\u0451\xA4\u04E3\xA6\xA7\uFFFD\uFFFD\uFFFD\xAB\xAC\xAD\xAE\uFFFD\xB0\xB1\xB2\u0401\uFFFD\u04E2\xB6\xB7\uFFFD\u2116\uFFFD\xBB\uFFFD\uFFFD\uFFFD\xA9\u044E\u0430\u0431\u0446\u0434\u0435\u0444\u0433\u0445\u0438\u0439\u043A\u043B\u043C\u043D\u043E\u043F\u044F\u0440\u0441\u0442\u0443\u0436\u0432\u044C\u044B\u0437\u0448\u044D\u0449\u0447\u044A\u042E\u0410\u0411\u0426\u0414\u0415\u0424\u0413\u0425\u0418\u0419\u041A\u041B\u041C\u041D\u041E\u041F\u042F\u0420\u0421\u0422\u0423\u0416\u0412\u042C\u042B\u0417\u0428\u042D\u0429\u0427\u042A"},armscii8:{type:"_sbcs",chars:"\x80\x81\x82\x83\x84\x85\x86\x87\x88\x89\x8A\x8B\x8C\x8D\x8E\x8F\x90\x91\x92\x93\x94\x95\x96\x97\x98\x99\x9A\x9B\x9C\x9D\x9E\x9F\xA0\uFFFD\u0587\u0589)(\xBB\xAB\u2014.\u055D,-\u058A\u2026\u055C\u055B\u055E\u0531\u0561\u0532\u0562\u0533\u0563\u0534\u0564\u0535\u0565\u0536\u0566\u0537\u0567\u0538\u0568\u0539\u0569\u053A\u056A\u053B\u056B\u053C\u056C\u053D\u056D\u053E\u056E\u053F\u056F\u0540\u0570\u0541\u0571\u0542\u0572\u0543\u0573\u0544\u0574\u0545\u0575\u0546\u0576\u0547\u0577\u0548\u0578\u0549\u0579\u054A\u057A\u054B\u057B\u054C\u057C\u054D\u057D\u054E\u057E\u054F\u057F\u0550\u0580\u0551\u0581\u0552\u0582\u0553\u0583\u0554\u0584\u0555\u0585\u0556\u0586\u055A\uFFFD"},rk1048:{type:"_sbcs",chars:"\u0402\u0403\u201A\u0453\u201E\u2026\u2020\u2021\u20AC\u2030\u0409\u2039\u040A\u049A\u04BA\u040F\u0452\u2018\u2019\u201C\u201D\u2022\u2013\u2014\uFFFD\u2122\u0459\u203A\u045A\u049B\u04BB\u045F\xA0\u04B0\u04B1\u04D8\xA4\u04E8\xA6\xA7\u0401\xA9\u0492\xAB\xAC\xAD\xAE\u04AE\xB0\xB1\u0406\u0456\u04E9\xB5\xB6\xB7\u0451\u2116\u0493\xBB\u04D9\u04A2\u04A3\u04AF\u0410\u0411\u0412\u0413\u0414\u0415\u0416\u0417\u0418\u0419\u041A\u041B\u041C\u041D\u041E\u041F\u0420\u0421\u0422\u0423\u0424\u0425\u0426\u0427\u0428\u0429\u042A\u042B\u042C\u042D\u042E\u042F\u0430\u0431\u0432\u0433\u0434\u0435\u0436\u0437\u0438\u0439\u043A\u043B\u043C\u043D\u043E\u043F\u0440\u0441\u0442\u0443\u0444\u0445\u0446\u0447\u0448\u0449\u044A\u044B\u044C\u044D\u044E\u044F"},tcvn:{type:"_sbcs",chars:`\0\xDA\u1EE4\u1EEA\u1EEC\u1EEE\x07\b
145
145
  \v\f\r\u1EE8\u1EF0\u1EF2\u1EF6\u1EF8\xDD\u1EF4\x1B !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\\]^_\`abcdefghijklmnopqrstuvwxyz{|}~\x7F\xC0\u1EA2\xC3\xC1\u1EA0\u1EB6\u1EAC\xC8\u1EBA\u1EBC\xC9\u1EB8\u1EC6\xCC\u1EC8\u0128\xCD\u1ECA\xD2\u1ECE\xD5\xD3\u1ECC\u1ED8\u1EDC\u1EDE\u1EE0\u1EDA\u1EE2\xD9\u1EE6\u0168\xA0\u0102\xC2\xCA\xD4\u01A0\u01AF\u0110\u0103\xE2\xEA\xF4\u01A1\u01B0\u0111\u1EB0\u0300\u0309\u0303\u0301\u0323\xE0\u1EA3\xE3\xE1\u1EA1\u1EB2\u1EB1\u1EB3\u1EB5\u1EAF\u1EB4\u1EAE\u1EA6\u1EA8\u1EAA\u1EA4\u1EC0\u1EB7\u1EA7\u1EA9\u1EAB\u1EA5\u1EAD\xE8\u1EC2\u1EBB\u1EBD\xE9\u1EB9\u1EC1\u1EC3\u1EC5\u1EBF\u1EC7\xEC\u1EC9\u1EC4\u1EBE\u1ED2\u0129\xED\u1ECB\xF2\u1ED4\u1ECF\xF5\xF3\u1ECD\u1ED3\u1ED5\u1ED7\u1ED1\u1ED9\u1EDD\u1EDF\u1EE1\u1EDB\u1EE3\xF9\u1ED6\u1EE7\u0169\xFA\u1EE5\u1EEB\u1EED\u1EEF\u1EE9\u1EF1\u1EF3\u1EF7\u1EF9\xFD\u1EF5\u1ED0`},georgianacademy:{type:"_sbcs",chars:"\x80\x81\u201A\u0192\u201E\u2026\u2020\u2021\u02C6\u2030\u0160\u2039\u0152\x8D\x8E\x8F\x90\u2018\u2019\u201C\u201D\u2022\u2013\u2014\u02DC\u2122\u0161\u203A\u0153\x9D\x9E\u0178\xA0\xA1\xA2\xA3\xA4\xA5\xA6\xA7\xA8\xA9\xAA\xAB\xAC\xAD\xAE\xAF\xB0\xB1\xB2\xB3\xB4\xB5\xB6\xB7\xB8\xB9\xBA\xBB\xBC\xBD\xBE\xBF\u10D0\u10D1\u10D2\u10D3\u10D4\u10D5\u10D6\u10D7\u10D8\u10D9\u10DA\u10DB\u10DC\u10DD\u10DE\u10DF\u10E0\u10E1\u10E2\u10E3\u10E4\u10E5\u10E6\u10E7\u10E8\u10E9\u10EA\u10EB\u10EC\u10ED\u10EE\u10EF\u10F0\u10F1\u10F2\u10F3\u10F4\u10F5\u10F6\xE7\xE8\xE9\xEA\xEB\xEC\xED\xEE\xEF\xF0\xF1\xF2\xF3\xF4\xF5\xF6\xF7\xF8\xF9\xFA\xFB\xFC\xFD\xFE\xFF"},georgianps:{type:"_sbcs",chars:"\x80\x81\u201A\u0192\u201E\u2026\u2020\u2021\u02C6\u2030\u0160\u2039\u0152\x8D\x8E\x8F\x90\u2018\u2019\u201C\u201D\u2022\u2013\u2014\u02DC\u2122\u0161\u203A\u0153\x9D\x9E\u0178\xA0\xA1\xA2\xA3\xA4\xA5\xA6\xA7\xA8\xA9\xAA\xAB\xAC\xAD\xAE\xAF\xB0\xB1\xB2\xB3\xB4\xB5\xB6\xB7\xB8\xB9\xBA\xBB\xBC\xBD\xBE\xBF\u10D0\u10D1\u10D2\u10D3\u10D4\u10D5\u10D6\u10F1\u10D7\u10D8\u10D9\u10DA\u10DB\u10DC\u10F2\u10DD\u10DE\u10DF\u10E0\u10E1\u10E2\u10F3\u10E3\u10E4\u10E5\u10E6\u10E7\u10E8\u10E9\u10EA\u10EB\u10EC\u10ED\u10EE\u10F4\u10EF\u10F0\u10F5\xE6\xE7\xE8\xE9\xEA\xEB\xEC\xED\xEE\xEF\xF0\xF1\xF2\xF3\xF4\xF5\xF6\xF7\xF8\xF9\xFA\xFB\xFC\xFD\xFE\xFF"},pt154:{type:"_sbcs",chars:"\u0496\u0492\u04EE\u0493\u201E\u2026\u04B6\u04AE\u04B2\u04AF\u04A0\u04E2\u04A2\u049A\u04BA\u04B8\u0497\u2018\u2019\u201C\u201D\u2022\u2013\u2014\u04B3\u04B7\u04A1\u04E3\u04A3\u049B\u04BB\u04B9\xA0\u040E\u045E\u0408\u04E8\u0498\u04B0\xA7\u0401\xA9\u04D8\xAB\xAC\u04EF\xAE\u049C\xB0\u04B1\u0406\u0456\u0499\u04E9\xB6\xB7\u0451\u2116\u04D9\xBB\u0458\u04AA\u04AB\u049D\u0410\u0411\u0412\u0413\u0414\u0415\u0416\u0417\u0418\u0419\u041A\u041B\u041C\u041D\u041E\u041F\u0420\u0421\u0422\u0423\u0424\u0425\u0426\u0427\u0428\u0429\u042A\u042B\u042C\u042D\u042E\u042F\u0430\u0431\u0432\u0433\u0434\u0435\u0436\u0437\u0438\u0439\u043A\u043B\u043C\u043D\u043E\u043F\u0440\u0441\u0442\u0443\u0444\u0445\u0446\u0447\u0448\u0449\u044A\u044B\u044C\u044D\u044E\u044F"},viscii:{type:"_sbcs",chars:`\0\u1EB2\u1EB4\u1EAA\x07\b
@@ -218,7 +218,13 @@ K\u1EBFt qu\u1EA3:
218
218
  ${t}
219
219
  `),r&&process.stderr.write(` 0. \u2B50 T\u1EA4T C\u1EA2
220
220
  `),e.forEach((a,c)=>process.stderr.write(` ${c+1}. ${a.name}
221
- `));let o=n?"s\u1ED1 c\xE1ch nhau b\u1EDFi d\u1EA5u ph\u1EA9y":"m\u1ED9t s\u1ED1";i.question(`Ch\u1ECDn (${o}${r?", 0=all":""}): `,a=>{i.close();let c=String(a||"").trim().toLowerCase();if(r&&(c==="0"||c==="all"||c===""))return s(e.map(l=>l.value));let u=c.split(",").map(l=>parseInt(l.trim(),10)).filter(l=>Number.isInteger(l)&&l>=1&&l<=e.length),d=(n?u:u.slice(0,1)).map(l=>e[l-1].value);s(d)})})}function CN(t){let e=String(t&&t.name+" "+t.message||"");return/ExitPromptError|force closed|SIGINT|canceled|cancelled/i.test(e)}async function Mg({message:t="Ch\u1ECDn:",multi:e=!0,all:n=!0,choices:r=[]},{forceAll:s=!1}={}){if(!r.length)return[];if(s)return r.map(a=>a.value);let i=n?[{name:`\u2B50 T\u1EA4T C\u1EA2 (${r.length})`,value:Qi},...r]:r,o=[{key:"b",label:yr("BACK_LABEL"),value:"__back__"},{key:"x",label:yr("EXIT_LABEL"),value:"__exit__"}];try{try{if(e){let l=await wN({message:t,choices:i,hotkeys:o,pageSize:Math.min(i.length+2,20)});return l.action==="__exit__"&&(console.log(yr("EXITED")),process.exit(0)),l.action==="__back__"?Gs:l.values.includes(Qi)?r.map(f=>f.value):l.values}let d=await AN({message:t,choices:i,hotkeys:o,pageSize:Math.min(i.length+2,20)});return d==="__exit__"&&(console.log(yr("EXITED")),process.exit(0)),d==="__back__"?Gs:d===Qi?r.map(l=>l.value):[d]}catch(d){if(String(d&&d.message)!=="no-core")throw d}let a=await Dg(),c={output:process.stderr},u=[{name:`b ${yr("BACK_LABEL")}`,value:"__back__"},{name:`x ${yr("EXIT_LABEL")}`,value:"__exit__"}];if(e&&a&&typeof a.checkbox=="function"){let d=await a.checkbox({message:t,choices:[...i,new a.Separator,...u],pageSize:Math.min(i.length+4,20),instructions:!1,theme:Og(!0)},c);return d.includes("__exit__")&&(console.log(yr("EXITED")),process.exit(0)),d.includes("__back__")?Gs:d.includes(Qi)?r.map(l=>l.value):d}if(!e&&a&&typeof a.select=="function"){let d=await a.select({message:t,choices:[...i,new a.Separator,...u],pageSize:Math.min(i.length+4,20),theme:Og(!1)},c);return d==="__exit__"&&(console.log(yr("EXITED")),process.exit(0)),d==="__back__"?Gs:d===Qi?r.map(l=>l.value):[d]}}catch(a){if(CN(a))return[];throw a}return LN(t,r,e,n)}async function kN(t){let e=!1,n=!1,r="Ch\u1ECDn:",s="",i=[];for(let d=0;d<t.length;d+=1){let l=t[d];l==="--multi"||l==="-m"?e=!0:l==="--single"?e=!1:l==="--all"?n=!0:l==="--no-all"?n=!1:l==="--message"||l==="-M"?r=t[++d]||r:l==="--from"||l==="-f"?s=t[++d]||"":i.push(l)}let o=s?{selectFrom:s}:{selectChoices:i.join(`
221
+ `));let o=n?"s\u1ED1 c\xE1ch nhau b\u1EDFi d\u1EA5u ph\u1EA9y":"m\u1ED9t s\u1ED1";i.question(`Ch\u1ECDn (${o}${r?", 0=all":""}): `,a=>{i.close();let c=String(a||"").trim().toLowerCase();if(r&&(c==="0"||c==="all"||c===""))return s(e.map(l=>l.value));let u=c.split(",").map(l=>parseInt(l.trim(),10)).filter(l=>Number.isInteger(l)&&l>=1&&l<=e.length),d=(n?u:u.slice(0,1)).map(l=>e[l-1].value);s(d)})})}function CN(t){let e=String(t&&t.name+" "+t.message||"");return/ExitPromptError|force closed|SIGINT|canceled|cancelled/i.test(e)}async function Mg({message:t="Ch\u1ECDn:",multi:e=!0,all:n=!0,choices:r=[]},{forceAll:s=!1}={}){if(!r.length)return[];if(s){let a=r.map(c=>c.value);return e?a:a.slice(0,1)}let i=n?[{name:`\u2B50 T\u1EA4T C\u1EA2 (${r.length})`,value:Qi},...r]:r,o=[{key:"b",label:yr("BACK_LABEL"),value:"__back__"},{key:"x",label:yr("EXIT_LABEL"),value:"__exit__"}];try{try{if(e){let l=await wN({message:t,choices:i,hotkeys:o,pageSize:Math.min(i.length+2,20)});return l.action==="__exit__"&&(process.stderr.write(`${yr("EXITED")}
222
+ `),process.exit(0)),l.action==="__back__"?Gs:l.values.includes(Qi)?r.map(f=>f.value):l.values}let d=await AN({message:t,choices:i,hotkeys:o,pageSize:Math.min(i.length+2,20)});return d==="__exit__"&&(process.stderr.write(`${yr("EXITED")}
223
+ `),process.exit(0)),d==="__back__"?Gs:d===Qi?r.map(l=>l.value):[d]}catch(d){if(String(d&&d.message)!=="no-core")throw d}let a=await Dg(),c={output:process.stderr},u=[{name:`b ${yr("BACK_LABEL")}`,value:"__back__"},{name:`x ${yr("EXIT_LABEL")}`,value:"__exit__"}];if(e&&a&&typeof a.checkbox=="function"){let d=await a.checkbox({message:t,choices:[...i,new a.Separator,...u],pageSize:Math.min(i.length+4,20),instructions:!1,theme:Og(!0)},c);return d.includes("__exit__")&&(process.stderr.write(`${yr("EXITED")}
224
+ `),process.exit(0)),d.includes("__back__")?Gs:d.includes(Qi)?r.map(l=>l.value):d}if(!e&&a&&typeof a.select=="function"){let d=await a.select({message:t,choices:[...i,new a.Separator,...u],pageSize:Math.min(i.length+4,20),theme:Og(!1)},c);return d==="__exit__"&&(process.stderr.write(`${yr("EXITED")}
225
+ `),process.exit(0)),d==="__back__"?Gs:d===Qi?r.map(l=>l.value):[d]}}catch(a){if(CN(a))return[];throw a}return LN(t,r,e,n)}async function kN(t){let e=!1,n=!1,r="Ch\u1ECDn:",s="",i=[];if(t.includes("--help")||t.includes("-h")){process.stdout.write(['usage: pan select [--multi] [--all] [--message M] [--from "cmd"] [choice...]',"","Arrow-key picker; prints the chosen value(s) to stdout, one per line.","The menu itself goes to stderr, so it is safe inside $( ).",""," --multi, -m Choose several (space to toggle, enter to confirm)"," --single Choose exactly one (default)",' --all Offer an extra "ALL" entry'," --message, -M M Prompt text"," --from, -f cmd Shell command whose stdout lines become the choices","","Non-TTY or PAN_ALL=1 selects everything without prompting.","",` ds="$(pan select -M 'Design system:' shadcn antd mui)"`,` files="$(pan select -m -f 'ls *.yaml')"`].join(`
226
+ `)+`
227
+ `);return}for(let d=0;d<t.length;d+=1){let l=t[d];l==="--multi"||l==="-m"?e=!0:l==="--single"?e=!1:l==="--all"?n=!0:l==="--no-all"?n=!1:l==="--message"||l==="-M"?r=t[++d]||r:l==="--from"||l==="-f"?s=t[++d]||"":i.push(l)}let o=s?{selectFrom:s}:{selectChoices:i.join(`
222
228
  `)},a=Pg(o,{cwd:process.cwd(),env:process.env}),c=process.env.PAN_ALL==="1"||!process.stdin.isTTY,u=await Mg({message:r,multi:e,all:n,choices:a},{forceAll:c});u!==Gs&&u.length&&process.stdout.write(u.join(`
223
229
  `)+`
224
230
  `)}Bg.exports={loadInquirer:Dg,resolveChoices:Pg,runSelect:Mg,runSelectCli:kN,hasSelect:vN,SELECT_BACK:Gs}});var bd=g((vG,Hg)=>{var RN=require("fs"),Ug=require("path"),{spawn:NN,spawnSync:wG}=require("child_process"),{getCommandDefinition:jg,commandBaseDir:IN,resolveCommandName:ON,parseSequenceSteps:DN}=ws(),{sourceMatchesProject:PN}=_n(),{runShellScript:MN,runExecLine:BN,spawnOptions:UN}=Fn(),{hasSelect:jN,resolveChoices:$N,runSelect:$g,SELECT_BACK:gd}=Ws(),{t:Rt}=he();function Fg(t){if(!RN.existsSync(t))throw new Error(Rt("DIRECTORY_NOT_FOUND__DIR",{dir:t}))}function Ed(t,e){let n=IN(t);return e?Ug.isAbsolute(e)?e:Ug.resolve(n,e):n}function yd(t,e,n,r){let s={...process.env,PAN_REPO_ROOT:t.root,PAN_WORKSPACE_ROOT:t.workspaceRoot,PAN_PROJECT_ROOT:t.workspaceRoot,PAN_ARGS:e.join(" ")};return e.forEach((i,o)=>{s[`PAN_ARG_${o+1}`]=i}),Array.isArray(n)&&(s.PAN_SELECTED=n.join(`
@@ -530,7 +536,7 @@ v\xED d\u1EE5:
530
536
  pan stats review -m an@fpt.com -p csdl-cc-backend --since 7 -o review.md
531
537
  `)}async function iO(t){let e=rO(t),n=["report","people","review"].includes(e._[0])?e._.shift():"report";return e._[0]==="help"||e.help?sO():n==="review"?uO(e):n==="people"?cO(e):aO(e)}function oO(t){let{repos:e}=Ld(),n=ac(t),r=!t.headOnly,s=r?"m\u1ECDi nh\xE1nh":"ch\u1EC9 HEAD";console.log(`\u{1F50D} Qu\xE9t ${e.length} repo \xB7 ${s} \xB7 ${n.label}:`);let{commits:i,repoStatus:o}=LE(e,n,{allBranches:r}),a=CE(to.join(cc(),"alias-map.json"));return{repos:e,range:n,commits:i,repoStatus:o,aliasMap:a}}function aO(t){let{repos:e}=Ld(),n=ac({}),r=!t.headOnly,s=r?"m\u1ECDi nh\xE1nh":"ch\u1EC9 HEAD";console.log(`\u{1F50D} Qu\xE9t ${e.length} repo \xB7 ${s} \xB7 to\xE0n b\u1ED9 (l\u1ECDc th\u1EDDi gian trong report):`);let{commits:i,repoStatus:o}=LE(e,n,{allBranches:r}),a=CE(to.join(cc(),"alias-map.json")),c=i.map(_=>({e:XI(_.email,a),n:_.name||_.email,t:_.ts,r:_.repoName,a:_.additions,d:_.deletions})),u=o.filter(_=>!_.available).map(_=>({name:_.name,reason:_.reason})),d=ac(t),l={reposTotal:o.length,reposAvailable:o.filter(_=>_.available).length,unavailable:u,initialSince:t.since!=null?Number(t.since):null,initialFrom:t.from||null,initialTo:t.to||null,initialMembers:t.member?[t.member]:[]},f=ZI(c,l),p=t.out||to.join(cc(),"report.html");vd.writeFileSync(p,f),console.log(`\u{1F4BE} \u0110\xE3 ghi ${p} (${c.length} commit)`),u.length&&console.log(`\u26A0\uFE0F ${u.length} repo kh\xF4ng \u0111\u1ECDc \u0111\u01B0\u1EE3c (\u0111\xE3 ghi c\u1EA3nh b\xE1o trong report).`),eO(f,{port:t.port||4321,open:t.open})}function cO(t){let{commits:e,aliasMap:n}=oO(t),{members:r}=QI(e,n);console.log(`
532
538
  \u{1F465} ${r.length} th\xE0nh vi\xEAn tham gia:
533
- `);for(let s of r)console.log(` ${String(s.commits).padStart(5)} commit ${s.name} <${s.email}>`)}function uO(t){if(!t.member||!t.project)throw new Error("review c\u1EA7n --member <email|t\xEAn> v\xE0 --project <t\xEAn repo>.");let{repos:e}=Ld(),n=e.find(a=>a.name===t.project);if(!n)throw new Error(`Kh\xF4ng c\xF3 d\u1EF1 \xE1n '${t.project}' (repo kh\u1EA3 d\u1EE5ng: ${e.map(a=>a.name).join(", ")}).`);if(!vd.existsSync(n.dir))throw new Error(`D\u1EF1 \xE1n '${t.project}' ch\u01B0a clone (${n.dir}).`);let r=ac(t);console.log(`\u{1F4DD} T\u1EA1o review: ${t.member} \xD7 ${t.project} (${r.label})`);let s=tO(n,t.member,r,{withDiff:t.diff,maxDiffLines:t.maxDiffLines,allBranches:!t.headOnly}),i=`${t.project}_${t.member.replace(/[^a-z0-9]+/gi,"-")}`.toLowerCase(),o=t.out||to.join(cc(),`review-${i}.md`);nO(o,s),console.log(`\u2705 \u0110\xE3 ghi ${o}`),console.log(" \u2192 M\u1EDF file n\xE0y v\xE0 nh\u1EDD AI review/ch\u1EA5m \u0111i\u1EC3m.")}kE.exports={runStats:iO}});var RE=g((jG,lO)=>{lO.exports={name:"pan-stack-cli",version:"0.2.3",description:"PAN Stack CLI \u2014 multi-repo git and project commands from .project.yaml",license:"MIT",bin:{pan:"bin/pan.js"},files:["bin"],scripts:{build:"node tools/pan-stack-cli/build.mjs",prepare:"node tools/pan-stack-cli/build.mjs",prepublishOnly:"node tools/pan-stack-cli/build.mjs",test:"node --test tools/pan-stack-plan/test/ tools/pan-stack-cli/test/","test:pan-stack-plan":"node --test tools/pan-stack-plan/test/","test:pan-stack-cli":"node --test tools/pan-stack-cli/test/"},engines:{node:">=18"},dependencies:{"@inquirer/core":"^11.2.1","@inquirer/prompts":"^8.5.2",serve:"^14.2.4"},keywords:["pan-stack","monorepo","git","cli"],repository:{type:"git",url:"https://github.com/doiya46/pan-stack.git",directory:".pan/pan-stack-cli"},devDependencies:{"@inquirer/testing":"^3.3.9","csv-parse":"7.0.1","csv-stringify":"6.8.1",esbuild:"0.28.1",marked:"15.0.12","sanitize-html":"2.16.0"}}});var OE=g(($G,IE)=>{var dO=require("path"),{loadAllCommandSources:fO}=_n(),{listCommands:kd}=ws(),{runProjectCommand:pO,sourceLabel:uc}=bd(),{loadInquirer:NE}=Ws(),{menuSelect:hO,buildMenuPrompt:_O}=qt(),{helpTheme:mO}=Is(),{t:xt}=he();function xO(t){let e=String(t&&t.name+" "+t.message||"");return/ExitPromptError|force closed|SIGINT|cancel/i.test(e)}async function Rd({message:t,choices:e,hotkeys:n=[]}){try{return await hO({message:t,choices:e,hotkeys:n})}catch(r){if(String(r&&r.message)!=="no-core")throw r;let s=await NE();if(!s||typeof s.select!="function")return"__exit__";let i=n.map(a=>({name:`${a.key} ${a.label}`,value:a.value})),o=i.length?[...e,new s.Separator,...i]:e;return s.select({message:t,choices:o,pageSize:20,loop:!1,theme:mO(!1)})}}async function gO({printUsage:t,version:e}={}){let n=await _O(),r=await NE();if(!n&&(!r||typeof r.select!="function"))return!1;let s=fO().filter(i=>kd(i).length>0).sort((i,o)=>uc(i).localeCompare(uc(o)));if(s.length===0)return console.log(xt("NO_PAN_YAML_WITH_COMMANDS")),console.log(xt("NO_PAN_YAML_BUT_GIT_STILL_WORKS")),!1;try{for(;;){let i=await Rd({message:xt("MENU_SELECT_PROJECT"),choices:s.map((f,p)=>({name:uc(f),value:p,description:`${kd(f).length} ${xt("COMMANDS_LABEL")} \xB7 ${f.root}`})),hotkeys:[{key:"h",label:xt("HELP_LABEL"),value:"__help__"},{key:"v",label:xt("VERSION_LABEL"),value:"__version__"},{key:"x",label:xt("EXIT_LABEL"),value:"__exit__"}]});if(i==="__exit__")return!0;if(i==="__version__"){console.log(`pan-stack-cli ${e||"?"}`);continue}if(i==="__help__"){typeof t=="function"&&t();continue}let o=s[i],a=kd(o),c=await Rd({message:`[${uc(o)}] ${xt("MENU_SELECT_COMMAND")}`,choices:a.map(f=>({name:f.name+(f.aliases&&f.aliases.length?` (${f.aliases.join(", ")})`:"")+(f.hasTargets?` [${f.targets.join("|")}]`:""),value:f.name,description:f.description||""})),hotkeys:[{key:"b",label:xt("BACK_LABEL"),value:"__back__"},{key:"x",label:xt("EXIT_LABEL"),value:"__exit__"}]});if(c==="__exit__")return!0;if(c==="__back__")continue;let u=o.commands[c],d=[];if(u&&u.targets&&Object.keys(u.targets).length>0){let f=Object.keys(u.targets),p=await Rd({message:xt("SELECT_TARGET__CMD",{cmd:c}),choices:[...f.map(_=>({name:_,value:_})),{name:xt("DEFAULT_LABEL"),value:"__default__"}],hotkeys:[{key:"b",label:xt("BACK_LABEL"),value:"__back__"}]});if(p==="__back__")continue;p!=="__default__"&&d.push(p)}console.error(`
539
+ `);for(let s of r)console.log(` ${String(s.commits).padStart(5)} commit ${s.name} <${s.email}>`)}function uO(t){if(!t.member||!t.project)throw new Error("review c\u1EA7n --member <email|t\xEAn> v\xE0 --project <t\xEAn repo>.");let{repos:e}=Ld(),n=e.find(a=>a.name===t.project);if(!n)throw new Error(`Kh\xF4ng c\xF3 d\u1EF1 \xE1n '${t.project}' (repo kh\u1EA3 d\u1EE5ng: ${e.map(a=>a.name).join(", ")}).`);if(!vd.existsSync(n.dir))throw new Error(`D\u1EF1 \xE1n '${t.project}' ch\u01B0a clone (${n.dir}).`);let r=ac(t);console.log(`\u{1F4DD} T\u1EA1o review: ${t.member} \xD7 ${t.project} (${r.label})`);let s=tO(n,t.member,r,{withDiff:t.diff,maxDiffLines:t.maxDiffLines,allBranches:!t.headOnly}),i=`${t.project}_${t.member.replace(/[^a-z0-9]+/gi,"-")}`.toLowerCase(),o=t.out||to.join(cc(),`review-${i}.md`);nO(o,s),console.log(`\u2705 \u0110\xE3 ghi ${o}`),console.log(" \u2192 M\u1EDF file n\xE0y v\xE0 nh\u1EDD AI review/ch\u1EA5m \u0111i\u1EC3m.")}kE.exports={runStats:iO}});var RE=g((jG,lO)=>{lO.exports={name:"pan-stack-cli",version:"0.2.4",description:"PAN Stack CLI \u2014 multi-repo git and project commands from .project.yaml",license:"MIT",bin:{pan:"bin/pan.js"},files:["bin"],scripts:{build:"node tools/pan-stack-cli/build.mjs",prepare:"node tools/pan-stack-cli/build.mjs",prepublishOnly:"node tools/pan-stack-cli/build.mjs",test:"node --test tools/pan-stack-plan/test/ tools/pan-stack-cli/test/","test:pan-stack-plan":"node --test tools/pan-stack-plan/test/","test:pan-stack-cli":"node --test tools/pan-stack-cli/test/"},engines:{node:">=18"},dependencies:{"@inquirer/core":"^11.2.1","@inquirer/prompts":"^8.5.2",serve:"^14.2.4"},keywords:["pan-stack","monorepo","git","cli"],repository:{type:"git",url:"https://github.com/doiya46/pan-stack.git",directory:".pan/pan-stack-cli"},devDependencies:{"@inquirer/testing":"^3.3.9","csv-parse":"7.0.1","csv-stringify":"6.8.1",esbuild:"0.28.1",marked:"15.0.12","sanitize-html":"2.16.0"}}});var OE=g(($G,IE)=>{var dO=require("path"),{loadAllCommandSources:fO}=_n(),{listCommands:kd}=ws(),{runProjectCommand:pO,sourceLabel:uc}=bd(),{loadInquirer:NE}=Ws(),{menuSelect:hO,buildMenuPrompt:_O}=qt(),{helpTheme:mO}=Is(),{t:xt}=he();function xO(t){let e=String(t&&t.name+" "+t.message||"");return/ExitPromptError|force closed|SIGINT|cancel/i.test(e)}async function Rd({message:t,choices:e,hotkeys:n=[]}){try{return await hO({message:t,choices:e,hotkeys:n})}catch(r){if(String(r&&r.message)!=="no-core")throw r;let s=await NE();if(!s||typeof s.select!="function")return"__exit__";let i=n.map(a=>({name:`${a.key} ${a.label}`,value:a.value})),o=i.length?[...e,new s.Separator,...i]:e;return s.select({message:t,choices:o,pageSize:20,loop:!1,theme:mO(!1)})}}async function gO({printUsage:t,version:e}={}){let n=await _O(),r=await NE();if(!n&&(!r||typeof r.select!="function"))return!1;let s=fO().filter(i=>kd(i).length>0).sort((i,o)=>uc(i).localeCompare(uc(o)));if(s.length===0)return console.log(xt("NO_PAN_YAML_WITH_COMMANDS")),console.log(xt("NO_PAN_YAML_BUT_GIT_STILL_WORKS")),!1;try{for(;;){let i=await Rd({message:xt("MENU_SELECT_PROJECT"),choices:s.map((f,p)=>({name:uc(f),value:p,description:`${kd(f).length} ${xt("COMMANDS_LABEL")} \xB7 ${f.root}`})),hotkeys:[{key:"h",label:xt("HELP_LABEL"),value:"__help__"},{key:"v",label:xt("VERSION_LABEL"),value:"__version__"},{key:"x",label:xt("EXIT_LABEL"),value:"__exit__"}]});if(i==="__exit__")return!0;if(i==="__version__"){console.log(`pan-stack-cli ${e||"?"}`);continue}if(i==="__help__"){typeof t=="function"&&t();continue}let o=s[i],a=kd(o),c=await Rd({message:`[${uc(o)}] ${xt("MENU_SELECT_COMMAND")}`,choices:a.map(f=>({name:f.name+(f.aliases&&f.aliases.length?` (${f.aliases.join(", ")})`:"")+(f.hasTargets?` [${f.targets.join("|")}]`:""),value:f.name,description:f.description||""})),hotkeys:[{key:"b",label:xt("BACK_LABEL"),value:"__back__"},{key:"x",label:xt("EXIT_LABEL"),value:"__exit__"}]});if(c==="__exit__")return!0;if(c==="__back__")continue;let u=o.commands[c],d=[];if(u&&u.targets&&Object.keys(u.targets).length>0){let f=Object.keys(u.targets),p=await Rd({message:xt("SELECT_TARGET__CMD",{cmd:c}),choices:[...f.map(_=>({name:_,value:_})),{name:xt("DEFAULT_LABEL"),value:"__default__"}],hotkeys:[{key:"b",label:xt("BACK_LABEL"),value:"__back__"}]});if(p==="__back__")continue;p!=="__default__"&&d.push(p)}console.error(`
534
540
  \u25B6 pan ${c}${d.length?" "+d.join(" "):""} (${dO.basename(o.root)})
535
541
  `);let l=await pO(o,c,d);if(!(l&&l.backed))return!0}}catch(i){if(xO(i))return console.error(`
536
542
  `+xt("EXITED")),!0;throw i}}IE.exports={runInteractiveMenu:gO}});var PE=g((FG,DE)=>{DE.exports={en:{code:"en",name:"English"},vi:{code:"vi",name:"Ti\u1EBFng Vi\u1EC7t"}}});var FE=g((qG,$E)=>{var ME=require("fs"),{findNearestProjectManifest:EO}=_n(),{loadInquirer:yO}=Ws(),{menuSelect:bO}=qt(),{helpTheme:SO}=Is(),{t:Nt,lang:Nd,setLangOverride:TO,availableLangs:Id}=he(),BE=PE();function AO(t){let e=String(t&&t.name+" "+t.message||"");return/ExitPromptError|force closed|SIGINT|cancel/i.test(e)}function Od(t){return BE[t]&&BE[t].name||t}var UE=/^language\s*:.*$/m,jE=/^managed_by\s*:.*$/m,wO=/^project\s*:.*$/m;function vO(t,e){let n=`language: ${e}`;if(UE.test(t))return t.replace(UE,n);let r=jE.test(t)?jE:wO;return r.test(t)?t.replace(r,s=>`${s}
@@ -581,7 +587,7 @@ L\u1ED7i khi ki\u1EC3m tra tr\u1EA1ng th\xE1i: ${m.message}`);continue}if(h.stat
581
587
  report Open local Pan Plans website (--no-open, --port)`,HELP_TASK_COMMANDS:"Task commands:",HELP_TASK_COMMAND_LIST:` add / bug Create a task or bug
582
588
  list List tasks (--ready for unblocked)
583
589
  show / prompt Show task or agent prompt
584
- update Update estimates (--estimate / --estimate-ai)
590
+ update Update title, description or estimates
585
591
  assign / claim / release
586
592
  block / unblock Block or clear a blocker
587
593
  worklog Record time (--duration 45m)
@@ -614,7 +620,7 @@ repositories:
614
620
  - name: {name}
615
621
  path: {path}
616
622
 
617
- Then run the command again inside that repository. To use the workspace store on purpose, pass --store workspace.`,MSG_STORE_SELECTED:"Store: {store} ({path})",ERR_PROJECT_KEY_TAKEN:"Project key {key} already exists in store: {stores}. Pick another key, for example {suggestion}.",ERR_MIGRATE_TARGET_REQUIRED:"Target store is required \u2014 use --to <store>",ERR_PROJECT_ALREADY_IN_STORE:"Project {key} already lives in store {store}",MSG_MIGRATE_STORE_DONE:"Moved {key} from {from} to {to} ({count} file(s))",LABEL_START_DIR:"Start directory",LABEL_WORKSPACE_ROOT:"Workspace root",ERR_PLAN_NAME_REQUIRED:"Plan name is required",ERR_PLAN_NEEDS_PROJECT:"Plan must belong to a project \u2014 use --project PSC or projects_json with a key",ERR_PLAN_DOCUMENT_REQUIRED:"A new plan must include a .plan.md document",ERR_TASK_NEEDS_PLAN_AND_TITLE:"A task needs both a plan key and a title",ERR_TASK_UPDATE_NEEDS_ESTIMATE:"Task update needs at least one of --estimate or --estimate-ai",ERR_PROJECT_CODE_NO_SLASH:"Project code must not contain a slash",ERR_MIGRATE_NEEDS_PROJECT:"Plan {planKey} has no project \u2014 pass --project PSC for migrate-plans",ERR_MIGRATE_DEST_EXISTS:"Cannot migrate {key}: destination already exists at {dest}",ERR_DOCUMENT_TYPE_INVALID:"Invalid document type",ERR_DOCUMENT_EMPTY:"Document cannot be empty",ERR_KEY_COLLISION:"Could not allocate a unique plan key after 32 attempts",ERR_PLAN_FOLDER_EXISTS:"Plan folder already exists",ERR_PLAN_CSV_UNIQUE:"Every plan folder must contain exactly one .plan.csv file",ERR_PLAN_KEY_DUPLICATED:"Plan key {key} appears in multiple folders",ERR_SYMLINK_NOT_ALLOWED:"Symlinks are not allowed inside docs/plans",ERR_STORE_LOCKED:"Another process is writing the same Pan Plans shard",ERR_GIT_REQUIRED:"Pan Plans mutations require a Git repository",ERR_SOURCE_EXISTS:"Source file already exists",ERR_SOURCE_CORRUPTED:"The written source did not match the requested content",ERR_CSV_MISSING_COLUMNS:"CSV schema must declare a non-empty columns list",ERR_CSV_WRONG_DELIMITER:"CSV source must use commas \u2014 semicolon delimiters are rejected",ERR_CSV_PARSE_ERROR:"Could not parse CSV source",ERR_CSV_NO_HEADER:"CSV has no header row",ERR_CSV_HEADER_MISMATCH:"CSV header does not match the schema",ERR_CSV_INVALID_JSON:"Could not parse column {column}",ERR_CSV_MISSING_FIELD:"CSV row is missing a required field",ERR_MISSING_GIT_CONFIG:"git config user.name and user.email are required",ERR_ACTOR_CODE_INVALID:"Actor code may only contain uppercase letters and digits",ERR_LAYOUT_EMPTY_SLUG:"Cannot build a slug from an empty value",ERR_PLAN_SEQ_RANGE:"Plan sequence must be between 1 and 99",ERR_TASK_SEQ_POSITIVE:"Task sequence must be a positive integer",ERR_TOKEN_INVALID:"{field} must be five Crockford Base32 characters",ERR_SEGMENT_INVALID:"{field} may only contain uppercase letters and digits",ERR_PLAN_KEY_INVALID:"Plan key has an invalid format",ERR_TIMESTAMP_INVALID:"Invalid timestamp",SEED_README:'# Pan Plans\n\nThis directory is managed by `pan plan` and `pan task`.\n\n- Commit every source file in `docs/plans/`.\n- Do not edit CSV rows by hand.\n- CSV uses comma delimiters and standard double-quote escaping.\n- Run `pan plan verify` before commit and after merge.\n- Works on macOS, Linux, and Windows 10/11. On Windows use Git for Windows\n and PowerShell 7 or Windows Terminal.\n\n## Naming\n\n- Plan folder: `YYYYMMDD-HHmmss-{plan_key}-{plan_slug}/`\n- Plan CSV: `{plan_key}.plan.csv`\n- Document: `YYYYMMDD-HHmmss-{plan_key}-{slug}.solution.md` (also `.plan.md`, `.decision.md`, `.note.md`)\n- Task shard: `{plan_key}--{lane}-{git_user_slug}.tasks.csv`\n- Event shard: `{plan_key}--{lane}-{git_user_slug}.events.csv`\n\nDocument slug comes from `--slug`, `--name`, markdown `title:`, or the `--file` basename.\nAdd solutions with `pan plan document add PLAN_KEY --type solution --name "Title" --file file.md`.\n',SEED_PROJECTS_README:"# Pan Projects\n\nThis directory is managed by `pan project`, `pan usecase`, and `pan testcase`.\n\n- Commit every source file in `docs/projects/`.\n- Do not edit CSV rows by hand.\n- Use internal keys (`usecase_key`, `testcase_key`) for links; external refs are for import dedupe only.\n- Run `pan project verify` and `pan plan verify` before commit.\n",TASK_PROMPT_TITLE:"Execute task {key}",TASK_PROMPT_META_PLAN:"Plan: {planKey} - {planTitle}",TASK_PROMPT_META_PROJECT:"Project: {project}",TASK_PROMPT_META_STATUS:"Status: {status}",TASK_PROMPT_META_REVISION:"Revision: {revision}",TASK_PROMPT_META_READY:"Ready for parallel work: {ready}",TASK_PROMPT_REQUIREMENTS:"Requirements",TASK_PROMPT_DEPENDS:"Dependencies",TASK_PROMPT_DEPENDS_NONE:"- None",TASK_PROMPT_ACCEPTANCE:"Acceptance",TASK_PROMPT_ACCEPTANCE_DEFAULT:"- Meet the task description",TASK_PROMPT_VERIFICATION:"Verification",TASK_PROMPT_VERIFICATION_DEFAULT:"- Run the relevant tests",TASK_PROMPT_FOOTER:"Do not edit CSV files directly. Use `pan task claim`, `pan task block`, `pan task worklog`, and `pan task done`.",WEB_TITLE:"Pan Plans",WEB_BRAND_TAGLINE:"AI Workspace",WEB_NAV_MAIN:"Main navigation",WEB_NAV_MOBILE:"Mobile navigation",WEB_NAV_DASHBOARD:"Overview",WEB_NAV_PLANS:"Plans",WEB_NAV_TASKS:"Tasks",WEB_NAV_DECISIONS:"Decisions",WEB_NAV_USECASES:"Use cases",WEB_NAV_TESTCASES:"Test cases",WEB_NAV_ACTIVITY:"Activity",WEB_NAV_DOCUMENTS:"Documents",WEB_SIDEBAR_SOURCE:"Source",WEB_MENU_OPEN:"Open menu",WEB_SEARCH_PLACEHOLDER:"Search plans, tasks, actors, or IDs\u2026",WEB_HEADING_DASHBOARD_TITLE:"Work overview",WEB_HEADING_DASHBOARD_LEAD:"Plans, tasks, and documents aggregated directly from Git.",WEB_EYEBROW_PAN_PLANS:"PAN PLANS",WEB_EYEBROW_WORKSPACE:"WORKSPACE",WEB_EYEBROW_DELIVERY:"DELIVERY",WEB_EYEBROW_AUDIT:"AUDIT",WEB_EYEBROW_DECISIONS:"DECISIONS",WEB_EYEBROW_USECASES:"USE CASES",WEB_EYEBROW_TESTCASES:"TEST CASES",WEB_EYEBROW_UPDATED:"UPDATED",WEB_EYEBROW_QUALITY:"QUALITY",WEB_HEADING_PLANS_TITLE:"Manage plans",WEB_HEADING_PLANS_LEAD:"The newest folder appears first.",WEB_HEADING_TASKS_TITLE:"Tasks",WEB_HEADING_TASKS_LEAD:"Filter and copy prompts to hand work to an AI.",WEB_HEADING_ACTIVITY_TITLE:"Activity",WEB_HEADING_ACTIVITY_LEAD:"Immutable events from every writer lane.",WEB_HEADING_DECISIONS_TITLE:"Open decisions",WEB_HEADING_DECISIONS_LEAD:"Registry and lane decisions across projects.",WEB_HEADING_USECASES_TITLE:"Use cases",WEB_HEADING_USECASES_LEAD:"Functional coverage by module and project.",WEB_HEADING_TESTCASES_TITLE:"Test cases",WEB_HEADING_TESTCASES_LEAD:"Verification coverage linked to use cases.",WEB_HEADING_RECENT_PLANS:"Recent plans",WEB_HEADING_SOURCE_STATUS:"Source status",WEB_PRIMARY_ACTION_ALL_PLANS:"See all plans",WEB_BACK_TO_PLANS:"\u2190 Back to plans",WEB_SORT_LABEL:"Sort plans",WEB_SORT_NEWEST:"Newest",WEB_SORT_OLDEST:"Oldest",WEB_SORT_PROGRESS:"Highest progress",WEB_FILTER_STATUS_LABEL:"Filter by status",WEB_FILTER_STATUS_ALL:"All statuses",WEB_FILTER_TYPE_ALL:"All types",WEB_FILTER_READY_ALL:"All readiness",WEB_FILTER_READY_ONLY:"Ready for AI",WEB_FILTER_WAITING_DEPS:"Waiting on deps",WEB_FILTER_PLAN_LABEL:"Filter by plan",WEB_FILTER_PLAN_ALL:"All plans",WEB_FILTER_PLAN_HINT:"Plans: newest first \xB7 tasks: newest first",WEB_FILTER_ACTIVITY_HINT:"Plans: newest first \xB7 activity: newest first",WEB_FILTER_EVENT_TYPE_LABEL:"Filter by event type",WEB_FILTER_EVENT_TYPE_ALL:"All event types",WEB_FILTER_ENTITY_TYPE_LABEL:"Filter by entity",WEB_FILTER_ENTITY_TYPE_ALL:"All entities",WEB_ENTITY_TYPE_PLAN:"Plan",WEB_ENTITY_TYPE_TASK:"Task",WEB_ENTITY_TYPE_DECISION:"Decision",WEB_ENTITY_TYPE_USECASE:"Use case",WEB_ENTITY_TYPE_TESTCASE:"Test case",WEB_PAGER_PREV:"Previous",WEB_PAGER_NEXT:"Next",WEB_PAGER_PAGE:"Page {page} / {pages} \xB7 {total} items",WEB_STATUS_DRAFT:"Draft",WEB_STATUS_ACTIVE:"Active",WEB_STATUS_PAUSED:"Paused",WEB_STATUS_COMPLETED:"Completed",WEB_STATUS_TODO:"To do",WEB_STATUS_IN_PROGRESS:"In progress",WEB_STATUS_DONE:"Done",WEB_STATUS_CANCELLED:"Cancelled",WEB_STATUS_BLOCKED:"Blocked",WEB_STATUS_READY:"Ready",WEB_STATUS_WAITING:"Waiting",WEB_TASK_TYPE_TASK:"Task",WEB_TASK_TYPE_BUG:"Bug",WEB_TASK_TYPE_STORY:"Story",WEB_PRIORITY_CRITICAL:"Critical",WEB_PRIORITY_HIGH:"High",WEB_PRIORITY_MEDIUM:"Medium",WEB_PRIORITY_LOW:"Low",WEB_PRIORITY_P0:"P0",WEB_PRIORITY_P1:"P1",WEB_PRIORITY_P2:"P2",WEB_PRIORITY_P3:"P3",WEB_TABLE_ID:"ID",WEB_TABLE_TITLE:"Title",WEB_TABLE_TYPE:"Type",WEB_TABLE_STATUS:"Status",WEB_TABLE_PRIORITY:"Priority",WEB_TABLE_DEPENDS:"Depends",WEB_TABLE_ACTOR:"Actor",WEB_TABLE_ESTIMATE:"Estimate",WEB_TABLE_ESTIMATE_AI:"AI estimate",WEB_TABLE_REF:"Ref",WEB_TABLE_CREATED:"Created",WEB_EYEBROW_MODULES:"MODULES",WEB_EYEBROW_PROJECT:"PROJECT",WEB_HEADING_MODULE_PROGRESS:"Progress by module",WEB_HEADING_DECISIONS:"Open decisions",WEB_HEADING_USECASES:"Use cases",WEB_HEADING_TESTCASES:"Test cases",WEB_TABLE_DECISION:"ID",WEB_TABLE_DECISION_QUESTION:"Question",WEB_TABLE_DECISION_DOMAINS:"Domains",WEB_TABLE_DECISION_STATUS:"Status",WEB_TABLE_DECISION_CLOSED_BY:"Closed by",WEB_TABLE_DECISION_AI:"AI closed",WEB_EMPTY_DECISIONS:"No decisions yet.",WEB_TABLE_USECASE:"Use case",WEB_TABLE_TESTCASE:"Test case",WEB_TABLE_PROJECT:"Project",WEB_TABLE_USECASE_KEYS:"Use cases",WEB_EMPTY_USECASES:"No use cases yet.",WEB_EMPTY_TESTCASES:"No test cases yet.",WEB_FILTER_MODULE_LABEL:"Filter by module",WEB_FILTER_MODULE_ALL:"All modules",WEB_FILTER_DOMAIN_LABEL:"Filter by domain",WEB_FILTER_DOMAIN_ALL:"All domains",WEB_FILTER_DECISION_AI_ALL:"All closers",WEB_FILTER_DECISION_AI_YES:"AI closed",WEB_FILTER_DECISION_AI_NO:"Human closed",WEB_STATUS_OPEN:"Open",WEB_STATUS_PARTIAL:"Partial",WEB_STATUS_CLOSED:"Closed",WEB_TESTCASE_TYPE_E2E:"E2E",WEB_TESTCASE_TYPE_UNIT:"Unit",WEB_TESTCASE_TYPE_INTEGRATION:"Integration",WEB_TABLE_MODULE:"Module",WEB_TABLE_UC_PROGRESS:"Use cases",WEB_TABLE_TC_PROGRESS:"Test cases",WEB_FILTER_PROJECT_LABEL:"Filter by project",WEB_FILTER_PROJECT_ALL:"All projects",WEB_EMPTY_MODULES:"No modules yet.",WEB_EMPTY_PROJECTS:"No projects yet \u2014 run pan project add first.",WEB_EMPTY_PROJECT_PLANS:"No plans in this project yet.",WEB_STATS_PLANS:"Total plans",WEB_STATS_TASKS:"Total tasks",WEB_STATS_TASK_PROGRESS:"Tasks done",WEB_STATS_HOURS_HUMAN:"Hours (human)",WEB_STATS_HOURS_AI:"Hours (AI)",WEB_STATS_REMAINING_HUMAN:"Man-days left (human)",WEB_STATS_REMAINING_AI:"Man-days left (AI)",WEB_STATS_DONE:"Completed",WEB_STATS_IN_PROGRESS:"In progress",WEB_STATS_READY:"Ready",WEB_STATS_BUGS:"Bugs",WEB_STATS_CONFLICTS:"Conflicts",WEB_STATS_UC_PROGRESS:"Use cases done",WEB_STATS_TC_PROGRESS:"Test cases done",WEB_STATS_PERCENT:"{value}%",WEB_STATS_HOURS_RATIO:"{done} / {total}",WEB_STATS_MAN_DAYS:"{value} MD",WEB_STATS_HOURS:"{value}h",WEB_ACTION_RELOAD:"Reload",WEB_ACTION_AUTO_RELOAD:"Auto reload",WEB_ACTION_LANG:"Language",WEB_ACTION_COPY_PROMPT:"Copy prompt",WEB_ACTION_COPY_LINK:"Copy link",WEB_ACTION_COPIED:"Copied",WEB_STALE_WARNING:"Data has not been refreshed for over 2 minutes \u2014 please reload.",WEB_FRESHNESS_CHECKING:"Checking data\u2026",WEB_FRESHNESS_ERROR:"Could not check data",WEB_FRESHNESS_NOT_CHECKED:"Data has not been checked",WEB_FRESHNESS_STALE:"Data has not been checked for over 2 minutes",WEB_FRESHNESS_UNKNOWN:"Unknown",WEB_ERROR_LOAD:"Could not load data: {message}",WEB_EMPTY_PLAN_MISSING:"Plan not found.",WEB_EMPTY_PLAN_NO_DESCRIPTION:"No description yet",WEB_EMPTY_PLAN_NO_DOCUMENT:"This plan has no document yet.",WEB_EMPTY_TASK_DOCUMENTS:"No solution or note documents on this plan yet. Add them with pan plan document add --type solution --file \u2026",WEB_HINT_TASK_DOCUMENTS:"Solution and craft summaries live on the plan (not on the task row). Match by phase name when possible.",WEB_EMPTY_DEPENDS:"No dependencies",WEB_EMPTY_ACTIVITY:"No activity yet.",WEB_EVENT_DOCUMENT_ADDED:"Document added",WEB_EVENT_DOCUMENT_SUPERSEDED:"Document superseded",WEB_EVENT_LINK_ADDED:"Link added",WEB_EVENT_LINK_REMOVED:"Link removed",WEB_EVENT_TASK_CLAIMED:"Claimed",WEB_EVENT_TASK_RELEASED:"Released",WEB_EVENT_TASK_ASSIGNED:"Assigned",WEB_EVENT_TASK_BLOCKED:"Blocked",WEB_EVENT_TASK_UNBLOCKED:"Unblocked",WEB_EVENT_TASK_DONE:"Done",WEB_EVENT_TASK_CANCELLED:"Cancelled",WEB_EVENT_TASK_REOPENED:"Reopened",WEB_EVENT_TASK_STATUS_CHANGED:"Status changed",WEB_EVENT_PLAN_STATUS_CHANGED:"Plan status",WEB_EVENT_WORKLOG_ADDED:"Worklog",WEB_EVENT_WORKLOG_DURATION:"{minutes}m",WEB_LABEL_PROGRESS:"Progress",WEB_LABEL_STATUS:"Status",WEB_LABEL_TYPE:"Type",WEB_LABEL_ASSIGNEE:"Assignee",WEB_LABEL_ESTIMATE:"Estimate",WEB_LABEL_ACTUAL:"Actual",WEB_LABEL_CREATED:"Created",WEB_LABEL_CREATED_AT:"Created at",WEB_LABEL_UPDATED:"Updated",WEB_LABEL_REVISION:"Revision",WEB_LABEL_DOCUMENT:"Document",WEB_LABEL_DOCUMENTS:"Documents",WEB_LABEL_RELATED_DOCUMENTS:"Plan documents",WEB_LABEL_DOCUMENT_META:"Document fields",WEB_META_SHOW_MORE:"Show more ({count})",WEB_META_SHOW_LESS:"Show less",WEB_META_FIELD_SLUG:"Slug",WEB_META_FIELD_TITLE:"Title",WEB_META_FIELD_DESCRIPTION:"Description",WEB_META_FIELD_STATUS:"Status",WEB_META_FIELD_PRIORITY:"Priority",WEB_META_FIELD_EFFORT:"Effort (human)",WEB_META_FIELD_EFFORT_AI:"Effort (AI)",WEB_LABEL_EFFORT_TASKS_HUMAN:"From tasks (human)",WEB_LABEL_EFFORT_TASKS_AI:"From tasks (AI)",WEB_LABEL_REMAINING_HUMAN:"Man-days left (human)",WEB_LABEL_REMAINING_AI:"Man-days left (AI)",WEB_META_FIELD_TAGS:"Tags",WEB_META_FIELD_BLOCKED_BY:"Blocked by",WEB_META_FIELD_BLOCKS:"Blocks",WEB_META_FIELD_CREATED:"Created",WEB_META_FIELD_PHASE:"Phase",WEB_META_FIELD_TYPE:"Type",WEB_META_FIELD_STATE:"State",WEB_META_FIELD_OWNER:"Owner",WEB_META_FIELD_ASSIGNEE:"Assignee",WEB_DOC_TYPE_PLAN:"Plan",WEB_DOC_TYPE_SOLUTION:"Solution",WEB_DOC_TYPE_DECISION:"Decision",WEB_DOC_TYPE_NOTE:"Note",WEB_LABEL_EVENTS:"Events",WEB_LABEL_DEPENDS:"Depends on",WEB_LABEL_READY:"Ready",WEB_LABEL_TECHNICAL_INFO:"Technical info",WEB_LABEL_TOTAL_TASKS:"Total tasks",WEB_LABEL_CSV_SOURCE:"CSV source",WEB_LABEL_CSV_VALID:"Valid",WEB_LABEL_CONFLICTS:"Conflicts",WEB_LABEL_HASH:"Hash",WEB_LABEL_HASH_EMPTY:"None",WEB_LABEL_LAST_LOAD:"Last load",WEB_LABEL_NEVER_LOADED:"Never loaded",WEB_EMPTY_TASK_MISSING:"Task not found.",WEB_LABEL_PLAN:"Plan",WEB_LABEL_PROJECT:"Project",WEB_LABEL_DESCRIPTION:"Description",WEB_LABEL_ACCEPTANCE:"Acceptance",WEB_LABEL_VERIFICATION:"Verification",WEB_LABEL_TAGS:"Tags",WEB_LABEL_BLOCKER:"Blocker",WEB_LABEL_CLAIMANT:"Claimant",WEB_LABEL_DIFFICULTY:"Difficulty",WEB_LABEL_BLOCKED:"Blocked",WEB_ACTION_CLOSE:"Close",WEB_ACTION_OPEN_PLAN:"Open plan",WEB_ACTION_VIEW_TASK:"View details",WEB_ACTION_VIEW_TASKS:"View tasks",WEB_ACTION_VIEW_DOCUMENT:"View document",WEB_TASK_DETAIL_HINT:"Click a row to view task details."},J4={HELP_USAGE:"C\xE1ch d\xF9ng:",HELP_USAGE_PLAN:" pan plan <command> [options]",HELP_USAGE_TASK:" pan task <command> [options]",HELP_USAGE_PROJECT:" pan project <command> [options]",HELP_USAGE_USECASE:" pan usecase <command> [options]",HELP_USAGE_TESTCASE:" pan testcase <command> [options]",HELP_USAGE_DECISION:" pan decision <command> [options]",HELP_PLAN_COMMANDS:"L\u1EC7nh plan:",HELP_PLAN_COMMAND_LIST:` init T\u1EA1o store docs/plans/
623
+ Then run the command again inside that repository. To use the workspace store on purpose, pass --store workspace.`,MSG_STORE_SELECTED:"Store: {store} ({path})",ERR_PROJECT_KEY_TAKEN:"Project key {key} already exists in store: {stores}. Pick another key, for example {suggestion}.",ERR_MIGRATE_TARGET_REQUIRED:"Target store is required \u2014 use --to <store>",ERR_PROJECT_ALREADY_IN_STORE:"Project {key} already lives in store {store}",MSG_MIGRATE_STORE_DONE:"Moved {key} from {from} to {to} ({count} file(s))",LABEL_START_DIR:"Start directory",LABEL_WORKSPACE_ROOT:"Workspace root",ERR_PLAN_NAME_REQUIRED:"Plan name is required",ERR_PLAN_NEEDS_PROJECT:"Plan must belong to a project \u2014 use --project PSC or projects_json with a key",ERR_PLAN_DOCUMENT_REQUIRED:"A new plan must include a .plan.md document",ERR_TASK_NEEDS_PLAN_AND_TITLE:"A task needs both a plan key and a title",ERR_TASK_UPDATE_NEEDS_FIELD:"Task update needs at least one of --title, --description, --estimate or --estimate-ai",ERR_PROJECT_CODE_NO_SLASH:"Project code must not contain a slash",ERR_MIGRATE_NEEDS_PROJECT:"Plan {planKey} has no project \u2014 pass --project PSC for migrate-plans",ERR_MIGRATE_DEST_EXISTS:"Cannot migrate {key}: destination already exists at {dest}",ERR_DOCUMENT_TYPE_INVALID:"Invalid document type",ERR_DOCUMENT_EMPTY:"Document cannot be empty",ERR_KEY_COLLISION:"Could not allocate a unique plan key after 32 attempts",ERR_PLAN_FOLDER_EXISTS:"Plan folder already exists",ERR_PLAN_CSV_UNIQUE:"Every plan folder must contain exactly one .plan.csv file",ERR_PLAN_KEY_DUPLICATED:"Plan key {key} appears in multiple folders",ERR_SYMLINK_NOT_ALLOWED:"Symlinks are not allowed inside docs/plans",ERR_STORE_LOCKED:"Another process is writing the same Pan Plans shard",ERR_GIT_REQUIRED:"Pan Plans mutations require a Git repository",ERR_SOURCE_EXISTS:"Source file already exists",ERR_SOURCE_CORRUPTED:"The written source did not match the requested content",ERR_CSV_MISSING_COLUMNS:"CSV schema must declare a non-empty columns list",ERR_CSV_WRONG_DELIMITER:"CSV source must use commas \u2014 semicolon delimiters are rejected",ERR_CSV_PARSE_ERROR:"Could not parse CSV source",ERR_CSV_NO_HEADER:"CSV has no header row",ERR_CSV_HEADER_MISMATCH:"CSV header does not match the schema",ERR_CSV_INVALID_JSON:"Could not parse column {column}",ERR_CSV_MISSING_FIELD:"CSV row is missing a required field",ERR_MISSING_GIT_CONFIG:"git config user.name and user.email are required",ERR_ACTOR_CODE_INVALID:"Actor code may only contain uppercase letters and digits",ERR_LAYOUT_EMPTY_SLUG:"Cannot build a slug from an empty value",ERR_PLAN_SEQ_RANGE:"Plan sequence must be between 1 and 99",ERR_TASK_SEQ_POSITIVE:"Task sequence must be a positive integer",ERR_TOKEN_INVALID:"{field} must be five Crockford Base32 characters",ERR_SEGMENT_INVALID:"{field} may only contain uppercase letters and digits",ERR_PLAN_KEY_INVALID:"Plan key has an invalid format",ERR_TIMESTAMP_INVALID:"Invalid timestamp",SEED_README:'# Pan Plans\n\nThis directory is managed by `pan plan` and `pan task`.\n\n- Commit every source file in `docs/plans/`.\n- Do not edit CSV rows by hand.\n- CSV uses comma delimiters and standard double-quote escaping.\n- Run `pan plan verify` before commit and after merge.\n- Works on macOS, Linux, and Windows 10/11. On Windows use Git for Windows\n and PowerShell 7 or Windows Terminal.\n\n## Naming\n\n- Plan folder: `YYYYMMDD-HHmmss-{plan_key}-{plan_slug}/`\n- Plan CSV: `{plan_key}.plan.csv`\n- Document: `YYYYMMDD-HHmmss-{plan_key}-{slug}.solution.md` (also `.plan.md`, `.decision.md`, `.note.md`)\n- Task shard: `{plan_key}--{lane}-{git_user_slug}.tasks.csv`\n- Event shard: `{plan_key}--{lane}-{git_user_slug}.events.csv`\n\nDocument slug comes from `--slug`, `--name`, markdown `title:`, or the `--file` basename.\nAdd solutions with `pan plan document add PLAN_KEY --type solution --name "Title" --file file.md`.\n',SEED_PROJECTS_README:"# Pan Projects\n\nThis directory is managed by `pan project`, `pan usecase`, and `pan testcase`.\n\n- Commit every source file in `docs/projects/`.\n- Do not edit CSV rows by hand.\n- Use internal keys (`usecase_key`, `testcase_key`) for links; external refs are for import dedupe only.\n- Run `pan project verify` and `pan plan verify` before commit.\n",TASK_PROMPT_TITLE:"Execute task {key}",TASK_PROMPT_META_PLAN:"Plan: {planKey} - {planTitle}",TASK_PROMPT_META_PROJECT:"Project: {project}",TASK_PROMPT_META_STATUS:"Status: {status}",TASK_PROMPT_META_REVISION:"Revision: {revision}",TASK_PROMPT_META_READY:"Ready for parallel work: {ready}",TASK_PROMPT_REQUIREMENTS:"Requirements",TASK_PROMPT_DEPENDS:"Dependencies",TASK_PROMPT_DEPENDS_NONE:"- None",TASK_PROMPT_ACCEPTANCE:"Acceptance",TASK_PROMPT_ACCEPTANCE_DEFAULT:"- Meet the task description",TASK_PROMPT_VERIFICATION:"Verification",TASK_PROMPT_VERIFICATION_DEFAULT:"- Run the relevant tests",TASK_PROMPT_FOOTER:"Do not edit CSV files directly. Use `pan task claim`, `pan task block`, `pan task worklog`, and `pan task done`.",WEB_TITLE:"Pan Plans",WEB_BRAND_TAGLINE:"AI Workspace",WEB_NAV_MAIN:"Main navigation",WEB_NAV_MOBILE:"Mobile navigation",WEB_NAV_DASHBOARD:"Overview",WEB_NAV_PLANS:"Plans",WEB_NAV_TASKS:"Tasks",WEB_NAV_DECISIONS:"Decisions",WEB_NAV_USECASES:"Use cases",WEB_NAV_TESTCASES:"Test cases",WEB_NAV_ACTIVITY:"Activity",WEB_NAV_DOCUMENTS:"Documents",WEB_SIDEBAR_SOURCE:"Source",WEB_MENU_OPEN:"Open menu",WEB_SEARCH_PLACEHOLDER:"Search plans, tasks, actors, or IDs\u2026",WEB_HEADING_DASHBOARD_TITLE:"Work overview",WEB_HEADING_DASHBOARD_LEAD:"Plans, tasks, and documents aggregated directly from Git.",WEB_EYEBROW_PAN_PLANS:"PAN PLANS",WEB_EYEBROW_WORKSPACE:"WORKSPACE",WEB_EYEBROW_DELIVERY:"DELIVERY",WEB_EYEBROW_AUDIT:"AUDIT",WEB_EYEBROW_DECISIONS:"DECISIONS",WEB_EYEBROW_USECASES:"USE CASES",WEB_EYEBROW_TESTCASES:"TEST CASES",WEB_EYEBROW_UPDATED:"UPDATED",WEB_EYEBROW_QUALITY:"QUALITY",WEB_HEADING_PLANS_TITLE:"Manage plans",WEB_HEADING_PLANS_LEAD:"The newest folder appears first.",WEB_HEADING_TASKS_TITLE:"Tasks",WEB_HEADING_TASKS_LEAD:"Filter and copy prompts to hand work to an AI.",WEB_HEADING_ACTIVITY_TITLE:"Activity",WEB_HEADING_ACTIVITY_LEAD:"Immutable events from every writer lane.",WEB_HEADING_DECISIONS_TITLE:"Open decisions",WEB_HEADING_DECISIONS_LEAD:"Registry and lane decisions across projects.",WEB_HEADING_USECASES_TITLE:"Use cases",WEB_HEADING_USECASES_LEAD:"Functional coverage by module and project.",WEB_HEADING_TESTCASES_TITLE:"Test cases",WEB_HEADING_TESTCASES_LEAD:"Verification coverage linked to use cases.",WEB_HEADING_RECENT_PLANS:"Recent plans",WEB_HEADING_SOURCE_STATUS:"Source status",WEB_PRIMARY_ACTION_ALL_PLANS:"See all plans",WEB_BACK_TO_PLANS:"\u2190 Back to plans",WEB_SORT_LABEL:"Sort plans",WEB_SORT_NEWEST:"Newest",WEB_SORT_OLDEST:"Oldest",WEB_SORT_PROGRESS:"Highest progress",WEB_FILTER_STATUS_LABEL:"Filter by status",WEB_FILTER_STATUS_ALL:"All statuses",WEB_FILTER_TYPE_ALL:"All types",WEB_FILTER_READY_ALL:"All readiness",WEB_FILTER_READY_ONLY:"Ready for AI",WEB_FILTER_WAITING_DEPS:"Waiting on deps",WEB_FILTER_PLAN_LABEL:"Filter by plan",WEB_FILTER_PLAN_ALL:"All plans",WEB_FILTER_PLAN_HINT:"Plans: newest first \xB7 tasks: newest first",WEB_FILTER_ACTIVITY_HINT:"Plans: newest first \xB7 activity: newest first",WEB_FILTER_EVENT_TYPE_LABEL:"Filter by event type",WEB_FILTER_EVENT_TYPE_ALL:"All event types",WEB_FILTER_ENTITY_TYPE_LABEL:"Filter by entity",WEB_FILTER_ENTITY_TYPE_ALL:"All entities",WEB_ENTITY_TYPE_PLAN:"Plan",WEB_ENTITY_TYPE_TASK:"Task",WEB_ENTITY_TYPE_DECISION:"Decision",WEB_ENTITY_TYPE_USECASE:"Use case",WEB_ENTITY_TYPE_TESTCASE:"Test case",WEB_PAGER_PREV:"Previous",WEB_PAGER_NEXT:"Next",WEB_PAGER_PAGE:"Page {page} / {pages} \xB7 {total} items",WEB_STATUS_DRAFT:"Draft",WEB_STATUS_ACTIVE:"Active",WEB_STATUS_PAUSED:"Paused",WEB_STATUS_COMPLETED:"Completed",WEB_STATUS_TODO:"To do",WEB_STATUS_IN_PROGRESS:"In progress",WEB_STATUS_DONE:"Done",WEB_STATUS_CANCELLED:"Cancelled",WEB_STATUS_BLOCKED:"Blocked",WEB_STATUS_READY:"Ready",WEB_STATUS_WAITING:"Waiting",WEB_TASK_TYPE_TASK:"Task",WEB_TASK_TYPE_BUG:"Bug",WEB_TASK_TYPE_STORY:"Story",WEB_PRIORITY_CRITICAL:"Critical",WEB_PRIORITY_HIGH:"High",WEB_PRIORITY_MEDIUM:"Medium",WEB_PRIORITY_LOW:"Low",WEB_PRIORITY_P0:"P0",WEB_PRIORITY_P1:"P1",WEB_PRIORITY_P2:"P2",WEB_PRIORITY_P3:"P3",WEB_TABLE_ID:"ID",WEB_TABLE_TITLE:"Title",WEB_TABLE_TYPE:"Type",WEB_TABLE_STATUS:"Status",WEB_TABLE_PRIORITY:"Priority",WEB_TABLE_DEPENDS:"Depends",WEB_TABLE_ACTOR:"Actor",WEB_TABLE_ESTIMATE:"Estimate",WEB_TABLE_ESTIMATE_AI:"AI estimate",WEB_TABLE_REF:"Ref",WEB_TABLE_CREATED:"Created",WEB_EYEBROW_MODULES:"MODULES",WEB_EYEBROW_PROJECT:"PROJECT",WEB_HEADING_MODULE_PROGRESS:"Progress by module",WEB_HEADING_DECISIONS:"Open decisions",WEB_HEADING_USECASES:"Use cases",WEB_HEADING_TESTCASES:"Test cases",WEB_TABLE_DECISION:"ID",WEB_TABLE_DECISION_QUESTION:"Question",WEB_TABLE_DECISION_DOMAINS:"Domains",WEB_TABLE_DECISION_STATUS:"Status",WEB_TABLE_DECISION_CLOSED_BY:"Closed by",WEB_TABLE_DECISION_AI:"AI closed",WEB_EMPTY_DECISIONS:"No decisions yet.",WEB_TABLE_USECASE:"Use case",WEB_TABLE_TESTCASE:"Test case",WEB_TABLE_PROJECT:"Project",WEB_TABLE_USECASE_KEYS:"Use cases",WEB_EMPTY_USECASES:"No use cases yet.",WEB_EMPTY_TESTCASES:"No test cases yet.",WEB_FILTER_MODULE_LABEL:"Filter by module",WEB_FILTER_MODULE_ALL:"All modules",WEB_FILTER_DOMAIN_LABEL:"Filter by domain",WEB_FILTER_DOMAIN_ALL:"All domains",WEB_FILTER_DECISION_AI_ALL:"All closers",WEB_FILTER_DECISION_AI_YES:"AI closed",WEB_FILTER_DECISION_AI_NO:"Human closed",WEB_STATUS_OPEN:"Open",WEB_STATUS_PARTIAL:"Partial",WEB_STATUS_CLOSED:"Closed",WEB_TESTCASE_TYPE_E2E:"E2E",WEB_TESTCASE_TYPE_UNIT:"Unit",WEB_TESTCASE_TYPE_INTEGRATION:"Integration",WEB_TABLE_MODULE:"Module",WEB_TABLE_UC_PROGRESS:"Use cases",WEB_TABLE_TC_PROGRESS:"Test cases",WEB_FILTER_PROJECT_LABEL:"Filter by project",WEB_FILTER_PROJECT_ALL:"All projects",WEB_EMPTY_MODULES:"No modules yet.",WEB_EMPTY_PROJECTS:"No projects yet \u2014 run pan project add first.",WEB_EMPTY_PROJECT_PLANS:"No plans in this project yet.",WEB_STATS_PLANS:"Total plans",WEB_STATS_TASKS:"Total tasks",WEB_STATS_TASK_PROGRESS:"Tasks done",WEB_STATS_HOURS_HUMAN:"Hours (human)",WEB_STATS_HOURS_AI:"Hours (AI)",WEB_STATS_REMAINING_HUMAN:"Man-days left (human)",WEB_STATS_REMAINING_AI:"Man-days left (AI)",WEB_STATS_DONE:"Completed",WEB_STATS_IN_PROGRESS:"In progress",WEB_STATS_READY:"Ready",WEB_STATS_BUGS:"Bugs",WEB_STATS_CONFLICTS:"Conflicts",WEB_STATS_UC_PROGRESS:"Use cases done",WEB_STATS_TC_PROGRESS:"Test cases done",WEB_STATS_PERCENT:"{value}%",WEB_STATS_HOURS_RATIO:"{done} / {total}",WEB_STATS_MAN_DAYS:"{value} MD",WEB_STATS_HOURS:"{value}h",WEB_ACTION_RELOAD:"Reload",WEB_ACTION_AUTO_RELOAD:"Auto reload",WEB_ACTION_LANG:"Language",WEB_ACTION_COPY_PROMPT:"Copy prompt",WEB_ACTION_COPY_LINK:"Copy link",WEB_ACTION_COPIED:"Copied",WEB_STALE_WARNING:"Data has not been refreshed for over 2 minutes \u2014 please reload.",WEB_FRESHNESS_CHECKING:"Checking data\u2026",WEB_FRESHNESS_ERROR:"Could not check data",WEB_FRESHNESS_NOT_CHECKED:"Data has not been checked",WEB_FRESHNESS_STALE:"Data has not been checked for over 2 minutes",WEB_FRESHNESS_UNKNOWN:"Unknown",WEB_ERROR_LOAD:"Could not load data: {message}",WEB_EMPTY_PLAN_MISSING:"Plan not found.",WEB_EMPTY_PLAN_NO_DESCRIPTION:"No description yet",WEB_EMPTY_PLAN_NO_DOCUMENT:"This plan has no document yet.",WEB_EMPTY_TASK_DOCUMENTS:"No solution or note documents on this plan yet. Add them with pan plan document add --type solution --file \u2026",WEB_HINT_TASK_DOCUMENTS:"Solution and craft summaries live on the plan (not on the task row). Match by phase name when possible.",WEB_EMPTY_DEPENDS:"No dependencies",WEB_EMPTY_ACTIVITY:"No activity yet.",WEB_EVENT_DOCUMENT_ADDED:"Document added",WEB_EVENT_DOCUMENT_SUPERSEDED:"Document superseded",WEB_EVENT_LINK_ADDED:"Link added",WEB_EVENT_LINK_REMOVED:"Link removed",WEB_EVENT_TASK_CLAIMED:"Claimed",WEB_EVENT_TASK_RELEASED:"Released",WEB_EVENT_TASK_ASSIGNED:"Assigned",WEB_EVENT_TASK_BLOCKED:"Blocked",WEB_EVENT_TASK_UNBLOCKED:"Unblocked",WEB_EVENT_TASK_DONE:"Done",WEB_EVENT_TASK_CANCELLED:"Cancelled",WEB_EVENT_TASK_REOPENED:"Reopened",WEB_EVENT_TASK_STATUS_CHANGED:"Status changed",WEB_EVENT_PLAN_STATUS_CHANGED:"Plan status",WEB_EVENT_WORKLOG_ADDED:"Worklog",WEB_EVENT_WORKLOG_DURATION:"{minutes}m",WEB_LABEL_PROGRESS:"Progress",WEB_LABEL_STATUS:"Status",WEB_LABEL_TYPE:"Type",WEB_LABEL_ASSIGNEE:"Assignee",WEB_LABEL_ESTIMATE:"Estimate",WEB_LABEL_ACTUAL:"Actual",WEB_LABEL_CREATED:"Created",WEB_LABEL_CREATED_AT:"Created at",WEB_LABEL_UPDATED:"Updated",WEB_LABEL_REVISION:"Revision",WEB_LABEL_DOCUMENT:"Document",WEB_LABEL_DOCUMENTS:"Documents",WEB_LABEL_RELATED_DOCUMENTS:"Plan documents",WEB_LABEL_DOCUMENT_META:"Document fields",WEB_META_SHOW_MORE:"Show more ({count})",WEB_META_SHOW_LESS:"Show less",WEB_META_FIELD_SLUG:"Slug",WEB_META_FIELD_TITLE:"Title",WEB_META_FIELD_DESCRIPTION:"Description",WEB_META_FIELD_STATUS:"Status",WEB_META_FIELD_PRIORITY:"Priority",WEB_META_FIELD_EFFORT:"Effort (human)",WEB_META_FIELD_EFFORT_AI:"Effort (AI)",WEB_LABEL_EFFORT_TASKS_HUMAN:"From tasks (human)",WEB_LABEL_EFFORT_TASKS_AI:"From tasks (AI)",WEB_LABEL_REMAINING_HUMAN:"Man-days left (human)",WEB_LABEL_REMAINING_AI:"Man-days left (AI)",WEB_META_FIELD_TAGS:"Tags",WEB_META_FIELD_BLOCKED_BY:"Blocked by",WEB_META_FIELD_BLOCKS:"Blocks",WEB_META_FIELD_CREATED:"Created",WEB_META_FIELD_PHASE:"Phase",WEB_META_FIELD_TYPE:"Type",WEB_META_FIELD_STATE:"State",WEB_META_FIELD_OWNER:"Owner",WEB_META_FIELD_ASSIGNEE:"Assignee",WEB_DOC_TYPE_PLAN:"Plan",WEB_DOC_TYPE_SOLUTION:"Solution",WEB_DOC_TYPE_DECISION:"Decision",WEB_DOC_TYPE_NOTE:"Note",WEB_LABEL_EVENTS:"Events",WEB_LABEL_DEPENDS:"Depends on",WEB_LABEL_READY:"Ready",WEB_LABEL_TECHNICAL_INFO:"Technical info",WEB_LABEL_TOTAL_TASKS:"Total tasks",WEB_LABEL_CSV_SOURCE:"CSV source",WEB_LABEL_CSV_VALID:"Valid",WEB_LABEL_CONFLICTS:"Conflicts",WEB_LABEL_HASH:"Hash",WEB_LABEL_HASH_EMPTY:"None",WEB_LABEL_LAST_LOAD:"Last load",WEB_LABEL_NEVER_LOADED:"Never loaded",WEB_EMPTY_TASK_MISSING:"Task not found.",WEB_LABEL_PLAN:"Plan",WEB_LABEL_PROJECT:"Project",WEB_LABEL_DESCRIPTION:"Description",WEB_LABEL_ACCEPTANCE:"Acceptance",WEB_LABEL_VERIFICATION:"Verification",WEB_LABEL_TAGS:"Tags",WEB_LABEL_BLOCKER:"Blocker",WEB_LABEL_CLAIMANT:"Claimant",WEB_LABEL_DIFFICULTY:"Difficulty",WEB_LABEL_BLOCKED:"Blocked",WEB_ACTION_CLOSE:"Close",WEB_ACTION_OPEN_PLAN:"Open plan",WEB_ACTION_VIEW_TASK:"View details",WEB_ACTION_VIEW_TASKS:"View tasks",WEB_ACTION_VIEW_DOCUMENT:"View document",WEB_TASK_DETAIL_HINT:"Click a row to view task details."},J4={HELP_USAGE:"C\xE1ch d\xF9ng:",HELP_USAGE_PLAN:" pan plan <command> [options]",HELP_USAGE_TASK:" pan task <command> [options]",HELP_USAGE_PROJECT:" pan project <command> [options]",HELP_USAGE_USECASE:" pan usecase <command> [options]",HELP_USAGE_TESTCASE:" pan testcase <command> [options]",HELP_USAGE_DECISION:" pan decision <command> [options]",HELP_PLAN_COMMANDS:"L\u1EC7nh plan:",HELP_PLAN_COMMAND_LIST:` init T\u1EA1o store docs/plans/
618
624
  add T\u1EA1o plan t\u1EEB --document
619
625
  list Li\u1EC7t k\xEA plan
620
626
  show <plan_key> Xem m\u1ED9t plan
@@ -625,7 +631,7 @@ Then run the command again inside that repository. To use the workspace store on
625
631
  report M\u1EDF website Pan Plans local (--no-open, --port)`,HELP_TASK_COMMANDS:"L\u1EC7nh task:",HELP_TASK_COMMAND_LIST:` add / bug T\u1EA1o task ho\u1EB7c bug
626
632
  list Li\u1EC7t k\xEA task (--ready = ch\u01B0a b\u1ECB block)
627
633
  show / prompt Xem task ho\u1EB7c prompt cho agent
628
- update C\u1EADp nh\u1EADt estimate (--estimate / --estimate-ai)
634
+ update C\u1EADp nh\u1EADt ti\xEAu \u0111\u1EC1, m\xF4 t\u1EA3 ho\u1EB7c estimate
629
635
  assign / claim / release
630
636
  block / unblock Ch\u1EB7n ho\u1EB7c g\u1EE1 blocker
631
637
  worklog Ghi th\u1EDDi gian (--duration 45m)
@@ -658,7 +664,7 @@ repositories:
658
664
  - name: {name}
659
665
  path: {path}
660
666
 
661
- R\u1ED3i ch\u1EA1y l\u1EA1i l\u1EC7nh trong repo \u0111\xF3. N\u1EBFu c\u1ED1 \xFD d\xF9ng store workspace th\xEC th\xEAm --store workspace.`,MSG_STORE_SELECTED:"Store: {store} ({path})",ERR_PROJECT_KEY_TAKEN:"Project key {key} \u0111\xE3 c\xF3 \u1EDF store: {stores}. Ch\u1ECDn key kh\xE1c, v\xED d\u1EE5 {suggestion}.",ERR_MIGRATE_TARGET_REQUIRED:"Thi\u1EBFu store \u0111\xEDch \u2014 d\xF9ng --to <store>",ERR_PROJECT_ALREADY_IN_STORE:"Project {key} \u0111\xE3 n\u1EB1m \u1EDF store {store}",MSG_MIGRATE_STORE_DONE:"\u0110\xE3 chuy\u1EC3n {key} t\u1EEB {from} sang {to} ({count} file)",LABEL_START_DIR:"Th\u01B0 m\u1EE5c b\u1EAFt \u0111\u1EA7u",LABEL_WORKSPACE_ROOT:"Workspace root",ERR_PLAN_NAME_REQUIRED:"Thi\u1EBFu t\xEAn plan",ERR_PLAN_NEEDS_PROJECT:"Plan ph\u1EA3i thu\u1ED9c project \u2014 d\xF9ng --project PSC ho\u1EB7c projects_json c\xF3 key",ERR_PLAN_DOCUMENT_REQUIRED:"Plan m\u1EDBi ph\u1EA3i c\xF3 t\xE0i li\u1EC7u .plan.md",ERR_TASK_NEEDS_PLAN_AND_TITLE:"Task c\u1EA7n plan key v\xE0 title",ERR_TASK_UPDATE_NEEDS_ESTIMATE:"C\u1EADp nh\u1EADt task c\u1EA7n \xEDt nh\u1EA5t m\u1ED9t trong --estimate ho\u1EB7c --estimate-ai",ERR_PROJECT_CODE_NO_SLASH:"Project code kh\xF4ng \u0111\u01B0\u1EE3c ch\u1EE9a slash",ERR_MIGRATE_NEEDS_PROJECT:"Plan {planKey} ch\u01B0a c\xF3 project \u2014 truy\u1EC1n --project PSC khi migrate-plans",ERR_MIGRATE_DEST_EXISTS:"Kh\xF4ng migrate \u0111\u01B0\u1EE3c {key}: \u0111\xEDch \u0111\xE3 t\u1ED3n t\u1EA1i t\u1EA1i {dest}",ERR_DOCUMENT_TYPE_INVALID:"Document type kh\xF4ng h\u1EE3p l\u1EC7",ERR_DOCUMENT_EMPTY:"Document kh\xF4ng \u0111\u01B0\u1EE3c r\u1ED7ng",ERR_KEY_COLLISION:"Kh\xF4ng th\u1EC3 c\u1EA5p plan key kh\xF4ng tr\xF9ng sau 32 l\u1EA7n",ERR_PLAN_FOLDER_EXISTS:"Plan folder \u0111\xE3 t\u1ED3n t\u1EA1i",ERR_PLAN_CSV_UNIQUE:"M\u1ED7i plan folder ph\u1EA3i c\xF3 \u0111\xFAng m\u1ED9t .plan.csv",ERR_PLAN_KEY_DUPLICATED:"Plan key {key} xu\u1EA5t hi\u1EC7n \u1EDF nhi\u1EC1u folder",ERR_SYMLINK_NOT_ALLOWED:"Kh\xF4ng cho ph\xE9p symlink trong docs/plans",ERR_STORE_LOCKED:"M\u1ED9t process kh\xE1c \u0111ang ghi c\xF9ng Pan Plans shard",ERR_GIT_REQUIRED:"Mutation Pan Plans y\xEAu c\u1EA7u Git repository",ERR_SOURCE_EXISTS:"Source file \u0111\xE3 t\u1ED3n t\u1EA1i",ERR_SOURCE_CORRUPTED:"N\u1ED9i dung \u0111\u1ECDc l\u1EA1i kh\xE1c n\u1ED9i dung v\u1EEBa ghi",ERR_CSV_MISSING_COLUMNS:"CSV schema ph\u1EA3i c\xF3 danh s\xE1ch columns",ERR_CSV_WRONG_DELIMITER:"CSV ngu\u1ED3n ph\u1EA3i d\xF9ng d\u1EA5u ph\u1EA9y, kh\xF4ng d\xF9ng d\u1EA5u ch\u1EA5m ph\u1EA9y",ERR_CSV_PARSE_ERROR:"Kh\xF4ng th\u1EC3 parse CSV",ERR_CSV_NO_HEADER:"CSV kh\xF4ng c\xF3 header",ERR_CSV_HEADER_MISMATCH:"CSV header kh\xF4ng kh\u1EDBp schema",ERR_CSV_INVALID_JSON:"Kh\xF4ng th\u1EC3 parse {column}",ERR_CSV_MISSING_FIELD:"CSV row thi\u1EBFu field b\u1EAFt bu\u1ED9c",ERR_MISSING_GIT_CONFIG:"Thi\u1EBFu git config user.name ho\u1EB7c user.email",ERR_ACTOR_CODE_INVALID:"Actor code ch\u1EC9 \u0111\u01B0\u1EE3c d\xF9ng ch\u1EEF hoa v\xE0 s\u1ED1",ERR_LAYOUT_EMPTY_SLUG:"Kh\xF4ng th\u1EC3 t\u1EA1o slug t\u1EEB gi\xE1 tr\u1ECB r\u1ED7ng",ERR_PLAN_SEQ_RANGE:"Plan sequence ph\u1EA3i n\u1EB1m trong kho\u1EA3ng 1 \u0111\u1EBFn 99",ERR_TASK_SEQ_POSITIVE:"Task sequence ph\u1EA3i l\xE0 s\u1ED1 nguy\xEAn d\u01B0\u01A1ng",ERR_TOKEN_INVALID:"{field} ph\u1EA3i l\xE0 Crockford Base32 g\u1ED3m 5 k\xFD t\u1EF1",ERR_SEGMENT_INVALID:"{field} ch\u1EC9 \u0111\u01B0\u1EE3c d\xF9ng ch\u1EEF hoa v\xE0 s\u1ED1",ERR_PLAN_KEY_INVALID:"Plan key kh\xF4ng \u0111\xFAng \u0111\u1ECBnh d\u1EA1ng",ERR_TIMESTAMP_INVALID:"Timestamp kh\xF4ng h\u1EE3p l\u1EC7",SEED_README:'# Pan Plans\n\nTh\u01B0 m\u1EE5c n\xE0y do `pan plan` v\xE0 `pan task` qu\u1EA3n l\xFD.\n\n- Commit to\xE0n b\u1ED9 source trong `docs/plans/`.\n- Kh\xF4ng s\u1EEDa d\xF2ng CSV b\u1EB1ng tay.\n- CSV d\xF9ng d\u1EA5u ph\u1EA9y v\xE0 quote k\xE9p chu\u1EA9n.\n- Ch\u1EA1y `pan plan verify` tr\u01B0\u1EDBc khi commit v\xE0 sau khi merge.\n- Ho\u1EA1t \u0111\u1ED9ng tr\xEAn macOS, Linux v\xE0 Windows 10/11. Windows d\xF9ng Git for Windows\n c\xF9ng PowerShell 7 ho\u1EB7c Windows Terminal.\n\n## \u0110\u1EB7t t\xEAn\n\n- Folder plan: `YYYYMMDD-HHmmss-{plan_key}-{plan_slug}/`\n- Plan CSV: `{plan_key}.plan.csv`\n- Document: `YYYYMMDD-HHmmss-{plan_key}-{slug}.solution.md` (also `.plan.md`, `.decision.md`, `.note.md`)\n- Task shard: `{plan_key}--{lane}-{git_user_slug}.tasks.csv`\n- Event shard: `{plan_key}--{lane}-{git_user_slug}.events.csv`\n\nSlug document l\u1EA5y t\u1EEB `--slug`, `--name`, `title:` trong markdown, ho\u1EB7c t\xEAn file `--file`.\nTh\xEAm solution: `pan plan document add PLAN_KEY --type solution --name "Ti\xEAu \u0111\u1EC1" --file file.md`.\n',TASK_PROMPT_TITLE:"Th\u1EF1c hi\u1EC7n task {key}",TASK_PROMPT_META_PLAN:"Plan: {planKey} - {planTitle}",TASK_PROMPT_META_PROJECT:"Project: {project}",TASK_PROMPT_META_STATUS:"Status: {status}",TASK_PROMPT_META_REVISION:"Revision: {revision}",TASK_PROMPT_META_READY:"S\u1EB5n s\xE0ng ch\u1EA1y song song: {ready}",TASK_PROMPT_REQUIREMENTS:"Y\xEAu c\u1EA7u",TASK_PROMPT_DEPENDS:"Ph\u1EE5 thu\u1ED9c",TASK_PROMPT_DEPENDS_NONE:"- Kh\xF4ng c\xF3",TASK_PROMPT_ACCEPTANCE:"Acceptance",TASK_PROMPT_ACCEPTANCE_DEFAULT:"- Ho\xE0n th\xE0nh \u0111\xFAng m\xF4 t\u1EA3 task",TASK_PROMPT_VERIFICATION:"Verification",TASK_PROMPT_VERIFICATION_DEFAULT:"- Ch\u1EA1y test ph\xF9 h\u1EE3p",TASK_PROMPT_FOOTER:"Kh\xF4ng s\u1EEDa CSV tr\u1EF1c ti\u1EBFp. D\xF9ng `pan task claim`, `pan task block`, `pan task worklog` v\xE0 `pan task done`.",WEB_TITLE:"Pan Plans",WEB_BRAND_TAGLINE:"AI Workspace",WEB_NAV_MAIN:"\u0110i\u1EC1u h\u01B0\u1EDBng ch\xEDnh",WEB_NAV_MOBILE:"\u0110i\u1EC1u h\u01B0\u1EDBng di \u0111\u1ED9ng",WEB_NAV_DASHBOARD:"T\u1ED5ng quan",WEB_NAV_PLANS:"Plans",WEB_NAV_TASKS:"Tasks",WEB_NAV_DECISIONS:"Decisions",WEB_NAV_USECASES:"Use case",WEB_NAV_TESTCASES:"Test case",WEB_NAV_ACTIVITY:"Ho\u1EA1t \u0111\u1ED9ng",WEB_NAV_DOCUMENTS:"T\xE0i li\u1EC7u",WEB_SIDEBAR_SOURCE:"Ngu\u1ED3n",WEB_MENU_OPEN:"M\u1EDF menu",WEB_SEARCH_PLACEHOLDER:"T\xECm plan, task, actor ho\u1EB7c m\xE3\u2026",WEB_HEADING_DASHBOARD_TITLE:"T\u1ED5ng quan c\xF4ng vi\u1EC7c",WEB_HEADING_DASHBOARD_LEAD:"Plan, task v\xE0 t\xE0i li\u1EC7u \u0111\u01B0\u1EE3c t\u1ED5ng h\u1EE3p tr\u1EF1c ti\u1EBFp t\u1EEB Git.",WEB_EYEBROW_PAN_PLANS:"PAN PLANS",WEB_EYEBROW_WORKSPACE:"WORKSPACE",WEB_EYEBROW_DELIVERY:"DELIVERY",WEB_EYEBROW_AUDIT:"AUDIT",WEB_EYEBROW_DECISIONS:"DECISIONS",WEB_EYEBROW_USECASES:"USE CASES",WEB_EYEBROW_TESTCASES:"TEST CASES",WEB_EYEBROW_UPDATED:"M\u1EDAI C\u1EACP NH\u1EACT",WEB_EYEBROW_QUALITY:"CH\u1EA4T L\u01AF\u1EE2NG",WEB_HEADING_PLANS_TITLE:"Qu\u1EA3n l\xFD plans",WEB_HEADING_PLANS_LEAD:"Folder m\u1EDBi nh\u1EA5t \u0111\u01B0\u1EE3c \u01B0u ti\xEAn hi\u1EC3n th\u1ECB tr\u01B0\u1EDBc.",WEB_HEADING_TASKS_TITLE:"Tasks",WEB_HEADING_TASKS_LEAD:"L\u1ECDc v\xE0 copy prompt \u0111\u1EC3 giao vi\u1EC7c cho AI.",WEB_HEADING_ACTIVITY_TITLE:"Ho\u1EA1t \u0111\u1ED9ng",WEB_HEADING_ACTIVITY_LEAD:"Event b\u1EA5t bi\u1EBFn t\u1EEB m\u1ECDi writer lane.",WEB_HEADING_DECISIONS_TITLE:"Open decisions",WEB_HEADING_DECISIONS_LEAD:"Decision registry v\xE0 lane tr\xEAn m\u1ECDi project.",WEB_HEADING_USECASES_TITLE:"Use case",WEB_HEADING_USECASES_LEAD:"Ph\u1EE7 ch\u1EE9c n\u0103ng theo module v\xE0 project.",WEB_HEADING_TESTCASES_TITLE:"Test case",WEB_HEADING_TESTCASES_LEAD:"Ph\u1EE7 ki\u1EC3m th\u1EED li\xEAn k\u1EBFt use case.",WEB_HEADING_RECENT_PLANS:"Plans g\u1EA7n \u0111\xE2y",WEB_HEADING_SOURCE_STATUS:"Tr\u1EA1ng th\xE1i ngu\u1ED3n",WEB_PRIMARY_ACTION_ALL_PLANS:"Xem t\u1EA5t c\u1EA3 plan",WEB_BACK_TO_PLANS:"\u2190 Danh s\xE1ch plans",WEB_SORT_LABEL:"S\u1EAFp x\u1EBFp plans",WEB_SORT_NEWEST:"M\u1EDBi nh\u1EA5t",WEB_SORT_OLDEST:"C\u0169 nh\u1EA5t",WEB_SORT_PROGRESS:"Ti\u1EBFn \u0111\u1ED9 cao",WEB_FILTER_STATUS_LABEL:"L\u1ECDc tr\u1EA1ng th\xE1i",WEB_FILTER_STATUS_ALL:"M\u1ECDi tr\u1EA1ng th\xE1i",WEB_FILTER_TYPE_ALL:"M\u1ECDi lo\u1EA1i",WEB_FILTER_READY_ALL:"M\u1ECDi m\u1EE9c s\u1EB5n s\xE0ng",WEB_FILTER_READY_ONLY:"S\u1EB5n s\xE0ng cho AI",WEB_FILTER_WAITING_DEPS:"\u0110ang ch\u1EDD ph\u1EE5 thu\u1ED9c",WEB_FILTER_PLAN_LABEL:"L\u1ECDc theo plan",WEB_FILTER_PLAN_ALL:"M\u1ECDi plan",WEB_FILTER_PLAN_HINT:"Plan: m\u1EDBi nh\u1EA5t tr\u01B0\u1EDBc \xB7 task: m\u1EDBi nh\u1EA5t tr\u01B0\u1EDBc",WEB_FILTER_ACTIVITY_HINT:"Plan: m\u1EDBi nh\u1EA5t tr\u01B0\u1EDBc \xB7 ho\u1EA1t \u0111\u1ED9ng: m\u1EDBi nh\u1EA5t tr\u01B0\u1EDBc",WEB_FILTER_EVENT_TYPE_LABEL:"L\u1ECDc lo\u1EA1i s\u1EF1 ki\u1EC7n",WEB_FILTER_EVENT_TYPE_ALL:"M\u1ECDi lo\u1EA1i s\u1EF1 ki\u1EC7n",WEB_FILTER_ENTITY_TYPE_LABEL:"L\u1ECDc th\u1EF1c th\u1EC3",WEB_FILTER_ENTITY_TYPE_ALL:"M\u1ECDi th\u1EF1c th\u1EC3",WEB_ENTITY_TYPE_PLAN:"Plan",WEB_ENTITY_TYPE_TASK:"Task",WEB_ENTITY_TYPE_DECISION:"Quy\u1EBFt \u0111\u1ECBnh",WEB_ENTITY_TYPE_USECASE:"Use case",WEB_ENTITY_TYPE_TESTCASE:"Test case",WEB_PAGER_PREV:"Tr\u01B0\u1EDBc",WEB_PAGER_NEXT:"Sau",WEB_PAGER_PAGE:"Trang {page} / {pages} \xB7 {total} m\u1EE5c",WEB_STATUS_DRAFT:"Draft",WEB_STATUS_ACTIVE:"Active",WEB_STATUS_PAUSED:"Paused",WEB_STATUS_COMPLETED:"Completed",WEB_STATUS_TODO:"Ch\u01B0a x\u1EED l\xFD",WEB_STATUS_IN_PROGRESS:"\u0110ang l\xE0m",WEB_STATUS_DONE:"Ho\xE0n th\xE0nh",WEB_STATUS_CANCELLED:"\u0110\xE3 h\u1EE7y",WEB_STATUS_BLOCKED:"\u0110ang ch\u1EB7n",WEB_STATUS_READY:"S\u1EB5n s\xE0ng",WEB_STATUS_WAITING:"\u0110ang ch\u1EDD",WEB_TASK_TYPE_TASK:"Task",WEB_TASK_TYPE_BUG:"Bug",WEB_TASK_TYPE_STORY:"Story",WEB_PRIORITY_CRITICAL:"Critical",WEB_PRIORITY_HIGH:"High",WEB_PRIORITY_MEDIUM:"Medium",WEB_PRIORITY_LOW:"Low",WEB_PRIORITY_P0:"P0",WEB_PRIORITY_P1:"P1",WEB_PRIORITY_P2:"P2",WEB_PRIORITY_P3:"P3",WEB_TABLE_ID:"M\xE3",WEB_TABLE_TITLE:"Ti\xEAu \u0111\u1EC1",WEB_TABLE_TYPE:"Lo\u1EA1i",WEB_TABLE_STATUS:"Tr\u1EA1ng th\xE1i",WEB_TABLE_PRIORITY:"\u01AFu ti\xEAn",WEB_TABLE_DEPENDS:"Ph\u1EE5 thu\u1ED9c",WEB_TABLE_ACTOR:"Actor",WEB_TABLE_ESTIMATE:"\u01AF\u1EDBc l\u01B0\u1EE3ng",WEB_TABLE_ESTIMATE_AI:"\u01AF\u1EDBc l\u01B0\u1EE3ng AI",WEB_TABLE_REF:"Ref",WEB_TABLE_CREATED:"Ng\xE0y t\u1EA1o",WEB_EYEBROW_MODULES:"MODULE",WEB_EYEBROW_PROJECT:"PROJECT",WEB_HEADING_MODULE_PROGRESS:"Ti\u1EBFn \u0111\u1ED9 theo module",WEB_HEADING_DECISIONS:"Open decisions",WEB_HEADING_USECASES:"Use case",WEB_HEADING_TESTCASES:"Test case",WEB_TABLE_DECISION:"M\xE3",WEB_TABLE_DECISION_QUESTION:"C\xE2u h\u1ECFi",WEB_TABLE_DECISION_DOMAINS:"Domain",WEB_TABLE_DECISION_STATUS:"Tr\u1EA1ng th\xE1i",WEB_TABLE_DECISION_CLOSED_BY:"Ng\u01B0\u1EDDi ch\u1ED1t",WEB_TABLE_DECISION_AI:"AI ch\u1ED1t",WEB_EMPTY_DECISIONS:"Ch\u01B0a c\xF3 decision.",WEB_TABLE_USECASE:"Use case",WEB_TABLE_TESTCASE:"Test case",WEB_TABLE_PROJECT:"Project",WEB_TABLE_USECASE_KEYS:"Use case",WEB_EMPTY_USECASES:"Ch\u01B0a c\xF3 use case.",WEB_EMPTY_TESTCASES:"Ch\u01B0a c\xF3 test case.",WEB_FILTER_MODULE_LABEL:"L\u1ECDc theo module",WEB_FILTER_MODULE_ALL:"M\u1ECDi module",WEB_FILTER_DOMAIN_LABEL:"L\u1ECDc theo domain",WEB_FILTER_DOMAIN_ALL:"M\u1ECDi domain",WEB_FILTER_DECISION_AI_ALL:"M\u1ECDi ng\u01B0\u1EDDi ch\u1ED1t",WEB_FILTER_DECISION_AI_YES:"AI ch\u1ED1t",WEB_FILTER_DECISION_AI_NO:"Ng\u01B0\u1EDDi ch\u1ED1t",WEB_STATUS_OPEN:"\u0110ang m\u1EDF",WEB_STATUS_PARTIAL:"M\u1ED9t ph\u1EA7n",WEB_STATUS_CLOSED:"\u0110\xE3 ch\u1ED1t",WEB_TESTCASE_TYPE_E2E:"E2E",WEB_TESTCASE_TYPE_UNIT:"Unit",WEB_TESTCASE_TYPE_INTEGRATION:"Integration",WEB_TABLE_MODULE:"Module",WEB_TABLE_UC_PROGRESS:"Use case",WEB_TABLE_TC_PROGRESS:"Test case",WEB_FILTER_PROJECT_LABEL:"L\u1ECDc theo project",WEB_FILTER_PROJECT_ALL:"T\u1EA5t c\u1EA3 project",WEB_EMPTY_MODULES:"Ch\u01B0a c\xF3 module.",WEB_EMPTY_PROJECTS:"Ch\u01B0a c\xF3 project \u2014 ch\u1EA1y pan project add tr\u01B0\u1EDBc.",WEB_EMPTY_PROJECT_PLANS:"Project n\xE0y ch\u01B0a c\xF3 plan.",WEB_STATS_PLANS:"T\u1ED5ng plan",WEB_STATS_TASKS:"T\u1ED5ng task",WEB_STATS_TASK_PROGRESS:"Task \u0111\xE3 l\xE0m",WEB_STATS_HOURS_HUMAN:"Gi\u1EDD (ng\u01B0\u1EDDi)",WEB_STATS_HOURS_AI:"Gi\u1EDD (AI)",WEB_STATS_REMAINING_HUMAN:"Man-day c\xF2n l\u1EA1i (ng\u01B0\u1EDDi)",WEB_STATS_REMAINING_AI:"Man-day c\xF2n l\u1EA1i (AI)",WEB_STATS_DONE:"\u0110\xE3 xong",WEB_STATS_IN_PROGRESS:"\u0110ang l\xE0m",WEB_STATS_READY:"S\u1EB5n s\xE0ng",WEB_STATS_BUGS:"Bug",WEB_STATS_CONFLICTS:"Xung \u0111\u1ED9t",WEB_STATS_UC_PROGRESS:"Use case \u0111\xE3 l\xE0m",WEB_STATS_TC_PROGRESS:"Test case \u0111\xE3 l\xE0m",WEB_STATS_PERCENT:"{value}%",WEB_STATS_HOURS_RATIO:"{done} / {total}",WEB_STATS_MAN_DAYS:"{value} MD",WEB_STATS_HOURS:"{value}h",WEB_ACTION_RELOAD:"T\u1EA3i l\u1EA1i",WEB_ACTION_AUTO_RELOAD:"T\u1EF1 t\u1EA3i l\u1EA1i",WEB_ACTION_LANG:"Ng\xF4n ng\u1EEF",WEB_ACTION_COPY_PROMPT:"Copy prompt",WEB_ACTION_COPY_LINK:"Sao ch\xE9p link",WEB_ACTION_COPIED:"\u0110\xE3 copy",WEB_STALE_WARNING:"\u0110\xE3 h\u01A1n 2 ph\xFAt ch\u01B0a c\u1EADp nh\u1EADt d\u1EEF li\u1EC7u \u2014 vui l\xF2ng t\u1EA3i l\u1EA1i.",WEB_FRESHNESS_CHECKING:"\u0110ang ki\u1EC3m tra d\u1EEF li\u1EC7u\u2026",WEB_FRESHNESS_ERROR:"Kh\xF4ng th\u1EC3 ki\u1EC3m tra d\u1EEF li\u1EC7u",WEB_FRESHNESS_NOT_CHECKED:"Ch\u01B0a ki\u1EC3m tra d\u1EEF li\u1EC7u",WEB_FRESHNESS_STALE:"D\u1EEF li\u1EC7u ch\u01B0a \u0111\u01B0\u1EE3c ki\u1EC3m tra qu\xE1 2 ph\xFAt",WEB_FRESHNESS_UNKNOWN:"Kh\xF4ng r\xF5",WEB_ERROR_LOAD:"Kh\xF4ng th\u1EC3 t\u1EA3i d\u1EEF li\u1EC7u: {message}",WEB_EMPTY_PLAN_MISSING:"Kh\xF4ng t\xECm th\u1EA5y plan.",WEB_EMPTY_PLAN_NO_DESCRIPTION:"Ch\u01B0a c\xF3 m\xF4 t\u1EA3",WEB_EMPTY_PLAN_NO_DOCUMENT:"Plan ch\u01B0a c\xF3 t\xE0i li\u1EC7u.",WEB_EMPTY_TASK_DOCUMENTS:"Plan ch\u01B0a c\xF3 t\xE0i li\u1EC7u solution/note. Th\xEAm b\u1EB1ng pan plan document add --type solution --file \u2026",WEB_HINT_TASK_DOCUMENTS:"Solution v\xE0 t\xF3m t\u1EAFt craft n\u1EB1m tr\xEAn plan (kh\xF4ng g\u1EAFn tr\u1EF1c ti\u1EBFp task). H\u1EC7 th\u1ED1ng \u01B0u ti\xEAn kh\u1EDBp theo t\xEAn phase.",WEB_EMPTY_DEPENDS:"Kh\xF4ng c\xF3 ph\u1EE5 thu\u1ED9c",WEB_EMPTY_ACTIVITY:"Ch\u01B0a c\xF3 ho\u1EA1t \u0111\u1ED9ng.",WEB_EVENT_DOCUMENT_ADDED:"Th\xEAm t\xE0i li\u1EC7u",WEB_EVENT_DOCUMENT_SUPERSEDED:"Thay t\xE0i li\u1EC7u",WEB_EVENT_LINK_ADDED:"Th\xEAm li\xEAn k\u1EBFt",WEB_EVENT_LINK_REMOVED:"G\u1EE1 li\xEAn k\u1EBFt",WEB_EVENT_TASK_CLAIMED:"Nh\u1EADn task",WEB_EVENT_TASK_RELEASED:"Nh\u1EA3 task",WEB_EVENT_TASK_ASSIGNED:"G\xE1n task",WEB_EVENT_TASK_BLOCKED:"Ch\u1EB7n",WEB_EVENT_TASK_UNBLOCKED:"G\u1EE1 ch\u1EB7n",WEB_EVENT_TASK_DONE:"Xong",WEB_EVENT_TASK_CANCELLED:"\u0110\xE3 h\u1EE7y",WEB_EVENT_TASK_REOPENED:"M\u1EDF l\u1EA1i",WEB_EVENT_TASK_STATUS_CHANGED:"\u0110\u1ED5i tr\u1EA1ng th\xE1i",WEB_EVENT_PLAN_STATUS_CHANGED:"\u0110\u1ED5i tr\u1EA1ng th\xE1i plan",WEB_EVENT_WORKLOG_ADDED:"Worklog",WEB_EVENT_WORKLOG_DURATION:"{minutes} ph\xFAt",WEB_LABEL_PROGRESS:"Ti\u1EBFn \u0111\u1ED9",WEB_LABEL_STATUS:"Tr\u1EA1ng th\xE1i",WEB_LABEL_TYPE:"Lo\u1EA1i",WEB_LABEL_ASSIGNEE:"Ph\u1EE5 tr\xE1ch",WEB_LABEL_ESTIMATE:"\u01AF\u1EDBc l\u01B0\u1EE3ng",WEB_LABEL_ACTUAL:"Th\u1EF1c t\u1EBF",WEB_LABEL_CREATED:"T\u1EA1o",WEB_LABEL_CREATED_AT:"T\u1EA1o l\xFAc",WEB_LABEL_UPDATED:"C\u1EADp nh\u1EADt",WEB_LABEL_REVISION:"Revision",WEB_LABEL_DOCUMENT:"T\xE0i li\u1EC7u",WEB_LABEL_DOCUMENTS:"T\xE0i li\u1EC7u",WEB_LABEL_RELATED_DOCUMENTS:"T\xE0i li\u1EC7u plan",WEB_LABEL_DOCUMENT_META:"Tr\u01B0\u1EDDng t\xE0i li\u1EC7u",WEB_META_SHOW_MORE:"Xem th\xEAm ({count})",WEB_META_SHOW_LESS:"Thu g\u1ECDn",WEB_META_FIELD_SLUG:"Slug",WEB_META_FIELD_TITLE:"Ti\xEAu \u0111\u1EC1",WEB_META_FIELD_DESCRIPTION:"M\xF4 t\u1EA3",WEB_META_FIELD_STATUS:"Tr\u1EA1ng th\xE1i",WEB_META_FIELD_PRIORITY:"\u0110\u1ED9 \u01B0u ti\xEAn",WEB_META_FIELD_EFFORT:"Effort (ng\u01B0\u1EDDi)",WEB_META_FIELD_EFFORT_AI:"Effort (AI)",WEB_LABEL_EFFORT_TASKS_HUMAN:"T\u1EEB task (ng\u01B0\u1EDDi)",WEB_LABEL_EFFORT_TASKS_AI:"T\u1EEB task (AI)",WEB_LABEL_REMAINING_HUMAN:"Man-day c\xF2n l\u1EA1i (ng\u01B0\u1EDDi)",WEB_LABEL_REMAINING_AI:"Man-day c\xF2n l\u1EA1i (AI)",WEB_META_FIELD_TAGS:"Tags",WEB_META_FIELD_BLOCKED_BY:"B\u1ECB ch\u1EB7n b\u1EDFi",WEB_META_FIELD_BLOCKS:"Ch\u1EB7n",WEB_META_FIELD_CREATED:"Ng\xE0y t\u1EA1o",WEB_META_FIELD_PHASE:"Phase",WEB_META_FIELD_TYPE:"Lo\u1EA1i",WEB_META_FIELD_STATE:"Tr\u1EA1ng th\xE1i",WEB_META_FIELD_OWNER:"Owner",WEB_META_FIELD_ASSIGNEE:"Ph\u1EE5 tr\xE1ch",WEB_DOC_TYPE_PLAN:"Plan",WEB_DOC_TYPE_SOLUTION:"Solution",WEB_DOC_TYPE_DECISION:"Decision",WEB_DOC_TYPE_NOTE:"Note",WEB_LABEL_EVENTS:"S\u1EF1 ki\u1EC7n",WEB_LABEL_DEPENDS:"Ph\u1EE5 thu\u1ED9c",WEB_LABEL_READY:"S\u1EB5n s\xE0ng",WEB_LABEL_TECHNICAL_INFO:"Th\xF4ng tin k\u1EF9 thu\u1EADt",WEB_LABEL_TOTAL_TASKS:"T\u1ED5ng task",WEB_LABEL_CSV_SOURCE:"CSV source",WEB_LABEL_CSV_VALID:"H\u1EE3p l\u1EC7",WEB_LABEL_CONFLICTS:"Xung \u0111\u1ED9t",WEB_LABEL_HASH:"Hash",WEB_LABEL_HASH_EMPTY:"Ch\u01B0a c\xF3",WEB_LABEL_LAST_LOAD:"L\u1EA7n t\u1EA3i",WEB_LABEL_NEVER_LOADED:"Ch\u01B0a t\u1EA3i",WEB_EMPTY_TASK_MISSING:"Kh\xF4ng t\xECm th\u1EA5y task.",WEB_LABEL_PLAN:"Plan",WEB_LABEL_PROJECT:"Project",WEB_LABEL_DESCRIPTION:"M\xF4 t\u1EA3",WEB_LABEL_ACCEPTANCE:"Acceptance",WEB_LABEL_VERIFICATION:"Verification",WEB_LABEL_TAGS:"Tags",WEB_LABEL_BLOCKER:"Blocker",WEB_LABEL_CLAIMANT:"Ng\u01B0\u1EDDi claim",WEB_LABEL_DIFFICULTY:"\u0110\u1ED9 kh\xF3",WEB_LABEL_BLOCKED:"\u0110ang ch\u1EB7n",WEB_ACTION_CLOSE:"\u0110\xF3ng",WEB_ACTION_OPEN_PLAN:"M\u1EDF plan",WEB_ACTION_VIEW_TASK:"Xem chi ti\u1EBFt",WEB_ACTION_VIEW_TASKS:"Xem task",WEB_ACTION_VIEW_DOCUMENT:"Xem t\xE0i li\u1EC7u",WEB_TASK_DETAIL_HINT:"B\u1EA5m m\u1ED9t d\xF2ng \u0111\u1EC3 xem chi ti\u1EBFt task."};ly.exports={en:z4,vi:J4}});var Et=g((lW,py)=>{"use strict";var fy=require("node:fs"),tf=require("node:path"),Js=dy(),Tr="en",Xs=null;function nf(t=process.cwd()){if(process.env.PAN_LANG)return String(process.env.PAN_LANG).toLowerCase();let e;try{e=tf.resolve(t)}catch{return Tr}for(let n=0;n<50;n+=1){let r=tf.join(e,".project.yaml");try{if(fy.existsSync(r)){let o=fy.readFileSync(r,"utf8").match(/^\s*language\s*:\s*['"]?([A-Za-z-]+)/m);return o?o[1].toLowerCase():Tr}}catch{}let s=tf.dirname(e);if(s===e)break;e=s}return Tr}function X4({cwd:t}={}){return Xs=nf(t),Xs}function rf(){return Xs===null&&(Xs=nf()),Xs}function Q4(t){Xs=String(t||Tr).toLowerCase()}function Z4(t,e){return e?String(t).replace(/\{(\w+)\}/g,(n,r)=>r in e?String(e[r]):n):t}function eD(t,e,n){let r=(n||rf()).toLowerCase(),i=(Js[r]||Js[Tr])[t]??Js[Tr][t]??t;return Z4(i,e)}function tD(t){let e=(t||rf()).toLowerCase();return{...Js[Tr],...Js[e]||{}}}function nD(){return Object.keys(Js)}py.exports={DEFAULT_LANG:Tr,availableLangs:nD,catalog:tD,currentLang:rf,detectLang:nf,initI18n:X4,setLang:Q4,t:eD}});var bc=g((dW,my)=>{"use strict";var{inputError:hy}=gt(),{t:_y}=Et();function Qs(t){return!t||!t.system||!t.id}function rD(t,e){if(t===void 0||t===!0||t==="")return null;let n=String(t).trim();if(!n)return null;let r=n.match(/^([a-z][a-z0-9_-]*):(.+)$/i);if(!r)throw hy(_y("ERR_INVALID_EXTERNAL_REF",{ref:n}));let s=r[1].toLowerCase(),i=r[2].trim();if(!i)throw hy(_y("ERR_INVALID_EXTERNAL_REF",{ref:n}));let o={system:s,id:i};return e!==void 0&&e!==!0&&e!==""&&(o.url=String(e).trim()),o}function sD(t){return Qs(t)?"":`${t.system}:${t.id}`}function iD(t){return Qs(t)?"":`${t.system}:${t.id}`}function oD(t,e){return Qs(e)?t&&!Qs(t)?t:{}:{system:e.system,id:e.id,url:e.url||t&&t.url||""}}function aD(t,e){let n=(t||[]).filter(r=>!String(r).startsWith("ref:"));return Qs(e)||n.push(`ref:${e.system}:${e.id}`),n}my.exports={externalRefDedupeKey:sD,formatExternalRefLabel:iD,isExternalRefEmpty:Qs,mergeExternalRef:oD,parseExternalRef:rD,syncRefTag:aD}});var Ay=g((fW,Ty)=>{"use strict";var xy=require("node:fs"),so=require("node:path"),yy=".project.yaml",by=".project.local.yaml";function cD(t){let e=String(t??"").trim(),n=e.indexOf(" #");return n>=0&&(e=e.slice(0,n).trimEnd()),(e.startsWith('"')&&e.endsWith('"')||e.startsWith("'")&&e.endsWith("'"))&&e.length>=2&&(e=e.slice(1,-1)),e.trim()}function gy(t){let e=t.indexOf(":");return e<0?[t.trim(),""]:[t.slice(0,e).trim(),cD(t.slice(e+1))]}function Sy(t){let e=[],n=!1,r=null,s=()=>{r&&r.path&&e.push(r),r=null};for(let i of String(t??"").split(/\r?\n/)){let o=i.replace(/\s+$/,"");if(!o.trim()||o.trim().startsWith("#"))continue;if(/^[^\s#]/.test(o)){s(),n=/^repositories:\s*$/.test(o);continue}if(!n)continue;let a=o.match(/^\s{2}-\s+(.*)$/);if(a){s(),r={name:"",path:""};let c=a[1].trim();if(c){let[u,d]=gy(c);(u==="name"||u==="path")&&(r[u]=d)}continue}if(r&&/^\s{4}\S/.test(o)){let[c,u]=gy(o);(c==="name"||c==="path")&&(r[c]=u)}}return s(),e}function Ey(t){return xy.existsSync(t)?Sy(xy.readFileSync(t,"utf8")):[]}function uD(t){let e=so.resolve(t),n=[...Ey(so.join(e,yy)),...Ey(so.join(e,by))],r=new Set,s=[];for(let i of n){let o=so.normalize(i.path);r.has(o)||(r.add(o),s.push({name:i.name||so.basename(o),path:o}))}return s}Ty.exports={LOCAL_MANIFEST_FILE:by,MANIFEST_FILE:yy,parseRepositoryEntries:Sy,readManifestRepos:uD}});var Tn=g((pW,Oy)=>{"use strict";var{randomInt:lD}=require("node:crypto"),X=require("node:path"),{inputError:Xe}=gt(),{t:Qe}=Et(),sf="0123456789ABCDEFGHJKMNPQRSTVWXYZ",wy=X.join("docs","plans"),Sc=X.join("docs","projects");function Zs(t){let e=String(t??"").normalize("NFD").replace(/[\u0300-\u036f]/g,"").toLowerCase().replace(/[^a-z0-9]+/g,"-").replace(/^-+|-+$/g,"");if(!e)throw Xe(Qe("ERR_LAYOUT_EMPTY_SLUG"));return e}function dD(t=5){let e="";for(let n=0;n<t;n+=1)e+=sf[lD(sf.length)];return e}function vy(t){if(!Number.isInteger(t)||t<1||t>99)throw Xe(Qe("ERR_PLAN_SEQ_RANGE"),{sequence:t});return String(t).padStart(2,"0")}function Ly(t){if(!Number.isInteger(t)||t<1)throw Xe(Qe("ERR_TASK_SEQ_POSITIVE"),{sequence:t});return`T${String(t).padStart(2,"0")}`}function Tc(t,e="token"){if(!/^[0-9A-HJKMNP-TV-Z]{5}$/.test(t))throw Xe(Qe("ERR_TOKEN_INVALID",{field:e}),{[e]:t})}function Cy(t,e){if(!/^[A-Z0-9]+$/.test(t))throw Xe(Qe("ERR_SEGMENT_INVALID",{field:e}),{[e]:t})}var ky=/^[A-Z0-9]+(?:-[A-Z0-9]+)*$/;function Ac(t,e="projectKey"){if(!ky.test(t))throw Xe(Qe("ERR_PROJECT_KEY_INVALID",{field:e}),{[e]:t})}function fD({token:t,gitUserSlug:e,sequence:n}){return Tc(t,"planToken"),`${t}-${Zs(e)}-${vy(n)}`}function pD({projectKey:t,actorCode:e,laneToken:n,sequence:r}){return Ac(t),Cy(e,"actorCode"),Tc(n,"laneToken"),`${t}-${e}-${n}-${Ly(r)}`}function Ry(t){let e=t instanceof Date?t:new Date(t);if(Number.isNaN(e.getTime()))throw Xe(Qe("ERR_TIMESTAMP_INVALID"),{value:t});let n=e.toISOString();return n.slice(0,4)+n.slice(5,7)+n.slice(8,10)+"-"+n.slice(11,13)+n.slice(14,16)+n.slice(17,19)}function Ny(t){if(!/^[0-9A-HJKMNP-TV-Z]{5}-[a-z0-9]+(?:-[a-z0-9]+)*-\d{2}$/.test(t))throw Xe(Qe("ERR_PLAN_KEY_INVALID"),{planKey:t})}function wc(t){if(!Number.isInteger(t)||t<1||t>99)throw Xe(Qe("ERR_ENTITY_SEQ_RANGE"),{sequence:t});return String(t).padStart(2,"0")}function Iy(t){return Zs(t).split("-").filter(Boolean).map(e=>e.toUpperCase()).join("-")}function hD(t,e){Ac(t);let n=Iy(e);if(!n)throw Xe(Qe("ERR_LAYOUT_EMPTY_SLUG"));return`${t}-${n}`}function _D(t,e){if(!/^[A-Z0-9]+(?:-[A-Z0-9]+)*$/.test(t))throw Xe(Qe("ERR_MODULE_KEY_INVALID"),{moduleKey:t});return`${t}-UC${wc(e)}`}function mD(t,e){if(!/^[A-Z0-9]+(?:-[A-Z0-9]+)*$/.test(t))throw Xe(Qe("ERR_MODULE_KEY_INVALID"),{moduleKey:t});return`${t}-TC${wc(e)}`}function of(t){let e=String(t||"").trim().toUpperCase().replace(/[^A-Z0-9_-]+/g,"");if(!e)throw Xe(Qe("ERR_PROJECT_KEY_REQUIRED"));return e}function xD(t){let e=String(t??"").trim().toUpperCase();if(!e)throw Xe(Qe("ERR_PROJECT_KEY_REQUIRED"));return Ac(e),e}function gD(t){return`OD-${wc(t)}`}function ED(t){let e=String(t||"").match(/^OD-(\d{2})$/i);return e?Number(e[1]):null}var yD=/^OD-\d{2}$/i,bD=/^OD-[0-9A-HJKMNP-TV-Z]{5}-[a-z0-9]+(?:-[a-z0-9]+)*-D\d{2}$/i;function SD(t){return yD.test(String(t||"").trim())}function TD(t){return bD.test(String(t||"").trim())}function AD(t){if(!Number.isInteger(t)||t<1)throw Xe(Qe("ERR_DECISION_LANE_SEQ_POSITIVE"),{sequence:t});return`D${String(t).padStart(2,"0")}`}function wD({laneToken:t,gitUserSlug:e,sequence:n}){Tc(t,"laneToken");let r=Zs(e);if(!r)throw Xe(Qe("ERR_LAYOUT_EMPTY_SLUG"));return`OD-${t}-${r}-${AD(n)}`}function vD(t){let e=String(t||"").match(/^OD-[0-9A-HJKMNP-TV-Z]{5}-[a-z0-9]+(?:-[a-z0-9]+)*-D(\d{2})$/i);return e?Number(e[1]):null}function LD(t,e){return X.join(t,`${e}.registry.decisions.csv`)}function CD(t,e,n,r){return X.join(t,`${e}--${n}-${Zs(r)}.decisions.csv`)}function kD(t,e){let n=of(e),r=X.join(X.resolve(t),Sc,n),s=X.join(r,"decisions");return{projectsRoot:X.join(X.resolve(t),Sc),projectDir:r,projectCsv:X.join(r,`${n}.project.csv`),modulesDir:X.join(r,"modules"),modulesCsv:X.join(r,"modules",`${n}.modules.csv`),usecasesDir:X.join(r,"use-cases"),usecasesCsv:X.join(r,"use-cases",`${n}.usecases.csv`),usecaseDocumentsDir:X.join(r,"use-cases","documents"),testcasesDir:X.join(r,"test-cases"),testcasesCsv:X.join(r,"test-cases",`${n}.testcases.csv`),testcaseDocumentsDir:X.join(r,"test-cases","documents"),plansDir:X.join(r,"plans"),eventsDir:X.join(r,"events"),eventsCsv:X.join(r,"events",`${n}.events.csv`),decisionsDir:s,decisionsCsv:X.join(s,`${n}.decisions.csv`),decisionsRegistryCsv:X.join(s,`${n}.registry.decisions.csv`),decisionEventsDir:X.join(s,"events"),decisionDocumentsDir:X.join(s,"documents")}}function RD({root:t,createdAt:e,planKey:n,planSlug:r,projectKey:s}){if(!t)throw Xe(Qe("ERR_MISSING_ROOT"));Ny(n);let i=Ry(e),o=Zs(r),a=i.slice(0,4),c=`${i}-${n}-${o}`;if(s){let f=of(s),p=X.join(X.resolve(t),Sc,f,"plans"),_=X.join(p,a),h=X.join(_,c);return{layout:"project",projectKey:f,plansRoot:p,yearDir:_,folderName:c,planDir:h,planCsv:X.join(h,`${n}.plan.csv`),documentsDir:X.join(h,"documents"),tasksDir:X.join(h,"tasks"),eventsDir:X.join(h,"events")}}let u=X.join(X.resolve(t),wy),d=X.join(u,a),l=X.join(d,c);return{layout:"legacy",projectKey:"",plansRoot:u,yearDir:d,folderName:c,planDir:l,planCsv:X.join(l,`${n}.plan.csv`),documentsDir:X.join(l,"documents"),tasksDir:X.join(l,"tasks"),eventsDir:X.join(l,"events")}}Oy.exports={CROCKFORD:sf,PLANS_DIR:wy,PROJECTS_DIR:Sc,PROJECT_KEY_PATTERN:ky,assertKeySegment:Cy,assertProjectKey:Ac,assertToken:Tc,createPlanPaths:RD,createProjectPaths:kD,formatEntitySequence:wc,formatPlanSequence:vy,formatTaskSequence:Ly,makeDecisionKey:gD,makeLaneDecisionKey:wD,makeModuleKey:hD,makePlanKey:fD,makeTaskKey:pD,makeTestcaseKey:mD,makeUsecaseKey:_D,moduleSlugSegment:Iy,normalizeProjectKey:of,parseProjectKey:xD,parseDecisionKey:ED,parseLaneDecisionKey:vD,isRegistryDecisionKey:SD,isLaneDecisionKey:TD,decisionRegistryCsvPath:LD,decisionLaneShardPath:CD,randomToken:dD,slugify:Zs,utcTimestamp:Ry,validatePlanKey:Ny}});var Ar=g((hW,Uy)=>{"use strict";var io=require("node:fs"),oo=require("node:path"),{readManifestRepos:ND}=Ay(),{PROJECTS_DIR:ID}=Tn(),Py="workspace";function My(t){let e=oo.join(t,ID);return io.existsSync(e)&&io.statSync(e).isDirectory()}function Dy(t,e,n){let r=io.existsSync(n)&&io.statSync(n).isDirectory(),s=r?io.realpathSync(n):n;return{name:t,kind:e,storeRoot:s,dirExists:r,hasStore:r&&My(s)}}function By(t){let e=oo.resolve(t),n=[Dy(Py,"workspace",e)];for(let r of ND(e))n.push(Dy(r.name,"repo",oo.resolve(e,r.path)));return n}function OD(t){return By(t).filter(e=>e.hasStore)}function DD(t,e){let n=oo.relative(t,e);return n===""?!0:!n.startsWith("..")&&!oo.isAbsolute(n)}Uy.exports={WORKSPACE_STORE_NAME:Py,hasProjectsStore:My,isInside:DD,listStoreCandidates:By,listStores:OD}});var Lc=g((_W,$y)=>{"use strict";var{execFileSync:PD}=require("node:child_process"),An=require("node:fs"),Ot=require("node:path"),{PanPlanError:vc}=gt(),{t:wn}=Et();function ei(t,e){let n=Ot.resolve(t);if(!An.existsSync(n)||!An.statSync(n).isDirectory())throw new vc("PAN_PLAN_ROOT_NOT_FOUND",wn("ERR_START_DIR_MISSING",{label:e}),{path:n},7);return An.realpathSync(n)}function jy(t){let e=Ot.resolve(t);for(;;){let n=Ot.join(e,".project.yaml");if(An.existsSync(n)&&An.statSync(n).isFile())return n;let r=Ot.dirname(e);if(r===e)return null;e=r}}function ao(t){try{let e=PD("git",["-C",Ot.resolve(t),"rev-parse","--show-toplevel"],{encoding:"utf8",stdio:["ignore","pipe","ignore"]}).trim();return e?An.realpathSync(Ot.resolve(e)):null}catch{return null}}function MD({startDir:t=process.cwd(),explicitRoot:e=""}={}){let n=ei(t,wn("LABEL_START_DIR"));if(e){let i=ei(e,wn("LABEL_WORKSPACE_ROOT"));return{root:i,manifestPath:An.existsSync(Ot.join(i,".project.yaml"))?Ot.join(i,".project.yaml"):null,gitRoot:ao(i)}}let r=jy(n);if(r){let i=Ot.dirname(r);return{root:i,manifestPath:r,gitRoot:ao(i)}}let s=ao(n);if(s)return{root:s,manifestPath:null,gitRoot:s};throw new vc("PAN_PLAN_ROOT_NOT_FOUND",wn("ERR_ROOT_NOT_FOUND",{startDir:n}),{startDir:n},7)}function BD({cwd:t=process.cwd(),workspaceRoot:e,explicit:n=""}={}){let{listStoreCandidates:r,isInside:s}=Ar(),i=ei(e,wn("LABEL_WORKSPACE_ROOT")),o=r(i);if(n){let u=o.find(l=>l.name===n);if(u)return u;let d=Ot.resolve(n);if(An.existsSync(d)&&An.statSync(d).isDirectory()){let l=o.find(f=>f.storeRoot===An.realpathSync(d));if(l)return l}throw new vc("PAN_STORE_NOT_FOUND",wn("ERR_STORE_NOT_FOUND",{store:n,stores:o.map(l=>l.name).join(", ")}),{store:n,stores:o.map(l=>l.name)},3)}let a=ei(t,wn("LABEL_START_DIR")),c=null;for(let u of o)u.dirExists&&s(u.storeRoot,a)&&(!c||u.storeRoot.length>c.storeRoot.length)&&(c=u);return c||o[0]}function UD({cwd:t=process.cwd(),workspaceRoot:e}={}){let{isInside:n,listStoreCandidates:r}=Ar(),s=ei(e,wn("LABEL_WORKSPACE_ROOT")),i=ei(t,wn("LABEL_START_DIR")),o=ao(i);if(!o||o===s||!n(s,o)||r(s).some(c=>c.storeRoot===o))return;let a=Ot.relative(s,o);throw new vc("PAN_REPO_NOT_DECLARED",wn("ERR_REPO_NOT_DECLARED",{path:a,name:Ot.basename(o)}),{repoPath:a,repoName:Ot.basename(o),workspaceRoot:s},7)}$y.exports={assertCwdRepoDeclared:UD,findGitRoot:ao,findManifest:jy,resolveStoreRoot:BD,resolveWorkspaceRoot:MD}});var lf=g((mW,Gy)=>{"use strict";var{execFileSync:jD}=require("node:child_process"),{randomUUID:Fy}=require("node:crypto"),{inputError:af}=gt(),{t:cf}=Et(),{randomToken:$D,slugify:qy}=Tn();function uf(t,e){try{return jD("git",["-C",t,"config",e],{encoding:"utf8",stdio:["ignore","pipe","ignore"]}).trim()}catch{return""}}function Ky(t){return qy(t).split("-").filter(Boolean).map(e=>e[0]).join("").toUpperCase()||"USER"}function FD({root:t,actorKind:e="human",actorCode:n=""}={}){if(!t)throw af(cf("ERR_MISSING_ROOT"));let r=uf(t,"user.name"),s=uf(t,"user.email");if(!r||!s)throw af(cf("ERR_MISSING_GIT_CONFIG"),{gitName:r,gitEmail:s});let i=e==="ai"?"ai":"human",o=(n||(i==="ai"?"AI":Ky(r))).toUpperCase();if(!/^[A-Z0-9]+$/.test(o))throw af(cf("ERR_ACTOR_CODE_INVALID"),{actorCode:o});return{actorId:Fy(),actorKind:i,actorCode:o,laneId:Fy(),laneToken:$D(),gitName:r,gitEmail:s,gitUserSlug:qy(r)}}Gy.exports={acronym:Ky,createLaneIdentity:FD,gitConfig:uf}});var co=g((xW,Yy)=>{"use strict";var{execFile:Wy}=require("node:child_process"),qD=require("node:fs/promises"),df=process.platform==="win32",Hy=new Set(["EBUSY","EPERM","EACCES","ENOTEMPTY"]),Vy=new Set(["EINVAL","ENOTSUP","EPERM","EACCES","EISDIR","EBADF"]);function KD(t){return new Promise(e=>setTimeout(e,t))}async function GD(t,e,n={}){let r=Math.max(1,n.attempts??(df?8:3)),s=Math.max(1,n.baseDelayMs??25),i;for(let o=1;o<=r;o+=1)try{await qD.rename(t,e);return}catch(a){if(i=a,!Hy.has(a.code)||o===r)throw a;await KD(s*o)}throw i}function WD(t){let e=String(t);if(df){Wy(process.env.ComSpec||"cmd.exe",["/s","/c","start",'""',e],{windowsVerbatimArguments:!0},()=>{});return}let n=process.platform==="darwin"?"open":"xdg-open";Wy(n,[e],()=>{})}function HD(t){return!t||Vy.has(t.code)}Yy.exports={IS_WINDOWS:df,RETRYABLE_RENAME_CODES:Hy,DIRECTORY_SYNC_SKIP_CODES:Vy,isDirectorySyncSkippable:HD,openBrowser:WD,renameWithRetry:GD}});var hb=g((gW,pb)=>{"use strict";var _f=Object.defineProperty,VD=Object.getOwnPropertyDescriptor,YD=Object.getOwnPropertyNames,zD=Object.prototype.hasOwnProperty,JD=(t,e)=>{for(var n in e)_f(t,n,{get:e[n],enumerable:!0})},XD=(t,e,n,r)=>{if(e&&typeof e=="object"||typeof e=="function")for(let s of YD(e))!zD.call(t,s)&&s!==n&&_f(t,s,{get:()=>e[s],enumerable:!(r=VD(e,s))||r.enumerable});return t},QD=t=>XD(_f({},"__esModule",{value:!0}),t),eb={};JD(eb,{Hooks:()=>po,Lexer:()=>Ln,Marked:()=>fb,Parser:()=>Cn,Renderer:()=>_o,TextRenderer:()=>Oc,Tokenizer:()=>ho,defaults:()=>wr,getDefaults:()=>Rc,lexer:()=>F3,marked:()=>ue,options:()=>D3,parse:()=>j3,parseInline:()=>U3,parser:()=>$3,setOptions:()=>P3,use:()=>M3,walkTokens:()=>B3});pb.exports=QD(eb);function Rc(){return{async:!1,breaks:!1,extensions:null,gfm:!0,hooks:null,pedantic:!1,renderer:null,silent:!1,tokenizer:null,walkTokens:null}}var wr=Rc();function tb(t){wr=t}var fo={exec:()=>null};function le(t,e=""){let n=typeof t=="string"?t:t.source,r={replace:(s,i)=>{let o=typeof i=="string"?i:i.source;return o=o.replace(lt.caret,"$1"),n=n.replace(s,o),r},getRegex:()=>new RegExp(n,e)};return r}var lt={codeRemoveIndent:/^(?: {1,4}| {0,3}\t)/gm,outputLinkReplace:/\\([\[\]])/g,indentCodeCompensation:/^(\s+)(?:```)/,beginningSpace:/^\s+/,endingHash:/#$/,startingSpaceChar:/^ /,endingSpaceChar:/ $/,nonSpaceChar:/[^ ]/,newLineCharGlobal:/\n/g,tabCharGlobal:/\t/g,multipleSpaceGlobal:/\s+/g,blankLine:/^[ \t]*$/,doubleBlankLine:/\n[ \t]*\n[ \t]*$/,blockquoteStart:/^ {0,3}>/,blockquoteSetextReplace:/\n {0,3}((?:=+|-+) *)(?=\n|$)/g,blockquoteSetextReplace2:/^ {0,3}>[ \t]?/gm,listReplaceTabs:/^\t+/,listReplaceNesting:/^ {1,4}(?=( {4})*[^ ])/g,listIsTask:/^\[[ xX]\] /,listReplaceTask:/^\[[ xX]\] +/,anyLine:/\n.*\n/,hrefBrackets:/^<(.*)>$/,tableDelimiter:/[:|]/,tableAlignChars:/^\||\| *$/g,tableRowBlankLine:/\n[ \t]*$/,tableAlignRight:/^ *-+: *$/,tableAlignCenter:/^ *:-+: *$/,tableAlignLeft:/^ *:-+ *$/,startATag:/^<a /i,endATag:/^<\/a>/i,startPreScriptTag:/^<(pre|code|kbd|script)(\s|>)/i,endPreScriptTag:/^<\/(pre|code|kbd|script)(\s|>)/i,startAngleBracket:/^</,endAngleBracket:/>$/,pedanticHrefTitle:/^([^'"]*[^\s])\s+(['"])(.*)\2/,unicodeAlphaNumeric:/[\p{L}\p{N}]/u,escapeTest:/[&<>"']/,escapeReplace:/[&<>"']/g,escapeTestNoEncode:/[<>"']|&(?!(#\d{1,7}|#[Xx][a-fA-F0-9]{1,6}|\w+);)/,escapeReplaceNoEncode:/[<>"']|&(?!(#\d{1,7}|#[Xx][a-fA-F0-9]{1,6}|\w+);)/g,unescapeTest:/&(#(?:\d+)|(?:#x[0-9A-Fa-f]+)|(?:\w+));?/ig,caret:/(^|[^\[])\^/g,percentDecode:/%25/g,findPipe:/\|/g,splitPipe:/ \|/,slashPipe:/\\\|/g,carriageReturn:/\r\n|\r/g,spaceLine:/^ +$/gm,notSpaceStart:/^\S*/,endingNewline:/\n$/,listItemRegex:t=>new RegExp(`^( {0,3}${t})((?:[ ][^\\n]*)?(?:\\n|$))`),nextBulletRegex:t=>new RegExp(`^ {0,${Math.min(3,t-1)}}(?:[*+-]|\\d{1,9}[.)])((?:[ ][^\\n]*)?(?:\\n|$))`),hrRegex:t=>new RegExp(`^ {0,${Math.min(3,t-1)}}((?:- *){3,}|(?:_ *){3,}|(?:\\* *){3,})(?:\\n+|$)`),fencesBeginRegex:t=>new RegExp(`^ {0,${Math.min(3,t-1)}}(?:\`\`\`|~~~)`),headingBeginRegex:t=>new RegExp(`^ {0,${Math.min(3,t-1)}}#`),htmlBeginRegex:t=>new RegExp(`^ {0,${Math.min(3,t-1)}}<(?:[a-z].*>|!--)`,"i")},ZD=/^(?:[ \t]*(?:\n|$))+/,e3=/^((?: {4}| {0,3}\t)[^\n]+(?:\n(?:[ \t]*(?:\n|$))*)?)+/,t3=/^ {0,3}(`{3,}(?=[^`\n]*(?:\n|$))|~{3,})([^\n]*)(?:\n|$)(?:|([\s\S]*?)(?:\n|$))(?: {0,3}\1[~`]* *(?=\n|$)|$)/,mo=/^ {0,3}((?:-[\t ]*){3,}|(?:_[ \t]*){3,}|(?:\*[ \t]*){3,})(?:\n+|$)/,n3=/^ {0,3}(#{1,6})(?=\s|$)(.*)(?:\n+|$)/,mf=/(?:[*+-]|\d{1,9}[.)])/,nb=/^(?!bull |blockCode|fences|blockquote|heading|html|table)((?:.|\n(?!\s*?\n|bull |blockCode|fences|blockquote|heading|html|table))+?)\n {0,3}(=+|-+) *(?:\n+|$)/,rb=le(nb).replace(/bull/g,mf).replace(/blockCode/g,/(?: {4}| {0,3}\t)/).replace(/fences/g,/ {0,3}(?:`{3,}|~{3,})/).replace(/blockquote/g,/ {0,3}>/).replace(/heading/g,/ {0,3}#{1,6}/).replace(/html/g,/ {0,3}<[^\n>]+>\n/).replace(/\|table/g,"").getRegex(),r3=le(nb).replace(/bull/g,mf).replace(/blockCode/g,/(?: {4}| {0,3}\t)/).replace(/fences/g,/ {0,3}(?:`{3,}|~{3,})/).replace(/blockquote/g,/ {0,3}>/).replace(/heading/g,/ {0,3}#{1,6}/).replace(/html/g,/ {0,3}<[^\n>]+>\n/).replace(/table/g,/ {0,3}\|?(?:[:\- ]*\|)+[\:\- ]*\n/).getRegex(),xf=/^([^\n]+(?:\n(?!hr|heading|lheading|blockquote|fences|list|html|table| +\n)[^\n]+)*)/,s3=/^[^\n]+/,gf=/(?!\s*\])(?:\\.|[^\[\]\\])+/,i3=le(/^ {0,3}\[(label)\]: *(?:\n[ \t]*)?([^<\s][^\s]*|<.*?>)(?:(?: +(?:\n[ \t]*)?| *\n[ \t]*)(title))? *(?:\n+|$)/).replace("label",gf).replace("title",/(?:"(?:\\"?|[^"\\])*"|'[^'\n]*(?:\n[^'\n]+)*\n?'|\([^()]*\))/).getRegex(),o3=le(/^( {0,3}bull)([ \t][^\n]+?)?(?:\n|$)/).replace(/bull/g,mf).getRegex(),Nc="address|article|aside|base|basefont|blockquote|body|caption|center|col|colgroup|dd|details|dialog|dir|div|dl|dt|fieldset|figcaption|figure|footer|form|frame|frameset|h[1-6]|head|header|hr|html|iframe|legend|li|link|main|menu|menuitem|meta|nav|noframes|ol|optgroup|option|p|param|search|section|summary|table|tbody|td|tfoot|th|thead|title|tr|track|ul",Ef=/<!--(?:-?>|[\s\S]*?(?:-->|$))/,a3=le("^ {0,3}(?:<(script|pre|style|textarea)[\\s>][\\s\\S]*?(?:</\\1>[^\\n]*\\n+|$)|comment[^\\n]*(\\n+|$)|<\\?[\\s\\S]*?(?:\\?>\\n*|$)|<![A-Z][\\s\\S]*?(?:>\\n*|$)|<!\\[CDATA\\[[\\s\\S]*?(?:\\]\\]>\\n*|$)|</?(tag)(?: +|\\n|/?>)[\\s\\S]*?(?:(?:\\n[ ]*)+\\n|$)|<(?!script|pre|style|textarea)([a-z][\\w-]*)(?:attribute)*? */?>(?=[ \\t]*(?:\\n|$))[\\s\\S]*?(?:(?:\\n[ ]*)+\\n|$)|</(?!script|pre|style|textarea)[a-z][\\w-]*\\s*>(?=[ \\t]*(?:\\n|$))[\\s\\S]*?(?:(?:\\n[ ]*)+\\n|$))","i").replace("comment",Ef).replace("tag",Nc).replace("attribute",/ +[a-zA-Z:_][\w.:-]*(?: *= *"[^"\n]*"| *= *'[^'\n]*'| *= *[^\s"'=<>`]+)?/).getRegex(),sb=le(xf).replace("hr",mo).replace("heading"," {0,3}#{1,6}(?:\\s|$)").replace("|lheading","").replace("|table","").replace("blockquote"," {0,3}>").replace("fences"," {0,3}(?:`{3,}(?=[^`\\n]*\\n)|~{3,})[^\\n]*\\n").replace("list"," {0,3}(?:[*+-]|1[.)]) ").replace("html","</?(?:tag)(?: +|\\n|/?>)|<(?:script|pre|style|textarea|!--)").replace("tag",Nc).getRegex(),c3=le(/^( {0,3}> ?(paragraph|[^\n]*)(?:\n|$))+/).replace("paragraph",sb).getRegex(),yf={blockquote:c3,code:e3,def:i3,fences:t3,heading:n3,hr:mo,html:a3,lheading:rb,list:o3,newline:ZD,paragraph:sb,table:fo,text:s3},zy=le("^ *([^\\n ].*)\\n {0,3}((?:\\| *)?:?-+:? *(?:\\| *:?-+:? *)*(?:\\| *)?)(?:\\n((?:(?! *\\n|hr|heading|blockquote|code|fences|list|html).*(?:\\n|$))*)\\n*|$)").replace("hr",mo).replace("heading"," {0,3}#{1,6}(?:\\s|$)").replace("blockquote"," {0,3}>").replace("code","(?: {4}| {0,3} )[^\\n]").replace("fences"," {0,3}(?:`{3,}(?=[^`\\n]*\\n)|~{3,})[^\\n]*\\n").replace("list"," {0,3}(?:[*+-]|1[.)]) ").replace("html","</?(?:tag)(?: +|\\n|/?>)|<(?:script|pre|style|textarea|!--)").replace("tag",Nc).getRegex(),u3={...yf,lheading:r3,table:zy,paragraph:le(xf).replace("hr",mo).replace("heading"," {0,3}#{1,6}(?:\\s|$)").replace("|lheading","").replace("table",zy).replace("blockquote"," {0,3}>").replace("fences"," {0,3}(?:`{3,}(?=[^`\\n]*\\n)|~{3,})[^\\n]*\\n").replace("list"," {0,3}(?:[*+-]|1[.)]) ").replace("html","</?(?:tag)(?: +|\\n|/?>)|<(?:script|pre|style|textarea|!--)").replace("tag",Nc).getRegex()},l3={...yf,html:le(`^ *(?:comment *(?:\\n|\\s*$)|<(tag)[\\s\\S]+?</\\1> *(?:\\n{2,}|\\s*$)|<tag(?:"[^"]*"|'[^']*'|\\s[^'"/>\\s]*)*?/?> *(?:\\n{2,}|\\s*$))`).replace("comment",Ef).replace(/tag/g,"(?!(?:a|em|strong|small|s|cite|q|dfn|abbr|data|time|code|var|samp|kbd|sub|sup|i|b|u|mark|ruby|rt|rp|bdi|bdo|span|br|wbr|ins|del|img)\\b)\\w+(?!:|[^\\w\\s@]*@)\\b").getRegex(),def:/^ *\[([^\]]+)\]: *<?([^\s>]+)>?(?: +(["(][^\n]+[")]))? *(?:\n+|$)/,heading:/^(#{1,6})(.*)(?:\n+|$)/,fences:fo,lheading:/^(.+?)\n {0,3}(=+|-+) *(?:\n+|$)/,paragraph:le(xf).replace("hr",mo).replace("heading",` *#{1,6} *[^
667
+ R\u1ED3i ch\u1EA1y l\u1EA1i l\u1EC7nh trong repo \u0111\xF3. N\u1EBFu c\u1ED1 \xFD d\xF9ng store workspace th\xEC th\xEAm --store workspace.`,MSG_STORE_SELECTED:"Store: {store} ({path})",ERR_PROJECT_KEY_TAKEN:"Project key {key} \u0111\xE3 c\xF3 \u1EDF store: {stores}. Ch\u1ECDn key kh\xE1c, v\xED d\u1EE5 {suggestion}.",ERR_MIGRATE_TARGET_REQUIRED:"Thi\u1EBFu store \u0111\xEDch \u2014 d\xF9ng --to <store>",ERR_PROJECT_ALREADY_IN_STORE:"Project {key} \u0111\xE3 n\u1EB1m \u1EDF store {store}",MSG_MIGRATE_STORE_DONE:"\u0110\xE3 chuy\u1EC3n {key} t\u1EEB {from} sang {to} ({count} file)",LABEL_START_DIR:"Th\u01B0 m\u1EE5c b\u1EAFt \u0111\u1EA7u",LABEL_WORKSPACE_ROOT:"Workspace root",ERR_PLAN_NAME_REQUIRED:"Thi\u1EBFu t\xEAn plan",ERR_PLAN_NEEDS_PROJECT:"Plan ph\u1EA3i thu\u1ED9c project \u2014 d\xF9ng --project PSC ho\u1EB7c projects_json c\xF3 key",ERR_PLAN_DOCUMENT_REQUIRED:"Plan m\u1EDBi ph\u1EA3i c\xF3 t\xE0i li\u1EC7u .plan.md",ERR_TASK_NEEDS_PLAN_AND_TITLE:"Task c\u1EA7n plan key v\xE0 title",ERR_TASK_UPDATE_NEEDS_FIELD:"C\u1EADp nh\u1EADt task c\u1EA7n \xEDt nh\u1EA5t m\u1ED9t trong --title, --description, --estimate ho\u1EB7c --estimate-ai",ERR_PROJECT_CODE_NO_SLASH:"Project code kh\xF4ng \u0111\u01B0\u1EE3c ch\u1EE9a slash",ERR_MIGRATE_NEEDS_PROJECT:"Plan {planKey} ch\u01B0a c\xF3 project \u2014 truy\u1EC1n --project PSC khi migrate-plans",ERR_MIGRATE_DEST_EXISTS:"Kh\xF4ng migrate \u0111\u01B0\u1EE3c {key}: \u0111\xEDch \u0111\xE3 t\u1ED3n t\u1EA1i t\u1EA1i {dest}",ERR_DOCUMENT_TYPE_INVALID:"Document type kh\xF4ng h\u1EE3p l\u1EC7",ERR_DOCUMENT_EMPTY:"Document kh\xF4ng \u0111\u01B0\u1EE3c r\u1ED7ng",ERR_KEY_COLLISION:"Kh\xF4ng th\u1EC3 c\u1EA5p plan key kh\xF4ng tr\xF9ng sau 32 l\u1EA7n",ERR_PLAN_FOLDER_EXISTS:"Plan folder \u0111\xE3 t\u1ED3n t\u1EA1i",ERR_PLAN_CSV_UNIQUE:"M\u1ED7i plan folder ph\u1EA3i c\xF3 \u0111\xFAng m\u1ED9t .plan.csv",ERR_PLAN_KEY_DUPLICATED:"Plan key {key} xu\u1EA5t hi\u1EC7n \u1EDF nhi\u1EC1u folder",ERR_SYMLINK_NOT_ALLOWED:"Kh\xF4ng cho ph\xE9p symlink trong docs/plans",ERR_STORE_LOCKED:"M\u1ED9t process kh\xE1c \u0111ang ghi c\xF9ng Pan Plans shard",ERR_GIT_REQUIRED:"Mutation Pan Plans y\xEAu c\u1EA7u Git repository",ERR_SOURCE_EXISTS:"Source file \u0111\xE3 t\u1ED3n t\u1EA1i",ERR_SOURCE_CORRUPTED:"N\u1ED9i dung \u0111\u1ECDc l\u1EA1i kh\xE1c n\u1ED9i dung v\u1EEBa ghi",ERR_CSV_MISSING_COLUMNS:"CSV schema ph\u1EA3i c\xF3 danh s\xE1ch columns",ERR_CSV_WRONG_DELIMITER:"CSV ngu\u1ED3n ph\u1EA3i d\xF9ng d\u1EA5u ph\u1EA9y, kh\xF4ng d\xF9ng d\u1EA5u ch\u1EA5m ph\u1EA9y",ERR_CSV_PARSE_ERROR:"Kh\xF4ng th\u1EC3 parse CSV",ERR_CSV_NO_HEADER:"CSV kh\xF4ng c\xF3 header",ERR_CSV_HEADER_MISMATCH:"CSV header kh\xF4ng kh\u1EDBp schema",ERR_CSV_INVALID_JSON:"Kh\xF4ng th\u1EC3 parse {column}",ERR_CSV_MISSING_FIELD:"CSV row thi\u1EBFu field b\u1EAFt bu\u1ED9c",ERR_MISSING_GIT_CONFIG:"Thi\u1EBFu git config user.name ho\u1EB7c user.email",ERR_ACTOR_CODE_INVALID:"Actor code ch\u1EC9 \u0111\u01B0\u1EE3c d\xF9ng ch\u1EEF hoa v\xE0 s\u1ED1",ERR_LAYOUT_EMPTY_SLUG:"Kh\xF4ng th\u1EC3 t\u1EA1o slug t\u1EEB gi\xE1 tr\u1ECB r\u1ED7ng",ERR_PLAN_SEQ_RANGE:"Plan sequence ph\u1EA3i n\u1EB1m trong kho\u1EA3ng 1 \u0111\u1EBFn 99",ERR_TASK_SEQ_POSITIVE:"Task sequence ph\u1EA3i l\xE0 s\u1ED1 nguy\xEAn d\u01B0\u01A1ng",ERR_TOKEN_INVALID:"{field} ph\u1EA3i l\xE0 Crockford Base32 g\u1ED3m 5 k\xFD t\u1EF1",ERR_SEGMENT_INVALID:"{field} ch\u1EC9 \u0111\u01B0\u1EE3c d\xF9ng ch\u1EEF hoa v\xE0 s\u1ED1",ERR_PLAN_KEY_INVALID:"Plan key kh\xF4ng \u0111\xFAng \u0111\u1ECBnh d\u1EA1ng",ERR_TIMESTAMP_INVALID:"Timestamp kh\xF4ng h\u1EE3p l\u1EC7",SEED_README:'# Pan Plans\n\nTh\u01B0 m\u1EE5c n\xE0y do `pan plan` v\xE0 `pan task` qu\u1EA3n l\xFD.\n\n- Commit to\xE0n b\u1ED9 source trong `docs/plans/`.\n- Kh\xF4ng s\u1EEDa d\xF2ng CSV b\u1EB1ng tay.\n- CSV d\xF9ng d\u1EA5u ph\u1EA9y v\xE0 quote k\xE9p chu\u1EA9n.\n- Ch\u1EA1y `pan plan verify` tr\u01B0\u1EDBc khi commit v\xE0 sau khi merge.\n- Ho\u1EA1t \u0111\u1ED9ng tr\xEAn macOS, Linux v\xE0 Windows 10/11. Windows d\xF9ng Git for Windows\n c\xF9ng PowerShell 7 ho\u1EB7c Windows Terminal.\n\n## \u0110\u1EB7t t\xEAn\n\n- Folder plan: `YYYYMMDD-HHmmss-{plan_key}-{plan_slug}/`\n- Plan CSV: `{plan_key}.plan.csv`\n- Document: `YYYYMMDD-HHmmss-{plan_key}-{slug}.solution.md` (also `.plan.md`, `.decision.md`, `.note.md`)\n- Task shard: `{plan_key}--{lane}-{git_user_slug}.tasks.csv`\n- Event shard: `{plan_key}--{lane}-{git_user_slug}.events.csv`\n\nSlug document l\u1EA5y t\u1EEB `--slug`, `--name`, `title:` trong markdown, ho\u1EB7c t\xEAn file `--file`.\nTh\xEAm solution: `pan plan document add PLAN_KEY --type solution --name "Ti\xEAu \u0111\u1EC1" --file file.md`.\n',TASK_PROMPT_TITLE:"Th\u1EF1c hi\u1EC7n task {key}",TASK_PROMPT_META_PLAN:"Plan: {planKey} - {planTitle}",TASK_PROMPT_META_PROJECT:"Project: {project}",TASK_PROMPT_META_STATUS:"Status: {status}",TASK_PROMPT_META_REVISION:"Revision: {revision}",TASK_PROMPT_META_READY:"S\u1EB5n s\xE0ng ch\u1EA1y song song: {ready}",TASK_PROMPT_REQUIREMENTS:"Y\xEAu c\u1EA7u",TASK_PROMPT_DEPENDS:"Ph\u1EE5 thu\u1ED9c",TASK_PROMPT_DEPENDS_NONE:"- Kh\xF4ng c\xF3",TASK_PROMPT_ACCEPTANCE:"Acceptance",TASK_PROMPT_ACCEPTANCE_DEFAULT:"- Ho\xE0n th\xE0nh \u0111\xFAng m\xF4 t\u1EA3 task",TASK_PROMPT_VERIFICATION:"Verification",TASK_PROMPT_VERIFICATION_DEFAULT:"- Ch\u1EA1y test ph\xF9 h\u1EE3p",TASK_PROMPT_FOOTER:"Kh\xF4ng s\u1EEDa CSV tr\u1EF1c ti\u1EBFp. D\xF9ng `pan task claim`, `pan task block`, `pan task worklog` v\xE0 `pan task done`.",WEB_TITLE:"Pan Plans",WEB_BRAND_TAGLINE:"AI Workspace",WEB_NAV_MAIN:"\u0110i\u1EC1u h\u01B0\u1EDBng ch\xEDnh",WEB_NAV_MOBILE:"\u0110i\u1EC1u h\u01B0\u1EDBng di \u0111\u1ED9ng",WEB_NAV_DASHBOARD:"T\u1ED5ng quan",WEB_NAV_PLANS:"Plans",WEB_NAV_TASKS:"Tasks",WEB_NAV_DECISIONS:"Decisions",WEB_NAV_USECASES:"Use case",WEB_NAV_TESTCASES:"Test case",WEB_NAV_ACTIVITY:"Ho\u1EA1t \u0111\u1ED9ng",WEB_NAV_DOCUMENTS:"T\xE0i li\u1EC7u",WEB_SIDEBAR_SOURCE:"Ngu\u1ED3n",WEB_MENU_OPEN:"M\u1EDF menu",WEB_SEARCH_PLACEHOLDER:"T\xECm plan, task, actor ho\u1EB7c m\xE3\u2026",WEB_HEADING_DASHBOARD_TITLE:"T\u1ED5ng quan c\xF4ng vi\u1EC7c",WEB_HEADING_DASHBOARD_LEAD:"Plan, task v\xE0 t\xE0i li\u1EC7u \u0111\u01B0\u1EE3c t\u1ED5ng h\u1EE3p tr\u1EF1c ti\u1EBFp t\u1EEB Git.",WEB_EYEBROW_PAN_PLANS:"PAN PLANS",WEB_EYEBROW_WORKSPACE:"WORKSPACE",WEB_EYEBROW_DELIVERY:"DELIVERY",WEB_EYEBROW_AUDIT:"AUDIT",WEB_EYEBROW_DECISIONS:"DECISIONS",WEB_EYEBROW_USECASES:"USE CASES",WEB_EYEBROW_TESTCASES:"TEST CASES",WEB_EYEBROW_UPDATED:"M\u1EDAI C\u1EACP NH\u1EACT",WEB_EYEBROW_QUALITY:"CH\u1EA4T L\u01AF\u1EE2NG",WEB_HEADING_PLANS_TITLE:"Qu\u1EA3n l\xFD plans",WEB_HEADING_PLANS_LEAD:"Folder m\u1EDBi nh\u1EA5t \u0111\u01B0\u1EE3c \u01B0u ti\xEAn hi\u1EC3n th\u1ECB tr\u01B0\u1EDBc.",WEB_HEADING_TASKS_TITLE:"Tasks",WEB_HEADING_TASKS_LEAD:"L\u1ECDc v\xE0 copy prompt \u0111\u1EC3 giao vi\u1EC7c cho AI.",WEB_HEADING_ACTIVITY_TITLE:"Ho\u1EA1t \u0111\u1ED9ng",WEB_HEADING_ACTIVITY_LEAD:"Event b\u1EA5t bi\u1EBFn t\u1EEB m\u1ECDi writer lane.",WEB_HEADING_DECISIONS_TITLE:"Open decisions",WEB_HEADING_DECISIONS_LEAD:"Decision registry v\xE0 lane tr\xEAn m\u1ECDi project.",WEB_HEADING_USECASES_TITLE:"Use case",WEB_HEADING_USECASES_LEAD:"Ph\u1EE7 ch\u1EE9c n\u0103ng theo module v\xE0 project.",WEB_HEADING_TESTCASES_TITLE:"Test case",WEB_HEADING_TESTCASES_LEAD:"Ph\u1EE7 ki\u1EC3m th\u1EED li\xEAn k\u1EBFt use case.",WEB_HEADING_RECENT_PLANS:"Plans g\u1EA7n \u0111\xE2y",WEB_HEADING_SOURCE_STATUS:"Tr\u1EA1ng th\xE1i ngu\u1ED3n",WEB_PRIMARY_ACTION_ALL_PLANS:"Xem t\u1EA5t c\u1EA3 plan",WEB_BACK_TO_PLANS:"\u2190 Danh s\xE1ch plans",WEB_SORT_LABEL:"S\u1EAFp x\u1EBFp plans",WEB_SORT_NEWEST:"M\u1EDBi nh\u1EA5t",WEB_SORT_OLDEST:"C\u0169 nh\u1EA5t",WEB_SORT_PROGRESS:"Ti\u1EBFn \u0111\u1ED9 cao",WEB_FILTER_STATUS_LABEL:"L\u1ECDc tr\u1EA1ng th\xE1i",WEB_FILTER_STATUS_ALL:"M\u1ECDi tr\u1EA1ng th\xE1i",WEB_FILTER_TYPE_ALL:"M\u1ECDi lo\u1EA1i",WEB_FILTER_READY_ALL:"M\u1ECDi m\u1EE9c s\u1EB5n s\xE0ng",WEB_FILTER_READY_ONLY:"S\u1EB5n s\xE0ng cho AI",WEB_FILTER_WAITING_DEPS:"\u0110ang ch\u1EDD ph\u1EE5 thu\u1ED9c",WEB_FILTER_PLAN_LABEL:"L\u1ECDc theo plan",WEB_FILTER_PLAN_ALL:"M\u1ECDi plan",WEB_FILTER_PLAN_HINT:"Plan: m\u1EDBi nh\u1EA5t tr\u01B0\u1EDBc \xB7 task: m\u1EDBi nh\u1EA5t tr\u01B0\u1EDBc",WEB_FILTER_ACTIVITY_HINT:"Plan: m\u1EDBi nh\u1EA5t tr\u01B0\u1EDBc \xB7 ho\u1EA1t \u0111\u1ED9ng: m\u1EDBi nh\u1EA5t tr\u01B0\u1EDBc",WEB_FILTER_EVENT_TYPE_LABEL:"L\u1ECDc lo\u1EA1i s\u1EF1 ki\u1EC7n",WEB_FILTER_EVENT_TYPE_ALL:"M\u1ECDi lo\u1EA1i s\u1EF1 ki\u1EC7n",WEB_FILTER_ENTITY_TYPE_LABEL:"L\u1ECDc th\u1EF1c th\u1EC3",WEB_FILTER_ENTITY_TYPE_ALL:"M\u1ECDi th\u1EF1c th\u1EC3",WEB_ENTITY_TYPE_PLAN:"Plan",WEB_ENTITY_TYPE_TASK:"Task",WEB_ENTITY_TYPE_DECISION:"Quy\u1EBFt \u0111\u1ECBnh",WEB_ENTITY_TYPE_USECASE:"Use case",WEB_ENTITY_TYPE_TESTCASE:"Test case",WEB_PAGER_PREV:"Tr\u01B0\u1EDBc",WEB_PAGER_NEXT:"Sau",WEB_PAGER_PAGE:"Trang {page} / {pages} \xB7 {total} m\u1EE5c",WEB_STATUS_DRAFT:"Draft",WEB_STATUS_ACTIVE:"Active",WEB_STATUS_PAUSED:"Paused",WEB_STATUS_COMPLETED:"Completed",WEB_STATUS_TODO:"Ch\u01B0a x\u1EED l\xFD",WEB_STATUS_IN_PROGRESS:"\u0110ang l\xE0m",WEB_STATUS_DONE:"Ho\xE0n th\xE0nh",WEB_STATUS_CANCELLED:"\u0110\xE3 h\u1EE7y",WEB_STATUS_BLOCKED:"\u0110ang ch\u1EB7n",WEB_STATUS_READY:"S\u1EB5n s\xE0ng",WEB_STATUS_WAITING:"\u0110ang ch\u1EDD",WEB_TASK_TYPE_TASK:"Task",WEB_TASK_TYPE_BUG:"Bug",WEB_TASK_TYPE_STORY:"Story",WEB_PRIORITY_CRITICAL:"Critical",WEB_PRIORITY_HIGH:"High",WEB_PRIORITY_MEDIUM:"Medium",WEB_PRIORITY_LOW:"Low",WEB_PRIORITY_P0:"P0",WEB_PRIORITY_P1:"P1",WEB_PRIORITY_P2:"P2",WEB_PRIORITY_P3:"P3",WEB_TABLE_ID:"M\xE3",WEB_TABLE_TITLE:"Ti\xEAu \u0111\u1EC1",WEB_TABLE_TYPE:"Lo\u1EA1i",WEB_TABLE_STATUS:"Tr\u1EA1ng th\xE1i",WEB_TABLE_PRIORITY:"\u01AFu ti\xEAn",WEB_TABLE_DEPENDS:"Ph\u1EE5 thu\u1ED9c",WEB_TABLE_ACTOR:"Actor",WEB_TABLE_ESTIMATE:"\u01AF\u1EDBc l\u01B0\u1EE3ng",WEB_TABLE_ESTIMATE_AI:"\u01AF\u1EDBc l\u01B0\u1EE3ng AI",WEB_TABLE_REF:"Ref",WEB_TABLE_CREATED:"Ng\xE0y t\u1EA1o",WEB_EYEBROW_MODULES:"MODULE",WEB_EYEBROW_PROJECT:"PROJECT",WEB_HEADING_MODULE_PROGRESS:"Ti\u1EBFn \u0111\u1ED9 theo module",WEB_HEADING_DECISIONS:"Open decisions",WEB_HEADING_USECASES:"Use case",WEB_HEADING_TESTCASES:"Test case",WEB_TABLE_DECISION:"M\xE3",WEB_TABLE_DECISION_QUESTION:"C\xE2u h\u1ECFi",WEB_TABLE_DECISION_DOMAINS:"Domain",WEB_TABLE_DECISION_STATUS:"Tr\u1EA1ng th\xE1i",WEB_TABLE_DECISION_CLOSED_BY:"Ng\u01B0\u1EDDi ch\u1ED1t",WEB_TABLE_DECISION_AI:"AI ch\u1ED1t",WEB_EMPTY_DECISIONS:"Ch\u01B0a c\xF3 decision.",WEB_TABLE_USECASE:"Use case",WEB_TABLE_TESTCASE:"Test case",WEB_TABLE_PROJECT:"Project",WEB_TABLE_USECASE_KEYS:"Use case",WEB_EMPTY_USECASES:"Ch\u01B0a c\xF3 use case.",WEB_EMPTY_TESTCASES:"Ch\u01B0a c\xF3 test case.",WEB_FILTER_MODULE_LABEL:"L\u1ECDc theo module",WEB_FILTER_MODULE_ALL:"M\u1ECDi module",WEB_FILTER_DOMAIN_LABEL:"L\u1ECDc theo domain",WEB_FILTER_DOMAIN_ALL:"M\u1ECDi domain",WEB_FILTER_DECISION_AI_ALL:"M\u1ECDi ng\u01B0\u1EDDi ch\u1ED1t",WEB_FILTER_DECISION_AI_YES:"AI ch\u1ED1t",WEB_FILTER_DECISION_AI_NO:"Ng\u01B0\u1EDDi ch\u1ED1t",WEB_STATUS_OPEN:"\u0110ang m\u1EDF",WEB_STATUS_PARTIAL:"M\u1ED9t ph\u1EA7n",WEB_STATUS_CLOSED:"\u0110\xE3 ch\u1ED1t",WEB_TESTCASE_TYPE_E2E:"E2E",WEB_TESTCASE_TYPE_UNIT:"Unit",WEB_TESTCASE_TYPE_INTEGRATION:"Integration",WEB_TABLE_MODULE:"Module",WEB_TABLE_UC_PROGRESS:"Use case",WEB_TABLE_TC_PROGRESS:"Test case",WEB_FILTER_PROJECT_LABEL:"L\u1ECDc theo project",WEB_FILTER_PROJECT_ALL:"T\u1EA5t c\u1EA3 project",WEB_EMPTY_MODULES:"Ch\u01B0a c\xF3 module.",WEB_EMPTY_PROJECTS:"Ch\u01B0a c\xF3 project \u2014 ch\u1EA1y pan project add tr\u01B0\u1EDBc.",WEB_EMPTY_PROJECT_PLANS:"Project n\xE0y ch\u01B0a c\xF3 plan.",WEB_STATS_PLANS:"T\u1ED5ng plan",WEB_STATS_TASKS:"T\u1ED5ng task",WEB_STATS_TASK_PROGRESS:"Task \u0111\xE3 l\xE0m",WEB_STATS_HOURS_HUMAN:"Gi\u1EDD (ng\u01B0\u1EDDi)",WEB_STATS_HOURS_AI:"Gi\u1EDD (AI)",WEB_STATS_REMAINING_HUMAN:"Man-day c\xF2n l\u1EA1i (ng\u01B0\u1EDDi)",WEB_STATS_REMAINING_AI:"Man-day c\xF2n l\u1EA1i (AI)",WEB_STATS_DONE:"\u0110\xE3 xong",WEB_STATS_IN_PROGRESS:"\u0110ang l\xE0m",WEB_STATS_READY:"S\u1EB5n s\xE0ng",WEB_STATS_BUGS:"Bug",WEB_STATS_CONFLICTS:"Xung \u0111\u1ED9t",WEB_STATS_UC_PROGRESS:"Use case \u0111\xE3 l\xE0m",WEB_STATS_TC_PROGRESS:"Test case \u0111\xE3 l\xE0m",WEB_STATS_PERCENT:"{value}%",WEB_STATS_HOURS_RATIO:"{done} / {total}",WEB_STATS_MAN_DAYS:"{value} MD",WEB_STATS_HOURS:"{value}h",WEB_ACTION_RELOAD:"T\u1EA3i l\u1EA1i",WEB_ACTION_AUTO_RELOAD:"T\u1EF1 t\u1EA3i l\u1EA1i",WEB_ACTION_LANG:"Ng\xF4n ng\u1EEF",WEB_ACTION_COPY_PROMPT:"Copy prompt",WEB_ACTION_COPY_LINK:"Sao ch\xE9p link",WEB_ACTION_COPIED:"\u0110\xE3 copy",WEB_STALE_WARNING:"\u0110\xE3 h\u01A1n 2 ph\xFAt ch\u01B0a c\u1EADp nh\u1EADt d\u1EEF li\u1EC7u \u2014 vui l\xF2ng t\u1EA3i l\u1EA1i.",WEB_FRESHNESS_CHECKING:"\u0110ang ki\u1EC3m tra d\u1EEF li\u1EC7u\u2026",WEB_FRESHNESS_ERROR:"Kh\xF4ng th\u1EC3 ki\u1EC3m tra d\u1EEF li\u1EC7u",WEB_FRESHNESS_NOT_CHECKED:"Ch\u01B0a ki\u1EC3m tra d\u1EEF li\u1EC7u",WEB_FRESHNESS_STALE:"D\u1EEF li\u1EC7u ch\u01B0a \u0111\u01B0\u1EE3c ki\u1EC3m tra qu\xE1 2 ph\xFAt",WEB_FRESHNESS_UNKNOWN:"Kh\xF4ng r\xF5",WEB_ERROR_LOAD:"Kh\xF4ng th\u1EC3 t\u1EA3i d\u1EEF li\u1EC7u: {message}",WEB_EMPTY_PLAN_MISSING:"Kh\xF4ng t\xECm th\u1EA5y plan.",WEB_EMPTY_PLAN_NO_DESCRIPTION:"Ch\u01B0a c\xF3 m\xF4 t\u1EA3",WEB_EMPTY_PLAN_NO_DOCUMENT:"Plan ch\u01B0a c\xF3 t\xE0i li\u1EC7u.",WEB_EMPTY_TASK_DOCUMENTS:"Plan ch\u01B0a c\xF3 t\xE0i li\u1EC7u solution/note. Th\xEAm b\u1EB1ng pan plan document add --type solution --file \u2026",WEB_HINT_TASK_DOCUMENTS:"Solution v\xE0 t\xF3m t\u1EAFt craft n\u1EB1m tr\xEAn plan (kh\xF4ng g\u1EAFn tr\u1EF1c ti\u1EBFp task). H\u1EC7 th\u1ED1ng \u01B0u ti\xEAn kh\u1EDBp theo t\xEAn phase.",WEB_EMPTY_DEPENDS:"Kh\xF4ng c\xF3 ph\u1EE5 thu\u1ED9c",WEB_EMPTY_ACTIVITY:"Ch\u01B0a c\xF3 ho\u1EA1t \u0111\u1ED9ng.",WEB_EVENT_DOCUMENT_ADDED:"Th\xEAm t\xE0i li\u1EC7u",WEB_EVENT_DOCUMENT_SUPERSEDED:"Thay t\xE0i li\u1EC7u",WEB_EVENT_LINK_ADDED:"Th\xEAm li\xEAn k\u1EBFt",WEB_EVENT_LINK_REMOVED:"G\u1EE1 li\xEAn k\u1EBFt",WEB_EVENT_TASK_CLAIMED:"Nh\u1EADn task",WEB_EVENT_TASK_RELEASED:"Nh\u1EA3 task",WEB_EVENT_TASK_ASSIGNED:"G\xE1n task",WEB_EVENT_TASK_BLOCKED:"Ch\u1EB7n",WEB_EVENT_TASK_UNBLOCKED:"G\u1EE1 ch\u1EB7n",WEB_EVENT_TASK_DONE:"Xong",WEB_EVENT_TASK_CANCELLED:"\u0110\xE3 h\u1EE7y",WEB_EVENT_TASK_REOPENED:"M\u1EDF l\u1EA1i",WEB_EVENT_TASK_STATUS_CHANGED:"\u0110\u1ED5i tr\u1EA1ng th\xE1i",WEB_EVENT_PLAN_STATUS_CHANGED:"\u0110\u1ED5i tr\u1EA1ng th\xE1i plan",WEB_EVENT_WORKLOG_ADDED:"Worklog",WEB_EVENT_WORKLOG_DURATION:"{minutes} ph\xFAt",WEB_LABEL_PROGRESS:"Ti\u1EBFn \u0111\u1ED9",WEB_LABEL_STATUS:"Tr\u1EA1ng th\xE1i",WEB_LABEL_TYPE:"Lo\u1EA1i",WEB_LABEL_ASSIGNEE:"Ph\u1EE5 tr\xE1ch",WEB_LABEL_ESTIMATE:"\u01AF\u1EDBc l\u01B0\u1EE3ng",WEB_LABEL_ACTUAL:"Th\u1EF1c t\u1EBF",WEB_LABEL_CREATED:"T\u1EA1o",WEB_LABEL_CREATED_AT:"T\u1EA1o l\xFAc",WEB_LABEL_UPDATED:"C\u1EADp nh\u1EADt",WEB_LABEL_REVISION:"Revision",WEB_LABEL_DOCUMENT:"T\xE0i li\u1EC7u",WEB_LABEL_DOCUMENTS:"T\xE0i li\u1EC7u",WEB_LABEL_RELATED_DOCUMENTS:"T\xE0i li\u1EC7u plan",WEB_LABEL_DOCUMENT_META:"Tr\u01B0\u1EDDng t\xE0i li\u1EC7u",WEB_META_SHOW_MORE:"Xem th\xEAm ({count})",WEB_META_SHOW_LESS:"Thu g\u1ECDn",WEB_META_FIELD_SLUG:"Slug",WEB_META_FIELD_TITLE:"Ti\xEAu \u0111\u1EC1",WEB_META_FIELD_DESCRIPTION:"M\xF4 t\u1EA3",WEB_META_FIELD_STATUS:"Tr\u1EA1ng th\xE1i",WEB_META_FIELD_PRIORITY:"\u0110\u1ED9 \u01B0u ti\xEAn",WEB_META_FIELD_EFFORT:"Effort (ng\u01B0\u1EDDi)",WEB_META_FIELD_EFFORT_AI:"Effort (AI)",WEB_LABEL_EFFORT_TASKS_HUMAN:"T\u1EEB task (ng\u01B0\u1EDDi)",WEB_LABEL_EFFORT_TASKS_AI:"T\u1EEB task (AI)",WEB_LABEL_REMAINING_HUMAN:"Man-day c\xF2n l\u1EA1i (ng\u01B0\u1EDDi)",WEB_LABEL_REMAINING_AI:"Man-day c\xF2n l\u1EA1i (AI)",WEB_META_FIELD_TAGS:"Tags",WEB_META_FIELD_BLOCKED_BY:"B\u1ECB ch\u1EB7n b\u1EDFi",WEB_META_FIELD_BLOCKS:"Ch\u1EB7n",WEB_META_FIELD_CREATED:"Ng\xE0y t\u1EA1o",WEB_META_FIELD_PHASE:"Phase",WEB_META_FIELD_TYPE:"Lo\u1EA1i",WEB_META_FIELD_STATE:"Tr\u1EA1ng th\xE1i",WEB_META_FIELD_OWNER:"Owner",WEB_META_FIELD_ASSIGNEE:"Ph\u1EE5 tr\xE1ch",WEB_DOC_TYPE_PLAN:"Plan",WEB_DOC_TYPE_SOLUTION:"Solution",WEB_DOC_TYPE_DECISION:"Decision",WEB_DOC_TYPE_NOTE:"Note",WEB_LABEL_EVENTS:"S\u1EF1 ki\u1EC7n",WEB_LABEL_DEPENDS:"Ph\u1EE5 thu\u1ED9c",WEB_LABEL_READY:"S\u1EB5n s\xE0ng",WEB_LABEL_TECHNICAL_INFO:"Th\xF4ng tin k\u1EF9 thu\u1EADt",WEB_LABEL_TOTAL_TASKS:"T\u1ED5ng task",WEB_LABEL_CSV_SOURCE:"CSV source",WEB_LABEL_CSV_VALID:"H\u1EE3p l\u1EC7",WEB_LABEL_CONFLICTS:"Xung \u0111\u1ED9t",WEB_LABEL_HASH:"Hash",WEB_LABEL_HASH_EMPTY:"Ch\u01B0a c\xF3",WEB_LABEL_LAST_LOAD:"L\u1EA7n t\u1EA3i",WEB_LABEL_NEVER_LOADED:"Ch\u01B0a t\u1EA3i",WEB_EMPTY_TASK_MISSING:"Kh\xF4ng t\xECm th\u1EA5y task.",WEB_LABEL_PLAN:"Plan",WEB_LABEL_PROJECT:"Project",WEB_LABEL_DESCRIPTION:"M\xF4 t\u1EA3",WEB_LABEL_ACCEPTANCE:"Acceptance",WEB_LABEL_VERIFICATION:"Verification",WEB_LABEL_TAGS:"Tags",WEB_LABEL_BLOCKER:"Blocker",WEB_LABEL_CLAIMANT:"Ng\u01B0\u1EDDi claim",WEB_LABEL_DIFFICULTY:"\u0110\u1ED9 kh\xF3",WEB_LABEL_BLOCKED:"\u0110ang ch\u1EB7n",WEB_ACTION_CLOSE:"\u0110\xF3ng",WEB_ACTION_OPEN_PLAN:"M\u1EDF plan",WEB_ACTION_VIEW_TASK:"Xem chi ti\u1EBFt",WEB_ACTION_VIEW_TASKS:"Xem task",WEB_ACTION_VIEW_DOCUMENT:"Xem t\xE0i li\u1EC7u",WEB_TASK_DETAIL_HINT:"B\u1EA5m m\u1ED9t d\xF2ng \u0111\u1EC3 xem chi ti\u1EBFt task."};ly.exports={en:z4,vi:J4}});var Et=g((lW,py)=>{"use strict";var fy=require("node:fs"),tf=require("node:path"),Js=dy(),Tr="en",Xs=null;function nf(t=process.cwd()){if(process.env.PAN_LANG)return String(process.env.PAN_LANG).toLowerCase();let e;try{e=tf.resolve(t)}catch{return Tr}for(let n=0;n<50;n+=1){let r=tf.join(e,".project.yaml");try{if(fy.existsSync(r)){let o=fy.readFileSync(r,"utf8").match(/^\s*language\s*:\s*['"]?([A-Za-z-]+)/m);return o?o[1].toLowerCase():Tr}}catch{}let s=tf.dirname(e);if(s===e)break;e=s}return Tr}function X4({cwd:t}={}){return Xs=nf(t),Xs}function rf(){return Xs===null&&(Xs=nf()),Xs}function Q4(t){Xs=String(t||Tr).toLowerCase()}function Z4(t,e){return e?String(t).replace(/\{(\w+)\}/g,(n,r)=>r in e?String(e[r]):n):t}function eD(t,e,n){let r=(n||rf()).toLowerCase(),i=(Js[r]||Js[Tr])[t]??Js[Tr][t]??t;return Z4(i,e)}function tD(t){let e=(t||rf()).toLowerCase();return{...Js[Tr],...Js[e]||{}}}function nD(){return Object.keys(Js)}py.exports={DEFAULT_LANG:Tr,availableLangs:nD,catalog:tD,currentLang:rf,detectLang:nf,initI18n:X4,setLang:Q4,t:eD}});var bc=g((dW,my)=>{"use strict";var{inputError:hy}=gt(),{t:_y}=Et();function Qs(t){return!t||!t.system||!t.id}function rD(t,e){if(t===void 0||t===!0||t==="")return null;let n=String(t).trim();if(!n)return null;let r=n.match(/^([a-z][a-z0-9_-]*):(.+)$/i);if(!r)throw hy(_y("ERR_INVALID_EXTERNAL_REF",{ref:n}));let s=r[1].toLowerCase(),i=r[2].trim();if(!i)throw hy(_y("ERR_INVALID_EXTERNAL_REF",{ref:n}));let o={system:s,id:i};return e!==void 0&&e!==!0&&e!==""&&(o.url=String(e).trim()),o}function sD(t){return Qs(t)?"":`${t.system}:${t.id}`}function iD(t){return Qs(t)?"":`${t.system}:${t.id}`}function oD(t,e){return Qs(e)?t&&!Qs(t)?t:{}:{system:e.system,id:e.id,url:e.url||t&&t.url||""}}function aD(t,e){let n=(t||[]).filter(r=>!String(r).startsWith("ref:"));return Qs(e)||n.push(`ref:${e.system}:${e.id}`),n}my.exports={externalRefDedupeKey:sD,formatExternalRefLabel:iD,isExternalRefEmpty:Qs,mergeExternalRef:oD,parseExternalRef:rD,syncRefTag:aD}});var Ay=g((fW,Ty)=>{"use strict";var xy=require("node:fs"),so=require("node:path"),yy=".project.yaml",by=".project.local.yaml";function cD(t){let e=String(t??"").trim(),n=e.indexOf(" #");return n>=0&&(e=e.slice(0,n).trimEnd()),(e.startsWith('"')&&e.endsWith('"')||e.startsWith("'")&&e.endsWith("'"))&&e.length>=2&&(e=e.slice(1,-1)),e.trim()}function gy(t){let e=t.indexOf(":");return e<0?[t.trim(),""]:[t.slice(0,e).trim(),cD(t.slice(e+1))]}function Sy(t){let e=[],n=!1,r=null,s=()=>{r&&r.path&&e.push(r),r=null};for(let i of String(t??"").split(/\r?\n/)){let o=i.replace(/\s+$/,"");if(!o.trim()||o.trim().startsWith("#"))continue;if(/^[^\s#]/.test(o)){s(),n=/^repositories:\s*$/.test(o);continue}if(!n)continue;let a=o.match(/^\s{2}-\s+(.*)$/);if(a){s(),r={name:"",path:""};let c=a[1].trim();if(c){let[u,d]=gy(c);(u==="name"||u==="path")&&(r[u]=d)}continue}if(r&&/^\s{4}\S/.test(o)){let[c,u]=gy(o);(c==="name"||c==="path")&&(r[c]=u)}}return s(),e}function Ey(t){return xy.existsSync(t)?Sy(xy.readFileSync(t,"utf8")):[]}function uD(t){let e=so.resolve(t),n=[...Ey(so.join(e,yy)),...Ey(so.join(e,by))],r=new Set,s=[];for(let i of n){let o=so.normalize(i.path);r.has(o)||(r.add(o),s.push({name:i.name||so.basename(o),path:o}))}return s}Ty.exports={LOCAL_MANIFEST_FILE:by,MANIFEST_FILE:yy,parseRepositoryEntries:Sy,readManifestRepos:uD}});var Tn=g((pW,Oy)=>{"use strict";var{randomInt:lD}=require("node:crypto"),X=require("node:path"),{inputError:Xe}=gt(),{t:Qe}=Et(),sf="0123456789ABCDEFGHJKMNPQRSTVWXYZ",wy=X.join("docs","plans"),Sc=X.join("docs","projects");function Zs(t){let e=String(t??"").normalize("NFD").replace(/[\u0300-\u036f]/g,"").toLowerCase().replace(/[^a-z0-9]+/g,"-").replace(/^-+|-+$/g,"");if(!e)throw Xe(Qe("ERR_LAYOUT_EMPTY_SLUG"));return e}function dD(t=5){let e="";for(let n=0;n<t;n+=1)e+=sf[lD(sf.length)];return e}function vy(t){if(!Number.isInteger(t)||t<1||t>99)throw Xe(Qe("ERR_PLAN_SEQ_RANGE"),{sequence:t});return String(t).padStart(2,"0")}function Ly(t){if(!Number.isInteger(t)||t<1)throw Xe(Qe("ERR_TASK_SEQ_POSITIVE"),{sequence:t});return`T${String(t).padStart(2,"0")}`}function Tc(t,e="token"){if(!/^[0-9A-HJKMNP-TV-Z]{5}$/.test(t))throw Xe(Qe("ERR_TOKEN_INVALID",{field:e}),{[e]:t})}function Cy(t,e){if(!/^[A-Z0-9]+$/.test(t))throw Xe(Qe("ERR_SEGMENT_INVALID",{field:e}),{[e]:t})}var ky=/^[A-Z0-9]+(?:-[A-Z0-9]+)*$/;function Ac(t,e="projectKey"){if(!ky.test(t))throw Xe(Qe("ERR_PROJECT_KEY_INVALID",{field:e}),{[e]:t})}function fD({token:t,gitUserSlug:e,sequence:n}){return Tc(t,"planToken"),`${t}-${Zs(e)}-${vy(n)}`}function pD({projectKey:t,actorCode:e,laneToken:n,sequence:r}){return Ac(t),Cy(e,"actorCode"),Tc(n,"laneToken"),`${t}-${e}-${n}-${Ly(r)}`}function Ry(t){let e=t instanceof Date?t:new Date(t);if(Number.isNaN(e.getTime()))throw Xe(Qe("ERR_TIMESTAMP_INVALID"),{value:t});let n=e.toISOString();return n.slice(0,4)+n.slice(5,7)+n.slice(8,10)+"-"+n.slice(11,13)+n.slice(14,16)+n.slice(17,19)}function Ny(t){if(!/^[0-9A-HJKMNP-TV-Z]{5}-[a-z0-9]+(?:-[a-z0-9]+)*-\d{2}$/.test(t))throw Xe(Qe("ERR_PLAN_KEY_INVALID"),{planKey:t})}function wc(t){if(!Number.isInteger(t)||t<1||t>99)throw Xe(Qe("ERR_ENTITY_SEQ_RANGE"),{sequence:t});return String(t).padStart(2,"0")}function Iy(t){return Zs(t).split("-").filter(Boolean).map(e=>e.toUpperCase()).join("-")}function hD(t,e){Ac(t);let n=Iy(e);if(!n)throw Xe(Qe("ERR_LAYOUT_EMPTY_SLUG"));return`${t}-${n}`}function _D(t,e){if(!/^[A-Z0-9]+(?:-[A-Z0-9]+)*$/.test(t))throw Xe(Qe("ERR_MODULE_KEY_INVALID"),{moduleKey:t});return`${t}-UC${wc(e)}`}function mD(t,e){if(!/^[A-Z0-9]+(?:-[A-Z0-9]+)*$/.test(t))throw Xe(Qe("ERR_MODULE_KEY_INVALID"),{moduleKey:t});return`${t}-TC${wc(e)}`}function of(t){let e=String(t||"").trim().toUpperCase().replace(/[^A-Z0-9_-]+/g,"");if(!e)throw Xe(Qe("ERR_PROJECT_KEY_REQUIRED"));return e}function xD(t){let e=String(t??"").trim().toUpperCase();if(!e)throw Xe(Qe("ERR_PROJECT_KEY_REQUIRED"));return Ac(e),e}function gD(t){return`OD-${wc(t)}`}function ED(t){let e=String(t||"").match(/^OD-(\d{2})$/i);return e?Number(e[1]):null}var yD=/^OD-\d{2}$/i,bD=/^OD-[0-9A-HJKMNP-TV-Z]{5}-[a-z0-9]+(?:-[a-z0-9]+)*-D\d{2}$/i;function SD(t){return yD.test(String(t||"").trim())}function TD(t){return bD.test(String(t||"").trim())}function AD(t){if(!Number.isInteger(t)||t<1)throw Xe(Qe("ERR_DECISION_LANE_SEQ_POSITIVE"),{sequence:t});return`D${String(t).padStart(2,"0")}`}function wD({laneToken:t,gitUserSlug:e,sequence:n}){Tc(t,"laneToken");let r=Zs(e);if(!r)throw Xe(Qe("ERR_LAYOUT_EMPTY_SLUG"));return`OD-${t}-${r}-${AD(n)}`}function vD(t){let e=String(t||"").match(/^OD-[0-9A-HJKMNP-TV-Z]{5}-[a-z0-9]+(?:-[a-z0-9]+)*-D(\d{2})$/i);return e?Number(e[1]):null}function LD(t,e){return X.join(t,`${e}.registry.decisions.csv`)}function CD(t,e,n,r){return X.join(t,`${e}--${n}-${Zs(r)}.decisions.csv`)}function kD(t,e){let n=of(e),r=X.join(X.resolve(t),Sc,n),s=X.join(r,"decisions");return{projectsRoot:X.join(X.resolve(t),Sc),projectDir:r,projectCsv:X.join(r,`${n}.project.csv`),modulesDir:X.join(r,"modules"),modulesCsv:X.join(r,"modules",`${n}.modules.csv`),usecasesDir:X.join(r,"use-cases"),usecasesCsv:X.join(r,"use-cases",`${n}.usecases.csv`),usecaseDocumentsDir:X.join(r,"use-cases","documents"),testcasesDir:X.join(r,"test-cases"),testcasesCsv:X.join(r,"test-cases",`${n}.testcases.csv`),testcaseDocumentsDir:X.join(r,"test-cases","documents"),plansDir:X.join(r,"plans"),eventsDir:X.join(r,"events"),eventsCsv:X.join(r,"events",`${n}.events.csv`),decisionsDir:s,decisionsCsv:X.join(s,`${n}.decisions.csv`),decisionsRegistryCsv:X.join(s,`${n}.registry.decisions.csv`),decisionEventsDir:X.join(s,"events"),decisionDocumentsDir:X.join(s,"documents")}}function RD({root:t,createdAt:e,planKey:n,planSlug:r,projectKey:s}){if(!t)throw Xe(Qe("ERR_MISSING_ROOT"));Ny(n);let i=Ry(e),o=Zs(r),a=i.slice(0,4),c=`${i}-${n}-${o}`;if(s){let f=of(s),p=X.join(X.resolve(t),Sc,f,"plans"),_=X.join(p,a),h=X.join(_,c);return{layout:"project",projectKey:f,plansRoot:p,yearDir:_,folderName:c,planDir:h,planCsv:X.join(h,`${n}.plan.csv`),documentsDir:X.join(h,"documents"),tasksDir:X.join(h,"tasks"),eventsDir:X.join(h,"events")}}let u=X.join(X.resolve(t),wy),d=X.join(u,a),l=X.join(d,c);return{layout:"legacy",projectKey:"",plansRoot:u,yearDir:d,folderName:c,planDir:l,planCsv:X.join(l,`${n}.plan.csv`),documentsDir:X.join(l,"documents"),tasksDir:X.join(l,"tasks"),eventsDir:X.join(l,"events")}}Oy.exports={CROCKFORD:sf,PLANS_DIR:wy,PROJECTS_DIR:Sc,PROJECT_KEY_PATTERN:ky,assertKeySegment:Cy,assertProjectKey:Ac,assertToken:Tc,createPlanPaths:RD,createProjectPaths:kD,formatEntitySequence:wc,formatPlanSequence:vy,formatTaskSequence:Ly,makeDecisionKey:gD,makeLaneDecisionKey:wD,makeModuleKey:hD,makePlanKey:fD,makeTaskKey:pD,makeTestcaseKey:mD,makeUsecaseKey:_D,moduleSlugSegment:Iy,normalizeProjectKey:of,parseProjectKey:xD,parseDecisionKey:ED,parseLaneDecisionKey:vD,isRegistryDecisionKey:SD,isLaneDecisionKey:TD,decisionRegistryCsvPath:LD,decisionLaneShardPath:CD,randomToken:dD,slugify:Zs,utcTimestamp:Ry,validatePlanKey:Ny}});var Ar=g((hW,Uy)=>{"use strict";var io=require("node:fs"),oo=require("node:path"),{readManifestRepos:ND}=Ay(),{PROJECTS_DIR:ID}=Tn(),Py="workspace";function My(t){let e=oo.join(t,ID);return io.existsSync(e)&&io.statSync(e).isDirectory()}function Dy(t,e,n){let r=io.existsSync(n)&&io.statSync(n).isDirectory(),s=r?io.realpathSync(n):n;return{name:t,kind:e,storeRoot:s,dirExists:r,hasStore:r&&My(s)}}function By(t){let e=oo.resolve(t),n=[Dy(Py,"workspace",e)];for(let r of ND(e))n.push(Dy(r.name,"repo",oo.resolve(e,r.path)));return n}function OD(t){return By(t).filter(e=>e.hasStore)}function DD(t,e){let n=oo.relative(t,e);return n===""?!0:!n.startsWith("..")&&!oo.isAbsolute(n)}Uy.exports={WORKSPACE_STORE_NAME:Py,hasProjectsStore:My,isInside:DD,listStoreCandidates:By,listStores:OD}});var Lc=g((_W,$y)=>{"use strict";var{execFileSync:PD}=require("node:child_process"),An=require("node:fs"),Ot=require("node:path"),{PanPlanError:vc}=gt(),{t:wn}=Et();function ei(t,e){let n=Ot.resolve(t);if(!An.existsSync(n)||!An.statSync(n).isDirectory())throw new vc("PAN_PLAN_ROOT_NOT_FOUND",wn("ERR_START_DIR_MISSING",{label:e}),{path:n},7);return An.realpathSync(n)}function jy(t){let e=Ot.resolve(t);for(;;){let n=Ot.join(e,".project.yaml");if(An.existsSync(n)&&An.statSync(n).isFile())return n;let r=Ot.dirname(e);if(r===e)return null;e=r}}function ao(t){try{let e=PD("git",["-C",Ot.resolve(t),"rev-parse","--show-toplevel"],{encoding:"utf8",stdio:["ignore","pipe","ignore"]}).trim();return e?An.realpathSync(Ot.resolve(e)):null}catch{return null}}function MD({startDir:t=process.cwd(),explicitRoot:e=""}={}){let n=ei(t,wn("LABEL_START_DIR"));if(e){let i=ei(e,wn("LABEL_WORKSPACE_ROOT"));return{root:i,manifestPath:An.existsSync(Ot.join(i,".project.yaml"))?Ot.join(i,".project.yaml"):null,gitRoot:ao(i)}}let r=jy(n);if(r){let i=Ot.dirname(r);return{root:i,manifestPath:r,gitRoot:ao(i)}}let s=ao(n);if(s)return{root:s,manifestPath:null,gitRoot:s};throw new vc("PAN_PLAN_ROOT_NOT_FOUND",wn("ERR_ROOT_NOT_FOUND",{startDir:n}),{startDir:n},7)}function BD({cwd:t=process.cwd(),workspaceRoot:e,explicit:n=""}={}){let{listStoreCandidates:r,isInside:s}=Ar(),i=ei(e,wn("LABEL_WORKSPACE_ROOT")),o=r(i);if(n){let u=o.find(l=>l.name===n);if(u)return u;let d=Ot.resolve(n);if(An.existsSync(d)&&An.statSync(d).isDirectory()){let l=o.find(f=>f.storeRoot===An.realpathSync(d));if(l)return l}throw new vc("PAN_STORE_NOT_FOUND",wn("ERR_STORE_NOT_FOUND",{store:n,stores:o.map(l=>l.name).join(", ")}),{store:n,stores:o.map(l=>l.name)},3)}let a=ei(t,wn("LABEL_START_DIR")),c=null;for(let u of o)u.dirExists&&s(u.storeRoot,a)&&(!c||u.storeRoot.length>c.storeRoot.length)&&(c=u);return c||o[0]}function UD({cwd:t=process.cwd(),workspaceRoot:e}={}){let{isInside:n,listStoreCandidates:r}=Ar(),s=ei(e,wn("LABEL_WORKSPACE_ROOT")),i=ei(t,wn("LABEL_START_DIR")),o=ao(i);if(!o||o===s||!n(s,o)||r(s).some(c=>c.storeRoot===o))return;let a=Ot.relative(s,o);throw new vc("PAN_REPO_NOT_DECLARED",wn("ERR_REPO_NOT_DECLARED",{path:a,name:Ot.basename(o)}),{repoPath:a,repoName:Ot.basename(o),workspaceRoot:s},7)}$y.exports={assertCwdRepoDeclared:UD,findGitRoot:ao,findManifest:jy,resolveStoreRoot:BD,resolveWorkspaceRoot:MD}});var lf=g((mW,Gy)=>{"use strict";var{execFileSync:jD}=require("node:child_process"),{randomUUID:Fy}=require("node:crypto"),{inputError:af}=gt(),{t:cf}=Et(),{randomToken:$D,slugify:qy}=Tn();function uf(t,e){try{return jD("git",["-C",t,"config",e],{encoding:"utf8",stdio:["ignore","pipe","ignore"]}).trim()}catch{return""}}function Ky(t){return qy(t).split("-").filter(Boolean).map(e=>e[0]).join("").toUpperCase()||"USER"}function FD({root:t,actorKind:e="human",actorCode:n=""}={}){if(!t)throw af(cf("ERR_MISSING_ROOT"));let r=uf(t,"user.name"),s=uf(t,"user.email");if(!r||!s)throw af(cf("ERR_MISSING_GIT_CONFIG"),{gitName:r,gitEmail:s});let i=e==="ai"?"ai":"human",o=(n||(i==="ai"?"AI":Ky(r))).toUpperCase();if(!/^[A-Z0-9]+$/.test(o))throw af(cf("ERR_ACTOR_CODE_INVALID"),{actorCode:o});return{actorId:Fy(),actorKind:i,actorCode:o,laneId:Fy(),laneToken:$D(),gitName:r,gitEmail:s,gitUserSlug:qy(r)}}Gy.exports={acronym:Ky,createLaneIdentity:FD,gitConfig:uf}});var co=g((xW,Yy)=>{"use strict";var{execFile:Wy}=require("node:child_process"),qD=require("node:fs/promises"),df=process.platform==="win32",Hy=new Set(["EBUSY","EPERM","EACCES","ENOTEMPTY"]),Vy=new Set(["EINVAL","ENOTSUP","EPERM","EACCES","EISDIR","EBADF"]);function KD(t){return new Promise(e=>setTimeout(e,t))}async function GD(t,e,n={}){let r=Math.max(1,n.attempts??(df?8:3)),s=Math.max(1,n.baseDelayMs??25),i;for(let o=1;o<=r;o+=1)try{await qD.rename(t,e);return}catch(a){if(i=a,!Hy.has(a.code)||o===r)throw a;await KD(s*o)}throw i}function WD(t){let e=String(t);if(df){Wy(process.env.ComSpec||"cmd.exe",["/s","/c","start",'""',e],{windowsVerbatimArguments:!0},()=>{});return}let n=process.platform==="darwin"?"open":"xdg-open";Wy(n,[e],()=>{})}function HD(t){return!t||Vy.has(t.code)}Yy.exports={IS_WINDOWS:df,RETRYABLE_RENAME_CODES:Hy,DIRECTORY_SYNC_SKIP_CODES:Vy,isDirectorySyncSkippable:HD,openBrowser:WD,renameWithRetry:GD}});var hb=g((gW,pb)=>{"use strict";var _f=Object.defineProperty,VD=Object.getOwnPropertyDescriptor,YD=Object.getOwnPropertyNames,zD=Object.prototype.hasOwnProperty,JD=(t,e)=>{for(var n in e)_f(t,n,{get:e[n],enumerable:!0})},XD=(t,e,n,r)=>{if(e&&typeof e=="object"||typeof e=="function")for(let s of YD(e))!zD.call(t,s)&&s!==n&&_f(t,s,{get:()=>e[s],enumerable:!(r=VD(e,s))||r.enumerable});return t},QD=t=>XD(_f({},"__esModule",{value:!0}),t),eb={};JD(eb,{Hooks:()=>po,Lexer:()=>Ln,Marked:()=>fb,Parser:()=>Cn,Renderer:()=>_o,TextRenderer:()=>Oc,Tokenizer:()=>ho,defaults:()=>wr,getDefaults:()=>Rc,lexer:()=>F3,marked:()=>ue,options:()=>D3,parse:()=>j3,parseInline:()=>U3,parser:()=>$3,setOptions:()=>P3,use:()=>M3,walkTokens:()=>B3});pb.exports=QD(eb);function Rc(){return{async:!1,breaks:!1,extensions:null,gfm:!0,hooks:null,pedantic:!1,renderer:null,silent:!1,tokenizer:null,walkTokens:null}}var wr=Rc();function tb(t){wr=t}var fo={exec:()=>null};function le(t,e=""){let n=typeof t=="string"?t:t.source,r={replace:(s,i)=>{let o=typeof i=="string"?i:i.source;return o=o.replace(lt.caret,"$1"),n=n.replace(s,o),r},getRegex:()=>new RegExp(n,e)};return r}var lt={codeRemoveIndent:/^(?: {1,4}| {0,3}\t)/gm,outputLinkReplace:/\\([\[\]])/g,indentCodeCompensation:/^(\s+)(?:```)/,beginningSpace:/^\s+/,endingHash:/#$/,startingSpaceChar:/^ /,endingSpaceChar:/ $/,nonSpaceChar:/[^ ]/,newLineCharGlobal:/\n/g,tabCharGlobal:/\t/g,multipleSpaceGlobal:/\s+/g,blankLine:/^[ \t]*$/,doubleBlankLine:/\n[ \t]*\n[ \t]*$/,blockquoteStart:/^ {0,3}>/,blockquoteSetextReplace:/\n {0,3}((?:=+|-+) *)(?=\n|$)/g,blockquoteSetextReplace2:/^ {0,3}>[ \t]?/gm,listReplaceTabs:/^\t+/,listReplaceNesting:/^ {1,4}(?=( {4})*[^ ])/g,listIsTask:/^\[[ xX]\] /,listReplaceTask:/^\[[ xX]\] +/,anyLine:/\n.*\n/,hrefBrackets:/^<(.*)>$/,tableDelimiter:/[:|]/,tableAlignChars:/^\||\| *$/g,tableRowBlankLine:/\n[ \t]*$/,tableAlignRight:/^ *-+: *$/,tableAlignCenter:/^ *:-+: *$/,tableAlignLeft:/^ *:-+ *$/,startATag:/^<a /i,endATag:/^<\/a>/i,startPreScriptTag:/^<(pre|code|kbd|script)(\s|>)/i,endPreScriptTag:/^<\/(pre|code|kbd|script)(\s|>)/i,startAngleBracket:/^</,endAngleBracket:/>$/,pedanticHrefTitle:/^([^'"]*[^\s])\s+(['"])(.*)\2/,unicodeAlphaNumeric:/[\p{L}\p{N}]/u,escapeTest:/[&<>"']/,escapeReplace:/[&<>"']/g,escapeTestNoEncode:/[<>"']|&(?!(#\d{1,7}|#[Xx][a-fA-F0-9]{1,6}|\w+);)/,escapeReplaceNoEncode:/[<>"']|&(?!(#\d{1,7}|#[Xx][a-fA-F0-9]{1,6}|\w+);)/g,unescapeTest:/&(#(?:\d+)|(?:#x[0-9A-Fa-f]+)|(?:\w+));?/ig,caret:/(^|[^\[])\^/g,percentDecode:/%25/g,findPipe:/\|/g,splitPipe:/ \|/,slashPipe:/\\\|/g,carriageReturn:/\r\n|\r/g,spaceLine:/^ +$/gm,notSpaceStart:/^\S*/,endingNewline:/\n$/,listItemRegex:t=>new RegExp(`^( {0,3}${t})((?:[ ][^\\n]*)?(?:\\n|$))`),nextBulletRegex:t=>new RegExp(`^ {0,${Math.min(3,t-1)}}(?:[*+-]|\\d{1,9}[.)])((?:[ ][^\\n]*)?(?:\\n|$))`),hrRegex:t=>new RegExp(`^ {0,${Math.min(3,t-1)}}((?:- *){3,}|(?:_ *){3,}|(?:\\* *){3,})(?:\\n+|$)`),fencesBeginRegex:t=>new RegExp(`^ {0,${Math.min(3,t-1)}}(?:\`\`\`|~~~)`),headingBeginRegex:t=>new RegExp(`^ {0,${Math.min(3,t-1)}}#`),htmlBeginRegex:t=>new RegExp(`^ {0,${Math.min(3,t-1)}}<(?:[a-z].*>|!--)`,"i")},ZD=/^(?:[ \t]*(?:\n|$))+/,e3=/^((?: {4}| {0,3}\t)[^\n]+(?:\n(?:[ \t]*(?:\n|$))*)?)+/,t3=/^ {0,3}(`{3,}(?=[^`\n]*(?:\n|$))|~{3,})([^\n]*)(?:\n|$)(?:|([\s\S]*?)(?:\n|$))(?: {0,3}\1[~`]* *(?=\n|$)|$)/,mo=/^ {0,3}((?:-[\t ]*){3,}|(?:_[ \t]*){3,}|(?:\*[ \t]*){3,})(?:\n+|$)/,n3=/^ {0,3}(#{1,6})(?=\s|$)(.*)(?:\n+|$)/,mf=/(?:[*+-]|\d{1,9}[.)])/,nb=/^(?!bull |blockCode|fences|blockquote|heading|html|table)((?:.|\n(?!\s*?\n|bull |blockCode|fences|blockquote|heading|html|table))+?)\n {0,3}(=+|-+) *(?:\n+|$)/,rb=le(nb).replace(/bull/g,mf).replace(/blockCode/g,/(?: {4}| {0,3}\t)/).replace(/fences/g,/ {0,3}(?:`{3,}|~{3,})/).replace(/blockquote/g,/ {0,3}>/).replace(/heading/g,/ {0,3}#{1,6}/).replace(/html/g,/ {0,3}<[^\n>]+>\n/).replace(/\|table/g,"").getRegex(),r3=le(nb).replace(/bull/g,mf).replace(/blockCode/g,/(?: {4}| {0,3}\t)/).replace(/fences/g,/ {0,3}(?:`{3,}|~{3,})/).replace(/blockquote/g,/ {0,3}>/).replace(/heading/g,/ {0,3}#{1,6}/).replace(/html/g,/ {0,3}<[^\n>]+>\n/).replace(/table/g,/ {0,3}\|?(?:[:\- ]*\|)+[\:\- ]*\n/).getRegex(),xf=/^([^\n]+(?:\n(?!hr|heading|lheading|blockquote|fences|list|html|table| +\n)[^\n]+)*)/,s3=/^[^\n]+/,gf=/(?!\s*\])(?:\\.|[^\[\]\\])+/,i3=le(/^ {0,3}\[(label)\]: *(?:\n[ \t]*)?([^<\s][^\s]*|<.*?>)(?:(?: +(?:\n[ \t]*)?| *\n[ \t]*)(title))? *(?:\n+|$)/).replace("label",gf).replace("title",/(?:"(?:\\"?|[^"\\])*"|'[^'\n]*(?:\n[^'\n]+)*\n?'|\([^()]*\))/).getRegex(),o3=le(/^( {0,3}bull)([ \t][^\n]+?)?(?:\n|$)/).replace(/bull/g,mf).getRegex(),Nc="address|article|aside|base|basefont|blockquote|body|caption|center|col|colgroup|dd|details|dialog|dir|div|dl|dt|fieldset|figcaption|figure|footer|form|frame|frameset|h[1-6]|head|header|hr|html|iframe|legend|li|link|main|menu|menuitem|meta|nav|noframes|ol|optgroup|option|p|param|search|section|summary|table|tbody|td|tfoot|th|thead|title|tr|track|ul",Ef=/<!--(?:-?>|[\s\S]*?(?:-->|$))/,a3=le("^ {0,3}(?:<(script|pre|style|textarea)[\\s>][\\s\\S]*?(?:</\\1>[^\\n]*\\n+|$)|comment[^\\n]*(\\n+|$)|<\\?[\\s\\S]*?(?:\\?>\\n*|$)|<![A-Z][\\s\\S]*?(?:>\\n*|$)|<!\\[CDATA\\[[\\s\\S]*?(?:\\]\\]>\\n*|$)|</?(tag)(?: +|\\n|/?>)[\\s\\S]*?(?:(?:\\n[ ]*)+\\n|$)|<(?!script|pre|style|textarea)([a-z][\\w-]*)(?:attribute)*? */?>(?=[ \\t]*(?:\\n|$))[\\s\\S]*?(?:(?:\\n[ ]*)+\\n|$)|</(?!script|pre|style|textarea)[a-z][\\w-]*\\s*>(?=[ \\t]*(?:\\n|$))[\\s\\S]*?(?:(?:\\n[ ]*)+\\n|$))","i").replace("comment",Ef).replace("tag",Nc).replace("attribute",/ +[a-zA-Z:_][\w.:-]*(?: *= *"[^"\n]*"| *= *'[^'\n]*'| *= *[^\s"'=<>`]+)?/).getRegex(),sb=le(xf).replace("hr",mo).replace("heading"," {0,3}#{1,6}(?:\\s|$)").replace("|lheading","").replace("|table","").replace("blockquote"," {0,3}>").replace("fences"," {0,3}(?:`{3,}(?=[^`\\n]*\\n)|~{3,})[^\\n]*\\n").replace("list"," {0,3}(?:[*+-]|1[.)]) ").replace("html","</?(?:tag)(?: +|\\n|/?>)|<(?:script|pre|style|textarea|!--)").replace("tag",Nc).getRegex(),c3=le(/^( {0,3}> ?(paragraph|[^\n]*)(?:\n|$))+/).replace("paragraph",sb).getRegex(),yf={blockquote:c3,code:e3,def:i3,fences:t3,heading:n3,hr:mo,html:a3,lheading:rb,list:o3,newline:ZD,paragraph:sb,table:fo,text:s3},zy=le("^ *([^\\n ].*)\\n {0,3}((?:\\| *)?:?-+:? *(?:\\| *:?-+:? *)*(?:\\| *)?)(?:\\n((?:(?! *\\n|hr|heading|blockquote|code|fences|list|html).*(?:\\n|$))*)\\n*|$)").replace("hr",mo).replace("heading"," {0,3}#{1,6}(?:\\s|$)").replace("blockquote"," {0,3}>").replace("code","(?: {4}| {0,3} )[^\\n]").replace("fences"," {0,3}(?:`{3,}(?=[^`\\n]*\\n)|~{3,})[^\\n]*\\n").replace("list"," {0,3}(?:[*+-]|1[.)]) ").replace("html","</?(?:tag)(?: +|\\n|/?>)|<(?:script|pre|style|textarea|!--)").replace("tag",Nc).getRegex(),u3={...yf,lheading:r3,table:zy,paragraph:le(xf).replace("hr",mo).replace("heading"," {0,3}#{1,6}(?:\\s|$)").replace("|lheading","").replace("table",zy).replace("blockquote"," {0,3}>").replace("fences"," {0,3}(?:`{3,}(?=[^`\\n]*\\n)|~{3,})[^\\n]*\\n").replace("list"," {0,3}(?:[*+-]|1[.)]) ").replace("html","</?(?:tag)(?: +|\\n|/?>)|<(?:script|pre|style|textarea|!--)").replace("tag",Nc).getRegex()},l3={...yf,html:le(`^ *(?:comment *(?:\\n|\\s*$)|<(tag)[\\s\\S]+?</\\1> *(?:\\n{2,}|\\s*$)|<tag(?:"[^"]*"|'[^']*'|\\s[^'"/>\\s]*)*?/?> *(?:\\n{2,}|\\s*$))`).replace("comment",Ef).replace(/tag/g,"(?!(?:a|em|strong|small|s|cite|q|dfn|abbr|data|time|code|var|samp|kbd|sub|sup|i|b|u|mark|ruby|rt|rp|bdi|bdo|span|br|wbr|ins|del|img)\\b)\\w+(?!:|[^\\w\\s@]*@)\\b").getRegex(),def:/^ *\[([^\]]+)\]: *<?([^\s>]+)>?(?: +(["(][^\n]+[")]))? *(?:\n+|$)/,heading:/^(#{1,6})(.*)(?:\n+|$)/,fences:fo,lheading:/^(.+?)\n {0,3}(=+|-+) *(?:\n+|$)/,paragraph:le(xf).replace("hr",mo).replace("heading",` *#{1,6} *[^
662
668
  ]`).replace("lheading",rb).replace("|table","").replace("blockquote"," {0,3}>").replace("|fences","").replace("|list","").replace("|html","").replace("|tag","").getRegex()},d3=/^\\([!"#$%&'()*+,\-./:;<=>?@\[\]\\^_`{|}~])/,f3=/^(`+)([^`]|[^`][\s\S]*?[^`])\1(?!`)/,ib=/^( {2,}|\\)\n(?!\s*$)/,p3=/^(`+|[^`])(?:(?= {2,}\n)|[\s\S]*?(?:(?=[\\<!\[`*_]|\b_|$)|[^ ](?= {2,}\n)))/,Ic=/[\p{P}\p{S}]/u,bf=/[\s\p{P}\p{S}]/u,ob=/[^\s\p{P}\p{S}]/u,h3=le(/^((?![*_])punctSpace)/,"u").replace(/punctSpace/g,bf).getRegex(),ab=/(?!~)[\p{P}\p{S}]/u,_3=/(?!~)[\s\p{P}\p{S}]/u,m3=/(?:[^\s\p{P}\p{S}]|~)/u,x3=/\[[^[\]]*?\]\((?:\\.|[^\\\(\)]|\((?:\\.|[^\\\(\)])*\))*\)|`[^`]*?`|<[^<>]*?>/g,cb=/^(?:\*+(?:((?!\*)punct)|[^\s*]))|^_+(?:((?!_)punct)|([^\s_]))/,g3=le(cb,"u").replace(/punct/g,Ic).getRegex(),E3=le(cb,"u").replace(/punct/g,ab).getRegex(),ub="^[^_*]*?__[^_*]*?\\*[^_*]*?(?=__)|[^*]+(?=[^*])|(?!\\*)punct(\\*+)(?=[\\s]|$)|notPunctSpace(\\*+)(?!\\*)(?=punctSpace|$)|(?!\\*)punctSpace(\\*+)(?=notPunctSpace)|[\\s](\\*+)(?!\\*)(?=punct)|(?!\\*)punct(\\*+)(?!\\*)(?=punct)|notPunctSpace(\\*+)(?=notPunctSpace)",y3=le(ub,"gu").replace(/notPunctSpace/g,ob).replace(/punctSpace/g,bf).replace(/punct/g,Ic).getRegex(),b3=le(ub,"gu").replace(/notPunctSpace/g,m3).replace(/punctSpace/g,_3).replace(/punct/g,ab).getRegex(),S3=le("^[^_*]*?\\*\\*[^_*]*?_[^_*]*?(?=\\*\\*)|[^_]+(?=[^_])|(?!_)punct(_+)(?=[\\s]|$)|notPunctSpace(_+)(?!_)(?=punctSpace|$)|(?!_)punctSpace(_+)(?=notPunctSpace)|[\\s](_+)(?!_)(?=punct)|(?!_)punct(_+)(?!_)(?=punct)","gu").replace(/notPunctSpace/g,ob).replace(/punctSpace/g,bf).replace(/punct/g,Ic).getRegex(),T3=le(/\\(punct)/,"gu").replace(/punct/g,Ic).getRegex(),A3=le(/^<(scheme:[^\s\x00-\x1f<>]*|email)>/).replace("scheme",/[a-zA-Z][a-zA-Z0-9+.-]{1,31}/).replace("email",/[a-zA-Z0-9.!#$%&'*+/=?^_`{|}~-]+(@)[a-zA-Z0-9](?:[a-zA-Z0-9-]{0,61}[a-zA-Z0-9])?(?:\.[a-zA-Z0-9](?:[a-zA-Z0-9-]{0,61}[a-zA-Z0-9])?)+(?![-_])/).getRegex(),w3=le(Ef).replace("(?:-->|$)","-->").getRegex(),v3=le("^comment|^</[a-zA-Z][\\w:-]*\\s*>|^<[a-zA-Z][\\w-]*(?:attribute)*?\\s*/?>|^<\\?[\\s\\S]*?\\?>|^<![a-zA-Z]+\\s[\\s\\S]*?>|^<!\\[CDATA\\[[\\s\\S]*?\\]\\]>").replace("comment",w3).replace("attribute",/\s+[a-zA-Z:_][\w.:-]*(?:\s*=\s*"[^"]*"|\s*=\s*'[^']*'|\s*=\s*[^\s"'=<>`]+)?/).getRegex(),kc=/(?:\[(?:\\.|[^\[\]\\])*\]|\\.|`[^`]*`|[^\[\]\\`])*?/,L3=le(/^!?\[(label)\]\(\s*(href)(?:(?:[ \t]*(?:\n[ \t]*)?)(title))?\s*\)/).replace("label",kc).replace("href",/<(?:\\.|[^\n<>\\])+>|[^ \t\n\x00-\x1f]*/).replace("title",/"(?:\\"?|[^"\\])*"|'(?:\\'?|[^'\\])*'|\((?:\\\)?|[^)\\])*\)/).getRegex(),lb=le(/^!?\[(label)\]\[(ref)\]/).replace("label",kc).replace("ref",gf).getRegex(),db=le(/^!?\[(ref)\](?:\[\])?/).replace("ref",gf).getRegex(),C3=le("reflink|nolink(?!\\()","g").replace("reflink",lb).replace("nolink",db).getRegex(),Sf={_backpedal:fo,anyPunctuation:T3,autolink:A3,blockSkip:x3,br:ib,code:f3,del:fo,emStrongLDelim:g3,emStrongRDelimAst:y3,emStrongRDelimUnd:S3,escape:d3,link:L3,nolink:db,punctuation:h3,reflink:lb,reflinkSearch:C3,tag:v3,text:p3,url:fo},k3={...Sf,link:le(/^!?\[(label)\]\((.*?)\)/).replace("label",kc).getRegex(),reflink:le(/^!?\[(label)\]\s*\[([^\]]*)\]/).replace("label",kc).getRegex()},ff={...Sf,emStrongRDelimAst:b3,emStrongLDelim:E3,url:le(/^((?:ftp|https?):\/\/|www\.)(?:[a-zA-Z0-9\-]+\.?)+[^\s<]*|^email/,"i").replace("email",/[A-Za-z0-9._+-]+(@)[a-zA-Z0-9-_]+(?:\.[a-zA-Z0-9-_]*[a-zA-Z0-9])+(?![-_])/).getRegex(),_backpedal:/(?:[^?!.,:;*_'"~()&]+|\([^)]*\)|&(?![a-zA-Z0-9]+;$)|[?!.,:;*_'"~)]+(?!$))+/,del:/^(~~?)(?=[^\s~])((?:\\.|[^\\])*?(?:\\.|[^\s~\\]))\1(?=[^~]|$)/,text:/^([`~]+|[^`~])(?:(?= {2,}\n)|(?=[a-zA-Z0-9.!#$%&'*+\/=?_`{\|}~-]+@)|[\s\S]*?(?:(?=[\\<!\[`*~_]|\b_|https?:\/\/|ftp:\/\/|www\.|$)|[^ ](?= {2,}\n)|[^a-zA-Z0-9.!#$%&'*+\/=?_`{\|}~-](?=[a-zA-Z0-9.!#$%&'*+\/=?_`{\|}~-]+@)))/},R3={...ff,br:le(ib).replace("{2,}","*").getRegex(),text:le(ff.text).replace("\\b_","\\b_| {2,}\\n").replace(/\{2,\}/g,"*").getRegex()},Cc={normal:yf,gfm:u3,pedantic:l3},uo={normal:Sf,gfm:ff,breaks:R3,pedantic:k3},N3={"&":"&amp;","<":"&lt;",">":"&gt;",'"':"&quot;","'":"&#39;"},Jy=t=>N3[t];function vn(t,e){if(e){if(lt.escapeTest.test(t))return t.replace(lt.escapeReplace,Jy)}else if(lt.escapeTestNoEncode.test(t))return t.replace(lt.escapeReplaceNoEncode,Jy);return t}function Xy(t){try{t=encodeURI(t).replace(lt.percentDecode,"%")}catch{return null}return t}function Qy(t,e){let n=t.replace(lt.findPipe,(i,o,a)=>{let c=!1,u=o;for(;--u>=0&&a[u]==="\\";)c=!c;return c?"|":" |"}),r=n.split(lt.splitPipe),s=0;if(r[0].trim()||r.shift(),r.length>0&&!r.at(-1)?.trim()&&r.pop(),e)if(r.length>e)r.splice(e);else for(;r.length<e;)r.push("");for(;s<r.length;s++)r[s]=r[s].trim().replace(lt.slashPipe,"|");return r}function lo(t,e,n){let r=t.length;if(r===0)return"";let s=0;for(;s<r;){let i=t.charAt(r-s-1);if(i===e&&!n)s++;else if(i!==e&&n)s++;else break}return t.slice(0,r-s)}function I3(t,e){if(t.indexOf(e[1])===-1)return-1;let n=0;for(let r=0;r<t.length;r++)if(t[r]==="\\")r++;else if(t[r]===e[0])n++;else if(t[r]===e[1]&&(n--,n<0))return r;return n>0?-2:-1}function Zy(t,e,n,r,s){let i=e.href,o=e.title||null,a=t[1].replace(s.other.outputLinkReplace,"$1");r.state.inLink=!0;let c={type:t[0].charAt(0)==="!"?"image":"link",raw:n,href:i,title:o,text:a,tokens:r.inlineTokens(a)};return r.state.inLink=!1,c}function O3(t,e,n){let r=t.match(n.other.indentCodeCompensation);if(r===null)return e;let s=r[1];return e.split(`
663
669
  `).map(i=>{let o=i.match(n.other.beginningSpace);if(o===null)return i;let[a]=o;return a.length>=s.length?i.slice(s.length):i}).join(`
664
670
  `)}var ho=class{options;rules;lexer;constructor(t){this.options=t||wr}space(t){let e=this.rules.block.newline.exec(t);if(e&&e[0].length>0)return{type:"space",raw:e[0]}}code(t){let e=this.rules.block.code.exec(t);if(e){let n=e[0].replace(this.rules.other.codeRemoveIndent,"");return{type:"code",raw:e[0],codeBlockStyle:"indented",text:this.options.pedantic?n:lo(n,`
@@ -806,7 +812,7 @@ ${zp}`,...o.length?["","## Other","",Vp(o)]:[],""].join(`
806
812
  `],["config.json",`${JSON.stringify(YU,null,2)}
807
813
  `],["schemas/v1/plan.schema.json",oh("plan",Kr)],["schemas/v1/task.schema.json",oh("task",Es)],["schemas/v1/event.schema.json",oh("event",Fu)]];for(let[s,i]of r)await aj(se.join(e,s),i)&&n.push(s);return{root:e,created:n}}function ra(t){let e=ki(t).filter(n=>n.isFile()&&n.name.endsWith(".plan.csv")).map(n=>se.join(t,n.name));if(e.length!==1)throw new dn("PAN_SOURCE_CORRUPTED",ne("ERR_PLAN_CSV_UNIQUE"),{folder:t,files:e},5);return e[0]}function pn(t,e){return XU(Be.readFileSync(t,"utf8"),e)}function uh(t,e,n){let r=[];for(let s of ki(t)){if(!s.isFile()||!s.name.endsWith(e))continue;let i=se.join(t,s.name);for(let o of pn(i,n))r.push({...o,source_file:i})}return r}function uj(t,e){let n=0;for(let r of hh(t)){let s=ki(r).find(a=>a.isFile()&&a.name.endsWith(".plan.csv"));if(!s)continue;let o=s.name.slice(0,-9).match(/^[0-9A-HJKMNP-TV-Z]{5}-(.+)-(\d{2})$/);o&&o[1]===e&&(n=Math.max(n,Number(o[2])))}return n>=99?1:n+1}function lj(t){let e=new Set;for(let n of hh(t))for(let r of ki(n))r.isFile()&&r.name.endsWith(".plan.csv")&&e.add(r.name.slice(0,-9));return e}function _h(t,...e){let n;try{n=KU("git",["-C",t,"rev-parse","--git-path",se.join(...e)],{encoding:"utf8",stdio:["ignore","pipe","ignore"]}).trim()}catch{throw new dn("PAN_PLAN_GIT_REQUIRED",ne("ERR_GIT_REQUIRED"),{root:t},7)}return se.resolve(t,n)}async function _A(t,e,n){let r=`${fA("sha256").update(e).digest("hex")}.lock`,s=_h(t,"pan-plans","locks",r);Be.mkdirSync(se.dirname(s),{recursive:!0});let i;try{i=Be.openSync(s,"wx",384),Be.writeFileSync(i,`${JSON.stringify({pid:process.pid,scope:e,startedAt:new Date().toISOString()})}
808
814
  `)}catch(o){throw o.code==="EEXIST"?new dn("PAN_SOURCE_LOCKED",ne("ERR_STORE_LOCKED"),{scope:e,lockPath:s},6):o}try{return await n()}finally{Be.closeSync(i),Be.rmSync(s,{force:!0})}}function dj(t,e,n,r){return _h(t,"pan-plans","lanes",`${e}-${n}-${r}.json`)}function mh(t,e,n="human",r=""){let s=pA({root:t,actorKind:n,actorCode:r}),i=dj(t,e,s.gitUserSlug,s.actorKind);return Be.existsSync(i)?JSON.parse(Be.readFileSync(i,"utf8")):(Be.mkdirSync(se.dirname(i),{recursive:!0}),Be.writeFileSync(i,`${JSON.stringify(s,null,2)}
809
- `,{mode:384}),s)}function xh(t,e,n,r){let s=nj(t),i=r?ta(r):"";return i?`${s}-${e}-${i}.${n}.md`:`${s}-${e}.${n}.md`}function mA(t,e){let n=String(t||"").match(/^(\d{8}-\d{6})-(.+)\.(plan|solution|decision|note)\.md$/);if(!n)return"";let r=n[2];return r===e?"":e&&r.startsWith(`${e}-`)?r.slice(e.length+1):r}function xA(t,e){if(t.slug)return ta(t.slug);if(t.name)return ta(t.name);let{meta:n}=HU(e),r=n.find(s=>String(s.key||"").toLowerCase()==="title");if(r&&r.value)return ta(r.value);if(t.fileBaseName)return ta(t.fileBaseName);throw fn(ne("ERR_DOCUMENT_SLUG_REQUIRED"))}function fj(t,e){if(t.projectKey||t.project)return lA(t.projectKey||t.project);let n=t.projects||[];if(n.length>0&&n[0].key)return lA(n[0].key);let{loadProjectReadModel:r}=jr(),s=r(e);if(s.projects.length===1)return s.projects[0].project_key;throw fn(ne("ERR_PLAN_NEEDS_PROJECT"))}function pj(t,e){let n=Tn().createProjectPaths(t,e);if(!Be.existsSync(n.projectCsv))throw new dn("PAN_ENTITY_NOT_FOUND",ne("ERR_PROJECT_NOT_FOUND",{key:e}),{projectKey:e},3)}async function hj(t){let{initProjectsStore:e}=jr(),{projectsRoot:n}=zo();Be.existsSync(n(t))||await e(t)}function _j(t,e){return Array.isArray(t.projects)&&t.projects.length>0?t.projects:[{code:e.toLowerCase(),key:e}]}function gA(t,e,n){let r=rj(e,n);if(r)return r;let s=t.projects_json||[];return s[0]?.key?String(s[0].key).toUpperCase():""}async function mj(t,e){let n=e.root;if(!t.name)throw fn(ne("ERR_PLAN_NAME_REQUIRED"));if(!t.document)throw new dn("PAN_PLAN_DOCUMENT_REQUIRED",ne("ERR_PLAN_DOCUMENT_REQUIRED"),{},2);let r=fj(t,n);pj(n,r),await hj(n);let s=e.now?new Date(e.now):new Date,i=pA({root:n,actorKind:t.actorKind||"human",actorCode:t.actorCode||""}),o=uj(n,i.gitUserSlug),a=lj(n),c,u;for(let E=0;E<32&&(c=tj(),u=ZU({token:c,gitUserSlug:i.gitUserSlug,sequence:o}),!!a.has(u));E+=1)u="";if(!u)throw new dn("PAN_KEY_COLLISION",ne("ERR_KEY_COLLISION"),{},4);let d=QU({root:n,createdAt:s,planKey:u,planSlug:t.name,projectKey:r});await ln.mkdir(d.plansRoot,{recursive:!0});let l=t.idempotencyKey||qr(),f=_h(n,"pan-plans","staging",l),p=se.join(f,d.folderName);await ln.rm(f,{recursive:!0,force:!0}),await ln.mkdir(se.join(p,"documents"),{recursive:!0}),await ln.mkdir(se.join(p,"tasks"),{recursive:!0}),await ln.mkdir(se.join(p,"events"),{recursive:!0});let _=xh(s,u,"plan",t.name),h=se.join("documents",_),m={schema_version:"1",plan_id:qr(),plan_key:u,folder_name:se.relative(n,d.planDir).split(se.sep).join("/"),title:t.name,goal:t.goal||"",description_json:{text:t.description||""},initial_status:t.status||"draft",phases_json:t.phases||[],projects_json:_j(t,r),tags_json:t.tags||[],initial_document_path:h,creator_actor_id:i.actorId,creator_lane_id:i.laneId,created_at_utc:s.toISOString(),operation_id:l,provenance_json:{actorKind:i.actorKind,actorCode:i.actorCode,gitName:i.gitName,gitEmail:i.gitEmail,gitUserSlug:i.gitUserSlug,laneToken:i.laneToken}};if(await ln.writeFile(se.join(p,`${u}.plan.csv`),ph([m],Kr),"utf8"),await ln.writeFile(se.join(p,h),String(t.document),"utf8"),pn(se.join(p,`${u}.plan.csv`),Kr),await ln.mkdir(d.yearDir,{recursive:!0}),Be.existsSync(d.planDir))throw await ln.rm(f,{recursive:!0,force:!0}),new dn("PAN_SOURCE_ALREADY_EXISTS",ne("ERR_PLAN_FOLDER_EXISTS"),{planDir:d.planDir},5);try{await GU(p,d.planDir)}catch(E){throw E.code==="EEXIST"||E.code==="ENOTEMPTY"?new dn("PAN_SOURCE_ALREADY_EXISTS",ne("ERR_PLAN_FOLDER_EXISTS"),{planDir:d.planDir},5):E}finally{await ln.rm(f,{recursive:!0,force:!0})}return{...m,plan_dir:d.planDir,document:h}}async function EA(t,e,n){let r=Be.existsSync(t)?pn(t,e):[];return r.push(...n),await na(t,ph(r,e)),r}function xj(t){return uh(se.join(t,"tasks"),".tasks.csv",Es)}function gj(t,e){if(hA(e))return null;let n=ch(e);return xj(t).find(r=>ch(r.external_ref_json)===n)||null}async function Ej(t,e,n){let r=pn(t,Es),s=null,i=r.map(o=>{if(o.task_id!==e)return o;let a={...o,...n};return s={...a,source_file:t},a});if(!s)throw new dn("PAN_ENTITY_NOT_FOUND",ne("ERR_TASK_NOT_FOUND",{key:e}),{taskId:e},3);return await na(t,ph(i,Es)),s}function rt(t,e=0){let n=Number(t);return Number.isFinite(n)?n:e}async function yj(t,e){let n=e.root;if(!t.planKey||!t.title)throw fn(ne("ERR_TASK_NEEDS_PLAN_AND_TITLE"));let r=ys(n,t.planKey),[s]=pn(ra(r),Kr),i=cA({},t.externalRef),o=gj(r,i);if(o){let l=uA(t.tags||o.tags_json,i),f=await Ej(o.source_file,o.task_id,{title:t.title,description_json:{text:t.description??o.description_json?.text??""},type:t.type||o.type||"task",priority:t.priority||o.priority||"medium",difficulty:t.difficulty||o.difficulty||"unknown",estimate_seconds:String(rt(t.estimateSeconds!==void 0?t.estimateSeconds:o.estimate_seconds)),estimate_ai_seconds:String(rt(t.estimateAiSeconds!==void 0?t.estimateAiSeconds:o.estimate_ai_seconds)),acceptance_json:t.acceptance??o.acceptance_json??[],verification_json:t.verification??o.verification_json??[],tags_json:l,external_ref_json:cA(o.external_ref_json,i)});return await lh(t.planKey,e),await dh(t.planKey,e),{...f,upserted:!0}}let a=mh(n,t.planKey,t.actorKind||"human",t.actorCode||""),c=t.projectCode||"general";if(/[\\/]/.test(c))throw fn(ne("ERR_PROJECT_CODE_NO_SLASH"),{projectCode:c});let u=await _A(n,`tasks:${t.planKey}:${a.laneId}`,async()=>{let l=se.join(r,"tasks",`${t.planKey}--${a.laneToken}-${a.gitUserSlug}.tasks.csv`),p=(Be.existsSync(l)?pn(l,Es):[]).reduce((E,x)=>Math.max(E,rt(x.local_seq)),0)+1,_=String(t.projectKey||gA(s,r,n)||"GEN").toUpperCase(),h=e.now?new Date(e.now):new Date,m={schema_version:"1",task_id:qr(),task_key:ej({projectKey:_,actorCode:a.actorCode,laneToken:a.laneToken,sequence:p}),plan_id:s.plan_id,plan_key:s.plan_key,phase_id:t.phaseId||"",project_code:c,project_key:_,repo_name:t.repoName||"",repo_path:t.repoPath||"",work_path:t.workPath||"",writer_actor_id:a.actorId,writer_lane_id:a.laneId,local_seq:String(p),type:t.type||"task",title:t.title,description_json:{text:t.description||""},initial_status:t.status||"todo",initial_assignee_actor_id:t.assigneeActorId||"",priority:t.priority||"medium",difficulty:t.difficulty||"unknown",estimate_seconds:String(rt(t.estimateSeconds)),acceptance_json:t.acceptance||[],verification_json:t.verification||[],tags_json:uA(t.tags||[],i),created_at_utc:h.toISOString(),operation_id:t.idempotencyKey||qr(),provenance_json:{actorKind:a.actorKind,actorCode:a.actorCode,gitName:a.gitName,gitEmail:a.gitEmail,laneToken:a.laneToken},estimate_ai_seconds:String(rt(t.estimateAiSeconds)),external_ref_json:hA(i)?{}:i};return await EA(l,Es,[m]),{...m,source_file:l}}),d=[].concat(t.dependsOn||[]).flatMap(l=>String(l).split(",")).map(l=>l.trim()).filter(Boolean);for(let l of d)await vA({surface:"task",key:u.task_key},{type:"depends_on",targetKey:l,actorKind:t.actorKind,actorCode:t.actorCode},e);return await lh(t.planKey,e),await dh(t.planKey,e),u}function yA(t,e,n){return se.join(t,"events",`${e}--${n.laneToken}-${n.gitUserSlug}.events.csv`)}async function bA(t,e,n,r){return _A(t,e,async()=>{let s=Be.existsSync(n)?pn(n,Fu):[],i=r(s);return await EA(n,Fu,[i]),i})}async function bj(t,e,n){return gh(t,e,{status:n})}function Sj(t,e){let n=String(e.initial_document_path||"").split(se.sep).join("/");if(!n.endsWith(".plan.md")){let r=se.join(t,"documents"),s=ki(r).filter(i=>i.isFile()&&i.name.endsWith(".plan.md")).sort((i,o)=>i.name.localeCompare(o.name));if(s.length===0)return null;n=se.join("documents",s[0].name).split(se.sep).join("/")}return n}async function gh(t,e,n){let r=Sj(t,e);if(!r)return null;let s=se.join(t,r);if(!Be.existsSync(s))return null;let i=Be.readFileSync(s,"utf8"),o=i;for(let[a,c]of Object.entries(n||{}))c!=null&&(o=VU(o,a,c));return o!==i&&await na(s,o),r}async function lh(t,e){let n=ys(e.root,t),[r]=pn(ra(n),Kr),i=bs(e.root).plans.find(o=>o.plan_key===t);return i?gh(n,r,{effort:Gu(i.estimate_human_seconds),effort_ai:Gu(i.estimate_ai_seconds)}):null}async function dh(t,e){let n=ys(e.root,t),[r]=pn(ra(n),Kr),i=bs(e.root).plans.find(o=>o.plan_key===t);return i?i.status===i.status_from_events?gh(n,r,{status:i.status}):sa(t,{type:"plan.status_changed",baseRevision:i.revision,payload:{status:i.status,reason:"derived_from_tasks"}},e):null}async function sa(t,e,n){let r=ys(n.root,t),[s]=pn(ra(r),Kr),o=bs(n.root).plans.find(d=>d.plan_key===t),a=mh(n.root,t,e.actorKind||"human",e.actorCode||""),c=yA(r,t,a),u=await bA(n.root,`events:${t}:${a.laneId}`,c,d=>({schema_version:"1",event_id:qr(),writer_actor_id:a.actorId,writer_lane_id:a.laneId,lane_event_seq:String(d.length+1),entity_type:"plan",entity_id:s.plan_id,entity_key_hint:s.plan_key,event_type:e.type,base_revision:String(e.baseRevision||o?.revision||1),idempotency_key:e.idempotencyKey||qr(),recorded_at_utc:new Date(n.now||Date.now()).toISOString(),occurred_at_utc:new Date(e.occurredAt||n.now||Date.now()).toISOString(),payload_json:e.payload||{},provenance_json:{actorKind:a.actorKind,actorCode:a.actorCode,gitName:a.gitName,gitEmail:a.gitEmail,laneToken:a.laneToken}}));return e.type==="plan.status_changed"&&e.payload&&e.payload.status&&await bj(r,s,e.payload.status),u}async function Eh(t,e,n){let s=bs(n.root).tasks.find(u=>u.task_key===t);if(!s)throw new dn("PAN_ENTITY_NOT_FOUND",ne("ERR_TASK_NOT_FOUND",{key:t}),{taskKey:t},3);let i=ys(n.root,s.plan_key),o=mh(n.root,s.plan_key,e.actorKind||"human",e.actorCode||""),a=yA(i,s.plan_key,o),c=await bA(n.root,`events:${s.plan_key}:${o.laneId}`,a,u=>({schema_version:"1",event_id:qr(),writer_actor_id:o.actorId,writer_lane_id:o.laneId,lane_event_seq:String(u.length+1),entity_type:"task",entity_id:s.task_id,entity_key_hint:s.task_key,event_type:e.type,base_revision:String(e.baseRevision||s.revision),idempotency_key:e.idempotencyKey||qr(),recorded_at_utc:new Date(n.now||Date.now()).toISOString(),occurred_at_utc:new Date(e.occurredAt||n.now||Date.now()).toISOString(),payload_json:e.payload||{},provenance_json:{actorKind:o.actorKind,actorCode:o.actorCode,gitName:o.gitName,gitEmail:o.gitEmail,laneToken:o.laneToken}}));return(e.type==="task.cancelled"||e.type==="task.reopened"||e.type==="task.done"||e.type==="task.status_changed"||e.type==="task.updated")&&(await lh(s.plan_key,n),e.type!=="task.updated"&&await dh(s.plan_key,n)),c}function $u(t){return[t.type,t.target_entity_type,t.target_entity_id].join("\0")}function SA(t,e){let n=e.payload_json||{},r=String(n.type||"");if(!qu.includes(r))return;let s=String(n.target_entity_type||""),i=String(n.target_entity_id||"");if(!s||!i)return;let o={type:r,target_entity_type:s,target_entity_id:i,target_key_hint:String(n.target_key_hint||""),note:String(n.note||"")};e.event_type==="link.added"?t.links.some(c=>$u(c)===$u(o))||t.links.push(o):e.event_type==="link.removed"&&(t.links=t.links.filter(a=>$u(a)!==$u(o)))}function Tj(t,e,n){let r=e.payload_json||{};if(e.event_type==="link.added"||e.event_type==="link.removed"){SA(t,e),t.updated_at_utc=e.recorded_at_utc;return}let s=rt(e.base_revision);if(s!==t.revision){n.push({code:"DIVERGENT_REVISION",planKey:t.plan_key,eventId:e.event_id,expectedRevision:t.revision,baseRevision:s});return}e.event_type==="plan.status_changed"?t.status=r.status||t.status:(e.event_type==="document.added"||e.event_type==="document.superseded")&&(t.current_document_path=r.path||t.current_document_path),t.revision+=1,t.updated_at_utc=e.recorded_at_utc}function Aj(t,e,n){let r=new Set(["task.claimed","task.status_changed","task.done","task.cancelled","task.assigned","task.updated","task.blocked","task.unblocked"]);if(e.event_type==="link.added"||e.event_type==="link.removed"){SA(t,e),t.events.push(e),t.updated_at_utc=e.recorded_at_utc;return}let s=rt(e.base_revision);if(r.has(e.event_type)&&s!==t.revision){n.push({code:e.event_type==="task.claimed"?"DOUBLE_CLAIM":"DIVERGENT_REVISION",taskKey:t.task_key,eventId:e.event_id,expectedRevision:t.revision,baseRevision:s});return}let i=e.payload_json||{};e.event_type==="task.claimed"?(t.status="in_progress",t.claimant=i.claimant||e.writer_actor_id):e.event_type==="task.status_changed"||e.event_type==="task.done"||e.event_type==="task.cancelled"?(t.status=i.status||(e.event_type==="task.cancelled"?"cancelled":"done"),"claimant"in i&&(t.claimant=i.claimant)):e.event_type==="task.blocked"?(t.blocked=!0,t.blocker=i.reason||""):e.event_type==="task.unblocked"?(t.blocked=!1,t.blocker=""):e.event_type==="worklog.added"?t.actual_seconds+=rt(i.durationSeconds):e.event_type==="task.assigned"?t.assignee=i.assignee||"":e.event_type==="task.updated"&&(i.estimateSeconds!==void 0&&(t.estimate_seconds=String(rt(i.estimateSeconds))),i.estimateAiSeconds!==void 0&&(t.estimate_ai_seconds=String(rt(i.estimateAiSeconds)))),t.events.push(e),r.has(e.event_type)&&(t.revision+=1),t.updated_at_utc=e.recorded_at_utc}function ah(t,e){return(e==="decision"?zU:JU).includes(String(t||""))}function ea(t,e){let n={plan:["plan_id","plan_key"],task:["task_id","task_key"],usecase:["usecase_id","usecase_key"],testcase:["testcase_id","testcase_key"],decision:["decision_id","decision_key"]},[r,s]=n[e]||n.task;return{entity_type:e,entity_id:t[r],key:t[s],status:t.status}}function wj(t,e){let n=new Set,r=new Set;function s(i,o){if(n.has(i)){e.push({code:"DEPENDENCY_CYCLE",path:[...o,i]});return}if(!r.has(i)){n.add(i);for(let a of t.get(i)||[])s(a,[...o,i]);n.delete(i),r.add(i)}}for(let i of t.keys())s(i,[])}function TA(t,e,n,r={},s=[]){let i=new Map;for(let u of t)i.set(u.plan_id,{entity:u,entityType:"plan"});for(let u of e)i.set(u.task_id,{entity:u,entityType:"task"});for(let u of r.usecases||[])i.set(u.usecase_id,{entity:u,entityType:"usecase"});for(let u of r.testcases||[])i.set(u.testcase_id,{entity:u,entityType:"testcase"});for(let u of s)i.set(u.decision_id,{entity:u,entityType:"decision"});let o=new Map;for(let{entity:u,entityType:d}of i.values())for(let l of u.links||[])if(l.target_entity_id===ea(u,d).entity_id&&n.push({code:"SELF_LINK",entityType:d,key:ea(u,d).key,type:l.type}),!i.has(l.target_entity_id)&&l.type!=="external"&&n.push({code:"ORPHAN_LINK",entityType:d,key:ea(u,d).key,type:l.type,targetId:l.target_entity_id,targetKeyHint:l.target_key_hint}),l.type==="blocks"&&i.has(l.target_entity_id)){let f=o.get(l.target_entity_id)||[];f.push(ea(u,d)),o.set(l.target_entity_id,f)}let a=new Map;function c(u,d){a.has(u)||a.set(u,[]),a.get(u).push(d)}for(let{entity:u,entityType:d}of i.values()){let l=ea(u,d),f=[],p=[];for(let _ of u.links||[]){if(_.type!=="depends_on")continue;let h=i.get(_.target_entity_id),m={type:_.type,target_entity_type:_.target_entity_type,target_entity_id:_.target_entity_id,target_key:h?.entityType==="plan"?h.entity.plan_key:h?.entityType==="usecase"?h.entity.usecase_key:h?.entityType==="testcase"?h.entity.testcase_key:h?.entity.task_key||_.target_key_hint,target_status:h?.entity.status||"",met:h?ah(h.entity.status,h.entityType):!1};f.push(m),c(l.entity_id,_.target_entity_id),m.met||p.push(m)}for(let _ of o.get(l.entity_id)||[]){c(l.entity_id,_.entity_id);let h={type:"blocked_by",target_entity_type:_.entity_type,target_entity_id:_.entity_id,target_key:_.key,target_status:_.status,met:ah(_.status,_.entity_type)};f.push(h),h.met||p.push(h)}u.depends_on=f,u.unmet_dependencies=p,u.dependency_ready=p.length===0,d==="task"?u.ready=u.status==="todo"&&!u.blocked&&u.dependency_ready:u.ready=!["completed","cancelled"].includes(u.status)&&u.dependency_ready,ah(u.status,d)&&p.length>0&&d==="task"&&n.push({code:"DONE_WITH_UNMET_DEPENDENCY",taskKey:u.task_key,unmet:p.map(_=>_.target_key)})}wj(a,n)}function vj(t,e,n){let r=(t||[]).find(i=>String(i.key||"").toLowerCase()==="title");if(r&&r.value)return String(r.value).trim();let s=String(e||"").match(/^#\s+(.+?)\s*$/m);return s?s[1].trim():n||""}function Lj(t,e){let n=se.join(t,"documents"),r=e.plan_key;return ki(n).filter(s=>s.isFile()&&s.name.endsWith(".md")).map(s=>{let i=se.join(n,s.name),o=Be.readFileSync(i,"utf8"),a=s.name.match(/\.(plan|solution|decision|note)\.md$/),c=a?a[1]:"note",u=mA(s.name,r),{html:d,meta:l}=WU(o),f=vj(l,o,u||c);return{name:s.name,slug:u,title:f,label:f,path:se.relative(t,i).split(se.sep).join("/"),type:c,markdown:o,meta:l,html:d,current:e.initial_document_path.endsWith(s.name)}}).sort((s,i)=>s.name.localeCompare(i.name))}async function Cj(t,e,n){let r=ys(n.root,t),s=e.type||"solution";if(!["plan","solution","decision","note"].includes(s))throw fn(ne("ERR_DOCUMENT_TYPE_INVALID"),{type:s});let i=String(e.document||"");if(!i.trim())throw fn(ne("ERR_DOCUMENT_EMPTY"));let o=xA(e,i),a=new Date(n.now||Date.now()),c=xh(a,t,s,o),u=se.join("documents",c).split(se.sep).join("/"),d=se.join(r,u);await na(d,i,{mustNotExist:!0});let l=await sa(t,{type:"document.added",baseRevision:e.baseRevision,payload:{type:s,name:c,slug:o,path:u,sha256:fA("sha256").update(i).digest("hex")}},n);return{planKey:t,type:s,name:c,slug:o,path:d,eventId:l.event_id}}function bs(t){let e=[],n=[],r=[],s=[];for(let l of hh(t)){let[f]=pn(ra(l),Kr),p={...f,status:f.initial_status,revision:1,plan_dir:l,project_key:gA(f,l,t),current_document_path:f.initial_document_path,updated_at_utc:f.created_at_utc,documents:[],links:[],depends_on:[],unmet_dependencies:[],dependency_ready:!0,ready:!0,task_count:0,done_count:0,progress:0,estimate_human_seconds:0,estimate_ai_seconds:0,remaining_human_seconds:0,remaining_ai_seconds:0,remaining_human_man_days:0,remaining_ai_man_days:0};p.documents=Lj(l,p),e.push(p);for(let _ of uh(se.join(l,"tasks"),".tasks.csv",Es))n.push({..._,status:_.initial_status,assignee:_.initial_assignee_actor_id,claimant:"",blocked:!1,blocker:"",actual_seconds:0,revision:1,events:[],links:[],depends_on:[],unmet_dependencies:[],dependency_ready:!0,ready:!0,updated_at_utc:_.created_at_utc});r.push(...uh(se.join(l,"events"),".events.csv",Fu))}function i(l,f,p){let _=new Set;for(let h of l)_.has(h[f])&&s.push({code:p,field:f,value:h[f]}),_.add(h[f])}i(e,"plan_id","DUPLICATE_INTERNAL_ID"),i(e,"plan_key","DUPLICATE_HUMAN_KEY"),i(n,"task_id","DUPLICATE_INTERNAL_ID"),i(n,"task_key","DUPLICATE_HUMAN_KEY");let o=new Map;for(let l of n){let f=ch(l.external_ref_json);if(!f)continue;let p=o.get(l.plan_key)||new Map;p.has(f)?s.push({code:"DUPLICATE_EXTERNAL_REF",planKey:l.plan_key,ref:f,taskKeys:[p.get(f),l.task_key]}):p.set(f,l.task_key),o.set(l.plan_key,p)}let a=new Map(e.map(l=>[l.plan_id,l]));for(let l of n)a.has(l.plan_id)||s.push({code:"ORPHAN_PLAN",taskKey:l.task_key,planId:l.plan_id});let c=new Map(n.map(l=>[l.task_id,l]));r.sort((l,f)=>l.entity_id.localeCompare(f.entity_id)||rt(l.base_revision)-rt(f.base_revision)||l.writer_lane_id.localeCompare(f.writer_lane_id)||rt(l.lane_event_seq)-rt(f.lane_event_seq)||l.event_id.localeCompare(f.event_id)).forEach(l=>{if(l.entity_type==="task"){let f=c.get(l.entity_id);if(!f){s.push({code:"ORPHAN_EVENT",eventId:l.event_id,entityId:l.entity_id});return}Aj(f,l,s)}else if(l.entity_type==="plan"){let f=a.get(l.entity_id);if(!f){s.push({code:"ORPHAN_EVENT",eventId:l.event_id,entityId:l.entity_id});return}Tj(f,l,s)}});for(let l of e){let f=n.filter(h=>h.plan_id===l.plan_id),p=f.filter(h=>h.status!=="cancelled"),_=p.filter(h=>h.status!=="done");l.status_from_events=l.status,l.status=kj(l.status_from_events,p),l.task_count=f.length,l.done_count=f.filter(h=>h.status==="done").length,l.progress=p.length===0?0:Math.round(p.filter(h=>h.status==="done").length/p.length*100),l.estimate_human_seconds=Bn(p,"estimate_seconds"),l.estimate_ai_seconds=Bn(p,"estimate_ai_seconds"),l.remaining_human_seconds=Bn(_,"estimate_seconds"),l.remaining_ai_seconds=Bn(_,"estimate_ai_seconds"),l.remaining_human_man_days=Ku(l.remaining_human_seconds),l.remaining_ai_man_days=Ku(l.remaining_ai_seconds),l.documents.forEach(h=>{h.current=h.path===l.current_document_path,h.type==="plan"&&(h.meta=ih(h.meta,"status",l.status),h.meta=ih(h.meta,"effort",Gu(l.estimate_human_seconds)),h.meta=ih(h.meta,"effort_ai",Gu(l.estimate_ai_seconds)))})}for(let l of n)l.status==="done"&&l.blocked&&s.push({code:"DONE_WITH_ACTIVE_BLOCKER",taskKey:l.task_key});let u=jr().loadProjectReadModel(t),d=vi().loadDecisionReadModel(t);return TA(e,n,s,u,d.decisions),{generated_at_utc:new Date().toISOString(),plans:e.sort((l,f)=>f.created_at_utc.localeCompare(l.created_at_utc)),tasks:n.sort((l,f)=>f.updated_at_utc.localeCompare(l.updated_at_utc)),events:r.concat(d.events),conflicts:s.concat(d.conflicts),projects:u.projects,modules:u.modules,moduleStats:u.moduleStats,usecases:u.usecases,testcases:u.testcases,decisions:d.decisions,summary:AA(e,n,s,u,d)}}var fh=480*60;function Bn(t,e){return t.reduce((n,r)=>n+rt(r[e]),0)}function Ku(t){return Math.round(t/fh*10)/10}function Gu(t){let e=rt(t);return e<=0?"0d":e<3600?`${Math.max(1,Math.round(e/60))}m`:e<fh?`${Math.round(e/3600*10)/10}h`:`${Math.round(e/fh*10)/10}d`}function kj(t,e){let n=String(t||"draft");return n==="cancelled"||!Array.isArray(e)||e.length===0?n:e.every(s=>s.status==="done")?"completed":n==="completed"?"active":n}function AA(t,e,n,r={},s={}){let i=e.filter(A=>A.status!=="cancelled"),o=i.filter(A=>A.status==="done"),a=i.filter(A=>A.status!=="done"&&A.status!=="cancelled"),c=i.length,u=o.length,d=Bn(i,"estimate_seconds"),l=Bn(i,"estimate_ai_seconds"),f=Bn(o,"estimate_seconds"),p=Bn(o,"estimate_ai_seconds"),_=Bn(a,"estimate_seconds"),h=Bn(a,"estimate_ai_seconds"),m=r.moduleStats||[],E=s.decisions||[],x=m.reduce((A,O)=>A+O.usecase_total,0),S=m.reduce((A,O)=>A+O.usecase_done,0),v=m.reduce((A,O)=>A+O.testcase_total,0),C=m.reduce((A,O)=>A+O.testcase_done,0);return{plans:t.length,projects:(r.projects||[]).length,modules:(r.modules||[]).length,tasks:e.length,tasksTotal:c,tasksDone:u,tasksProgressPercent:c===0?0:Math.round(u/c*100),usecaseTotal:x,usecaseDone:S,usecaseProgressPercent:x===0?0:Math.round(S/x*100),testcaseTotal:v,testcaseDone:C,testcaseProgressPercent:v===0?0:Math.round(C/v*100),done:u,inProgress:e.filter(A=>A.status==="in_progress").length,bugs:e.filter(A=>A.type==="bug").length,ready:e.filter(A=>A.ready).length,unmetDependencies:e.filter(A=>A.unmet_dependencies.length>0).length,conflicts:n.length,estimateHumanSecondsTotal:d,estimateHumanSecondsDone:f,estimateAiSecondsTotal:l,estimateAiSecondsDone:p,remainingHumanSeconds:_,remainingAiSeconds:h,remainingHumanManDays:Ku(_),remainingAiManDays:Ku(h),decisionsTotal:E.length,decisionsOpen:E.filter(A=>A.status==="open").length,decisionsClosed:E.filter(A=>A.status==="closed").length}}function Rj(t){let e=bs(t),{verifyProjects:n}=jr(),{verifyDecisions:r}=vi(),s=n(t),i=r(t),o=[...e.conflicts,...s.errors,...i.errors];return{ok:o.length===0,errors:o,summary:e.summary}}function dA(t,e){let{findEntityByKey:n}=jr(),{loadDecisionReadModel:r}=vi(),s=n(t,e);if(s)return s;let o=r(t).decisions.find(d=>d.decision_key===e);if(o)return{entity_type:"decision",entity_id:o.decision_id,key:o.decision_key};let a=bs(t),c=a.tasks.find(d=>d.task_key===e);if(c)return{entity_type:"task",entity_id:c.task_id,key:c.task_key,plan_key:c.plan_key};let u=a.plans.find(d=>d.plan_key===e);return u?{entity_type:"plan",entity_id:u.plan_id,key:u.plan_key,plan_key:u.plan_key}:null}function wA(t,e){let n=dA(t,e);if(n)return n;let{resolveAcrossStores:r}=Mr(),s=r(t,i=>dA(i,e));if(s)return s;throw new dn("PAN_ENTITY_NOT_FOUND",ne("ERR_LINK_TARGET_NOT_FOUND",{key:e}),{targetKey:e},3)}async function vA(t,e,n){let r=String(e.type||"depends_on");if(!qu.includes(r))throw fn(ne("ERR_LINK_TYPE_INVALID",{type:r}),{type:r,allowed:qu});if(!e.targetKey)throw fn(ne("ERR_LINK_TARGET_REQUIRED"));let s=wA(n.root,e.targetKey),o={type:"link.added",payload:{type:r,target_entity_type:s.entity_type,target_entity_id:s.entity_id,target_key_hint:s.key,note:e.note||""},actorKind:e.actorKind,actorCode:e.actorCode,idempotencyKey:e.idempotencyKey};return t.surface==="plan"?sa(t.key,o,n):Eh(t.key,o,n)}async function Nj(t,e,n){let r=String(e.type||"depends_on");if(!qu.includes(r))throw fn(ne("ERR_LINK_TYPE_INVALID",{type:r}),{type:r});if(!e.targetKey)throw fn(ne("ERR_LINK_TARGET_REQUIRED"));let s=wA(n.root,e.targetKey),o={type:"link.removed",payload:{type:r,target_entity_type:s.entity_type,target_entity_id:s.entity_id,target_key_hint:s.key},actorKind:e.actorKind,actorCode:e.actorCode,idempotencyKey:e.idempotencyKey};return t.surface==="plan"?sa(t.key,o,n):Eh(t.key,o,n)}function Ij(t,e){let n=(t.acceptance_json||[]).map(a=>`- ${a}`).join(`
815
+ `,{mode:384}),s)}function xh(t,e,n,r){let s=nj(t),i=r?ta(r):"";return i?`${s}-${e}-${i}.${n}.md`:`${s}-${e}.${n}.md`}function mA(t,e){let n=String(t||"").match(/^(\d{8}-\d{6})-(.+)\.(plan|solution|decision|note)\.md$/);if(!n)return"";let r=n[2];return r===e?"":e&&r.startsWith(`${e}-`)?r.slice(e.length+1):r}function xA(t,e){if(t.slug)return ta(t.slug);if(t.name)return ta(t.name);let{meta:n}=HU(e),r=n.find(s=>String(s.key||"").toLowerCase()==="title");if(r&&r.value)return ta(r.value);if(t.fileBaseName)return ta(t.fileBaseName);throw fn(ne("ERR_DOCUMENT_SLUG_REQUIRED"))}function fj(t,e){if(t.projectKey||t.project)return lA(t.projectKey||t.project);let n=t.projects||[];if(n.length>0&&n[0].key)return lA(n[0].key);let{loadProjectReadModel:r}=jr(),s=r(e);if(s.projects.length===1)return s.projects[0].project_key;throw fn(ne("ERR_PLAN_NEEDS_PROJECT"))}function pj(t,e){let n=Tn().createProjectPaths(t,e);if(!Be.existsSync(n.projectCsv))throw new dn("PAN_ENTITY_NOT_FOUND",ne("ERR_PROJECT_NOT_FOUND",{key:e}),{projectKey:e},3)}async function hj(t){let{initProjectsStore:e}=jr(),{projectsRoot:n}=zo();Be.existsSync(n(t))||await e(t)}function _j(t,e){return Array.isArray(t.projects)&&t.projects.length>0?t.projects:[{code:e.toLowerCase(),key:e}]}function gA(t,e,n){let r=rj(e,n);if(r)return r;let s=t.projects_json||[];return s[0]?.key?String(s[0].key).toUpperCase():""}async function mj(t,e){let n=e.root;if(!t.name)throw fn(ne("ERR_PLAN_NAME_REQUIRED"));if(!t.document)throw new dn("PAN_PLAN_DOCUMENT_REQUIRED",ne("ERR_PLAN_DOCUMENT_REQUIRED"),{},2);let r=fj(t,n);pj(n,r),await hj(n);let s=e.now?new Date(e.now):new Date,i=pA({root:n,actorKind:t.actorKind||"human",actorCode:t.actorCode||""}),o=uj(n,i.gitUserSlug),a=lj(n),c,u;for(let E=0;E<32&&(c=tj(),u=ZU({token:c,gitUserSlug:i.gitUserSlug,sequence:o}),!!a.has(u));E+=1)u="";if(!u)throw new dn("PAN_KEY_COLLISION",ne("ERR_KEY_COLLISION"),{},4);let d=QU({root:n,createdAt:s,planKey:u,planSlug:t.name,projectKey:r});await ln.mkdir(d.plansRoot,{recursive:!0});let l=t.idempotencyKey||qr(),f=_h(n,"pan-plans","staging",l),p=se.join(f,d.folderName);await ln.rm(f,{recursive:!0,force:!0}),await ln.mkdir(se.join(p,"documents"),{recursive:!0}),await ln.mkdir(se.join(p,"tasks"),{recursive:!0}),await ln.mkdir(se.join(p,"events"),{recursive:!0});let _=xh(s,u,"plan",t.name),h=se.join("documents",_),m={schema_version:"1",plan_id:qr(),plan_key:u,folder_name:se.relative(n,d.planDir).split(se.sep).join("/"),title:t.name,goal:t.goal||"",description_json:{text:t.description||""},initial_status:t.status||"draft",phases_json:t.phases||[],projects_json:_j(t,r),tags_json:t.tags||[],initial_document_path:h,creator_actor_id:i.actorId,creator_lane_id:i.laneId,created_at_utc:s.toISOString(),operation_id:l,provenance_json:{actorKind:i.actorKind,actorCode:i.actorCode,gitName:i.gitName,gitEmail:i.gitEmail,gitUserSlug:i.gitUserSlug,laneToken:i.laneToken}};if(await ln.writeFile(se.join(p,`${u}.plan.csv`),ph([m],Kr),"utf8"),await ln.writeFile(se.join(p,h),String(t.document),"utf8"),pn(se.join(p,`${u}.plan.csv`),Kr),await ln.mkdir(d.yearDir,{recursive:!0}),Be.existsSync(d.planDir))throw await ln.rm(f,{recursive:!0,force:!0}),new dn("PAN_SOURCE_ALREADY_EXISTS",ne("ERR_PLAN_FOLDER_EXISTS"),{planDir:d.planDir},5);try{await GU(p,d.planDir)}catch(E){throw E.code==="EEXIST"||E.code==="ENOTEMPTY"?new dn("PAN_SOURCE_ALREADY_EXISTS",ne("ERR_PLAN_FOLDER_EXISTS"),{planDir:d.planDir},5):E}finally{await ln.rm(f,{recursive:!0,force:!0})}return{...m,plan_dir:d.planDir,document:h}}async function EA(t,e,n){let r=Be.existsSync(t)?pn(t,e):[];return r.push(...n),await na(t,ph(r,e)),r}function xj(t){return uh(se.join(t,"tasks"),".tasks.csv",Es)}function gj(t,e){if(hA(e))return null;let n=ch(e);return xj(t).find(r=>ch(r.external_ref_json)===n)||null}async function Ej(t,e,n){let r=pn(t,Es),s=null,i=r.map(o=>{if(o.task_id!==e)return o;let a={...o,...n};return s={...a,source_file:t},a});if(!s)throw new dn("PAN_ENTITY_NOT_FOUND",ne("ERR_TASK_NOT_FOUND",{key:e}),{taskId:e},3);return await na(t,ph(i,Es)),s}function rt(t,e=0){let n=Number(t);return Number.isFinite(n)?n:e}async function yj(t,e){let n=e.root;if(!t.planKey||!t.title)throw fn(ne("ERR_TASK_NEEDS_PLAN_AND_TITLE"));let r=ys(n,t.planKey),[s]=pn(ra(r),Kr),i=cA({},t.externalRef),o=gj(r,i);if(o){let l=uA(t.tags||o.tags_json,i),f=await Ej(o.source_file,o.task_id,{title:t.title,description_json:{text:t.description??o.description_json?.text??""},type:t.type||o.type||"task",priority:t.priority||o.priority||"medium",difficulty:t.difficulty||o.difficulty||"unknown",estimate_seconds:String(rt(t.estimateSeconds!==void 0?t.estimateSeconds:o.estimate_seconds)),estimate_ai_seconds:String(rt(t.estimateAiSeconds!==void 0?t.estimateAiSeconds:o.estimate_ai_seconds)),acceptance_json:t.acceptance??o.acceptance_json??[],verification_json:t.verification??o.verification_json??[],tags_json:l,external_ref_json:cA(o.external_ref_json,i)});return await lh(t.planKey,e),await dh(t.planKey,e),{...f,upserted:!0}}let a=mh(n,t.planKey,t.actorKind||"human",t.actorCode||""),c=t.projectCode||"general";if(/[\\/]/.test(c))throw fn(ne("ERR_PROJECT_CODE_NO_SLASH"),{projectCode:c});let u=await _A(n,`tasks:${t.planKey}:${a.laneId}`,async()=>{let l=se.join(r,"tasks",`${t.planKey}--${a.laneToken}-${a.gitUserSlug}.tasks.csv`),p=(Be.existsSync(l)?pn(l,Es):[]).reduce((E,x)=>Math.max(E,rt(x.local_seq)),0)+1,_=String(t.projectKey||gA(s,r,n)||"GEN").toUpperCase(),h=e.now?new Date(e.now):new Date,m={schema_version:"1",task_id:qr(),task_key:ej({projectKey:_,actorCode:a.actorCode,laneToken:a.laneToken,sequence:p}),plan_id:s.plan_id,plan_key:s.plan_key,phase_id:t.phaseId||"",project_code:c,project_key:_,repo_name:t.repoName||"",repo_path:t.repoPath||"",work_path:t.workPath||"",writer_actor_id:a.actorId,writer_lane_id:a.laneId,local_seq:String(p),type:t.type||"task",title:t.title,description_json:{text:t.description||""},initial_status:t.status||"todo",initial_assignee_actor_id:t.assigneeActorId||"",priority:t.priority||"medium",difficulty:t.difficulty||"unknown",estimate_seconds:String(rt(t.estimateSeconds)),acceptance_json:t.acceptance||[],verification_json:t.verification||[],tags_json:uA(t.tags||[],i),created_at_utc:h.toISOString(),operation_id:t.idempotencyKey||qr(),provenance_json:{actorKind:a.actorKind,actorCode:a.actorCode,gitName:a.gitName,gitEmail:a.gitEmail,laneToken:a.laneToken},estimate_ai_seconds:String(rt(t.estimateAiSeconds)),external_ref_json:hA(i)?{}:i};return await EA(l,Es,[m]),{...m,source_file:l}}),d=[].concat(t.dependsOn||[]).flatMap(l=>String(l).split(",")).map(l=>l.trim()).filter(Boolean);for(let l of d)await vA({surface:"task",key:u.task_key},{type:"depends_on",targetKey:l,actorKind:t.actorKind,actorCode:t.actorCode},e);return await lh(t.planKey,e),await dh(t.planKey,e),u}function yA(t,e,n){return se.join(t,"events",`${e}--${n.laneToken}-${n.gitUserSlug}.events.csv`)}async function bA(t,e,n,r){return _A(t,e,async()=>{let s=Be.existsSync(n)?pn(n,Fu):[],i=r(s);return await EA(n,Fu,[i]),i})}async function bj(t,e,n){return gh(t,e,{status:n})}function Sj(t,e){let n=String(e.initial_document_path||"").split(se.sep).join("/");if(!n.endsWith(".plan.md")){let r=se.join(t,"documents"),s=ki(r).filter(i=>i.isFile()&&i.name.endsWith(".plan.md")).sort((i,o)=>i.name.localeCompare(o.name));if(s.length===0)return null;n=se.join("documents",s[0].name).split(se.sep).join("/")}return n}async function gh(t,e,n){let r=Sj(t,e);if(!r)return null;let s=se.join(t,r);if(!Be.existsSync(s))return null;let i=Be.readFileSync(s,"utf8"),o=i;for(let[a,c]of Object.entries(n||{}))c!=null&&(o=VU(o,a,c));return o!==i&&await na(s,o),r}async function lh(t,e){let n=ys(e.root,t),[r]=pn(ra(n),Kr),i=bs(e.root).plans.find(o=>o.plan_key===t);return i?gh(n,r,{effort:Gu(i.estimate_human_seconds),effort_ai:Gu(i.estimate_ai_seconds)}):null}async function dh(t,e){let n=ys(e.root,t),[r]=pn(ra(n),Kr),i=bs(e.root).plans.find(o=>o.plan_key===t);return i?i.status===i.status_from_events?gh(n,r,{status:i.status}):sa(t,{type:"plan.status_changed",baseRevision:i.revision,payload:{status:i.status,reason:"derived_from_tasks"}},e):null}async function sa(t,e,n){let r=ys(n.root,t),[s]=pn(ra(r),Kr),o=bs(n.root).plans.find(d=>d.plan_key===t),a=mh(n.root,t,e.actorKind||"human",e.actorCode||""),c=yA(r,t,a),u=await bA(n.root,`events:${t}:${a.laneId}`,c,d=>({schema_version:"1",event_id:qr(),writer_actor_id:a.actorId,writer_lane_id:a.laneId,lane_event_seq:String(d.length+1),entity_type:"plan",entity_id:s.plan_id,entity_key_hint:s.plan_key,event_type:e.type,base_revision:String(e.baseRevision||o?.revision||1),idempotency_key:e.idempotencyKey||qr(),recorded_at_utc:new Date(n.now||Date.now()).toISOString(),occurred_at_utc:new Date(e.occurredAt||n.now||Date.now()).toISOString(),payload_json:e.payload||{},provenance_json:{actorKind:a.actorKind,actorCode:a.actorCode,gitName:a.gitName,gitEmail:a.gitEmail,laneToken:a.laneToken}}));return e.type==="plan.status_changed"&&e.payload&&e.payload.status&&await bj(r,s,e.payload.status),u}async function Eh(t,e,n){let s=bs(n.root).tasks.find(u=>u.task_key===t);if(!s)throw new dn("PAN_ENTITY_NOT_FOUND",ne("ERR_TASK_NOT_FOUND",{key:t}),{taskKey:t},3);let i=ys(n.root,s.plan_key),o=mh(n.root,s.plan_key,e.actorKind||"human",e.actorCode||""),a=yA(i,s.plan_key,o),c=await bA(n.root,`events:${s.plan_key}:${o.laneId}`,a,u=>({schema_version:"1",event_id:qr(),writer_actor_id:o.actorId,writer_lane_id:o.laneId,lane_event_seq:String(u.length+1),entity_type:"task",entity_id:s.task_id,entity_key_hint:s.task_key,event_type:e.type,base_revision:String(e.baseRevision||s.revision),idempotency_key:e.idempotencyKey||qr(),recorded_at_utc:new Date(n.now||Date.now()).toISOString(),occurred_at_utc:new Date(e.occurredAt||n.now||Date.now()).toISOString(),payload_json:e.payload||{},provenance_json:{actorKind:o.actorKind,actorCode:o.actorCode,gitName:o.gitName,gitEmail:o.gitEmail,laneToken:o.laneToken}}));return(e.type==="task.cancelled"||e.type==="task.reopened"||e.type==="task.done"||e.type==="task.status_changed"||e.type==="task.updated")&&(await lh(s.plan_key,n),e.type!=="task.updated"&&await dh(s.plan_key,n)),c}function $u(t){return[t.type,t.target_entity_type,t.target_entity_id].join("\0")}function SA(t,e){let n=e.payload_json||{},r=String(n.type||"");if(!qu.includes(r))return;let s=String(n.target_entity_type||""),i=String(n.target_entity_id||"");if(!s||!i)return;let o={type:r,target_entity_type:s,target_entity_id:i,target_key_hint:String(n.target_key_hint||""),note:String(n.note||"")};e.event_type==="link.added"?t.links.some(c=>$u(c)===$u(o))||t.links.push(o):e.event_type==="link.removed"&&(t.links=t.links.filter(a=>$u(a)!==$u(o)))}function Tj(t,e,n){let r=e.payload_json||{};if(e.event_type==="link.added"||e.event_type==="link.removed"){SA(t,e),t.updated_at_utc=e.recorded_at_utc;return}let s=rt(e.base_revision);if(s!==t.revision){n.push({code:"DIVERGENT_REVISION",planKey:t.plan_key,eventId:e.event_id,expectedRevision:t.revision,baseRevision:s});return}e.event_type==="plan.status_changed"?t.status=r.status||t.status:(e.event_type==="document.added"||e.event_type==="document.superseded")&&(t.current_document_path=r.path||t.current_document_path),t.revision+=1,t.updated_at_utc=e.recorded_at_utc}function Aj(t,e,n){let r=new Set(["task.claimed","task.status_changed","task.done","task.cancelled","task.assigned","task.updated","task.blocked","task.unblocked"]);if(e.event_type==="link.added"||e.event_type==="link.removed"){SA(t,e),t.events.push(e),t.updated_at_utc=e.recorded_at_utc;return}let s=rt(e.base_revision);if(r.has(e.event_type)&&s!==t.revision){n.push({code:e.event_type==="task.claimed"?"DOUBLE_CLAIM":"DIVERGENT_REVISION",taskKey:t.task_key,eventId:e.event_id,expectedRevision:t.revision,baseRevision:s});return}let i=e.payload_json||{};e.event_type==="task.claimed"?(t.status="in_progress",t.claimant=i.claimant||e.writer_actor_id):e.event_type==="task.status_changed"||e.event_type==="task.done"||e.event_type==="task.cancelled"?(t.status=i.status||(e.event_type==="task.cancelled"?"cancelled":"done"),"claimant"in i&&(t.claimant=i.claimant)):e.event_type==="task.blocked"?(t.blocked=!0,t.blocker=i.reason||""):e.event_type==="task.unblocked"?(t.blocked=!1,t.blocker=""):e.event_type==="worklog.added"?t.actual_seconds+=rt(i.durationSeconds):e.event_type==="task.assigned"?t.assignee=i.assignee||"":e.event_type==="task.updated"&&(i.estimateSeconds!==void 0&&(t.estimate_seconds=String(rt(i.estimateSeconds))),i.estimateAiSeconds!==void 0&&(t.estimate_ai_seconds=String(rt(i.estimateAiSeconds))),i.title!==void 0&&(t.title=String(i.title)),i.description!==void 0&&(t.description_json={text:String(i.description)})),t.events.push(e),r.has(e.event_type)&&(t.revision+=1),t.updated_at_utc=e.recorded_at_utc}function ah(t,e){return(e==="decision"?zU:JU).includes(String(t||""))}function ea(t,e){let n={plan:["plan_id","plan_key"],task:["task_id","task_key"],usecase:["usecase_id","usecase_key"],testcase:["testcase_id","testcase_key"],decision:["decision_id","decision_key"]},[r,s]=n[e]||n.task;return{entity_type:e,entity_id:t[r],key:t[s],status:t.status}}function wj(t,e){let n=new Set,r=new Set;function s(i,o){if(n.has(i)){e.push({code:"DEPENDENCY_CYCLE",path:[...o,i]});return}if(!r.has(i)){n.add(i);for(let a of t.get(i)||[])s(a,[...o,i]);n.delete(i),r.add(i)}}for(let i of t.keys())s(i,[])}function TA(t,e,n,r={},s=[]){let i=new Map;for(let u of t)i.set(u.plan_id,{entity:u,entityType:"plan"});for(let u of e)i.set(u.task_id,{entity:u,entityType:"task"});for(let u of r.usecases||[])i.set(u.usecase_id,{entity:u,entityType:"usecase"});for(let u of r.testcases||[])i.set(u.testcase_id,{entity:u,entityType:"testcase"});for(let u of s)i.set(u.decision_id,{entity:u,entityType:"decision"});let o=new Map;for(let{entity:u,entityType:d}of i.values())for(let l of u.links||[])if(l.target_entity_id===ea(u,d).entity_id&&n.push({code:"SELF_LINK",entityType:d,key:ea(u,d).key,type:l.type}),!i.has(l.target_entity_id)&&l.type!=="external"&&n.push({code:"ORPHAN_LINK",entityType:d,key:ea(u,d).key,type:l.type,targetId:l.target_entity_id,targetKeyHint:l.target_key_hint}),l.type==="blocks"&&i.has(l.target_entity_id)){let f=o.get(l.target_entity_id)||[];f.push(ea(u,d)),o.set(l.target_entity_id,f)}let a=new Map;function c(u,d){a.has(u)||a.set(u,[]),a.get(u).push(d)}for(let{entity:u,entityType:d}of i.values()){let l=ea(u,d),f=[],p=[];for(let _ of u.links||[]){if(_.type!=="depends_on")continue;let h=i.get(_.target_entity_id),m={type:_.type,target_entity_type:_.target_entity_type,target_entity_id:_.target_entity_id,target_key:h?.entityType==="plan"?h.entity.plan_key:h?.entityType==="usecase"?h.entity.usecase_key:h?.entityType==="testcase"?h.entity.testcase_key:h?.entity.task_key||_.target_key_hint,target_status:h?.entity.status||"",met:h?ah(h.entity.status,h.entityType):!1};f.push(m),c(l.entity_id,_.target_entity_id),m.met||p.push(m)}for(let _ of o.get(l.entity_id)||[]){c(l.entity_id,_.entity_id);let h={type:"blocked_by",target_entity_type:_.entity_type,target_entity_id:_.entity_id,target_key:_.key,target_status:_.status,met:ah(_.status,_.entity_type)};f.push(h),h.met||p.push(h)}u.depends_on=f,u.unmet_dependencies=p,u.dependency_ready=p.length===0,d==="task"?u.ready=u.status==="todo"&&!u.blocked&&u.dependency_ready:u.ready=!["completed","cancelled"].includes(u.status)&&u.dependency_ready,ah(u.status,d)&&p.length>0&&d==="task"&&n.push({code:"DONE_WITH_UNMET_DEPENDENCY",taskKey:u.task_key,unmet:p.map(_=>_.target_key)})}wj(a,n)}function vj(t,e,n){let r=(t||[]).find(i=>String(i.key||"").toLowerCase()==="title");if(r&&r.value)return String(r.value).trim();let s=String(e||"").match(/^#\s+(.+?)\s*$/m);return s?s[1].trim():n||""}function Lj(t,e){let n=se.join(t,"documents"),r=e.plan_key;return ki(n).filter(s=>s.isFile()&&s.name.endsWith(".md")).map(s=>{let i=se.join(n,s.name),o=Be.readFileSync(i,"utf8"),a=s.name.match(/\.(plan|solution|decision|note)\.md$/),c=a?a[1]:"note",u=mA(s.name,r),{html:d,meta:l}=WU(o),f=vj(l,o,u||c);return{name:s.name,slug:u,title:f,label:f,path:se.relative(t,i).split(se.sep).join("/"),type:c,markdown:o,meta:l,html:d,current:e.initial_document_path.endsWith(s.name)}}).sort((s,i)=>s.name.localeCompare(i.name))}async function Cj(t,e,n){let r=ys(n.root,t),s=e.type||"solution";if(!["plan","solution","decision","note"].includes(s))throw fn(ne("ERR_DOCUMENT_TYPE_INVALID"),{type:s});let i=String(e.document||"");if(!i.trim())throw fn(ne("ERR_DOCUMENT_EMPTY"));let o=xA(e,i),a=new Date(n.now||Date.now()),c=xh(a,t,s,o),u=se.join("documents",c).split(se.sep).join("/"),d=se.join(r,u);await na(d,i,{mustNotExist:!0});let l=await sa(t,{type:"document.added",baseRevision:e.baseRevision,payload:{type:s,name:c,slug:o,path:u,sha256:fA("sha256").update(i).digest("hex")}},n);return{planKey:t,type:s,name:c,slug:o,path:d,eventId:l.event_id}}function bs(t){let e=[],n=[],r=[],s=[];for(let l of hh(t)){let[f]=pn(ra(l),Kr),p={...f,status:f.initial_status,revision:1,plan_dir:l,project_key:gA(f,l,t),current_document_path:f.initial_document_path,updated_at_utc:f.created_at_utc,documents:[],links:[],depends_on:[],unmet_dependencies:[],dependency_ready:!0,ready:!0,task_count:0,done_count:0,progress:0,estimate_human_seconds:0,estimate_ai_seconds:0,remaining_human_seconds:0,remaining_ai_seconds:0,remaining_human_man_days:0,remaining_ai_man_days:0};p.documents=Lj(l,p),e.push(p);for(let _ of uh(se.join(l,"tasks"),".tasks.csv",Es))n.push({..._,status:_.initial_status,assignee:_.initial_assignee_actor_id,claimant:"",blocked:!1,blocker:"",actual_seconds:0,revision:1,events:[],links:[],depends_on:[],unmet_dependencies:[],dependency_ready:!0,ready:!0,updated_at_utc:_.created_at_utc});r.push(...uh(se.join(l,"events"),".events.csv",Fu))}function i(l,f,p){let _=new Set;for(let h of l)_.has(h[f])&&s.push({code:p,field:f,value:h[f]}),_.add(h[f])}i(e,"plan_id","DUPLICATE_INTERNAL_ID"),i(e,"plan_key","DUPLICATE_HUMAN_KEY"),i(n,"task_id","DUPLICATE_INTERNAL_ID"),i(n,"task_key","DUPLICATE_HUMAN_KEY");let o=new Map;for(let l of n){let f=ch(l.external_ref_json);if(!f)continue;let p=o.get(l.plan_key)||new Map;p.has(f)?s.push({code:"DUPLICATE_EXTERNAL_REF",planKey:l.plan_key,ref:f,taskKeys:[p.get(f),l.task_key]}):p.set(f,l.task_key),o.set(l.plan_key,p)}let a=new Map(e.map(l=>[l.plan_id,l]));for(let l of n)a.has(l.plan_id)||s.push({code:"ORPHAN_PLAN",taskKey:l.task_key,planId:l.plan_id});let c=new Map(n.map(l=>[l.task_id,l]));r.sort((l,f)=>l.entity_id.localeCompare(f.entity_id)||rt(l.base_revision)-rt(f.base_revision)||l.writer_lane_id.localeCompare(f.writer_lane_id)||rt(l.lane_event_seq)-rt(f.lane_event_seq)||l.event_id.localeCompare(f.event_id)).forEach(l=>{if(l.entity_type==="task"){let f=c.get(l.entity_id);if(!f){s.push({code:"ORPHAN_EVENT",eventId:l.event_id,entityId:l.entity_id});return}Aj(f,l,s)}else if(l.entity_type==="plan"){let f=a.get(l.entity_id);if(!f){s.push({code:"ORPHAN_EVENT",eventId:l.event_id,entityId:l.entity_id});return}Tj(f,l,s)}});for(let l of e){let f=n.filter(h=>h.plan_id===l.plan_id),p=f.filter(h=>h.status!=="cancelled"),_=p.filter(h=>h.status!=="done");l.status_from_events=l.status,l.status=kj(l.status_from_events,p),l.task_count=f.length,l.done_count=f.filter(h=>h.status==="done").length,l.progress=p.length===0?0:Math.round(p.filter(h=>h.status==="done").length/p.length*100),l.estimate_human_seconds=Bn(p,"estimate_seconds"),l.estimate_ai_seconds=Bn(p,"estimate_ai_seconds"),l.remaining_human_seconds=Bn(_,"estimate_seconds"),l.remaining_ai_seconds=Bn(_,"estimate_ai_seconds"),l.remaining_human_man_days=Ku(l.remaining_human_seconds),l.remaining_ai_man_days=Ku(l.remaining_ai_seconds),l.documents.forEach(h=>{h.current=h.path===l.current_document_path,h.type==="plan"&&(h.meta=ih(h.meta,"status",l.status),h.meta=ih(h.meta,"effort",Gu(l.estimate_human_seconds)),h.meta=ih(h.meta,"effort_ai",Gu(l.estimate_ai_seconds)))})}for(let l of n)l.status==="done"&&l.blocked&&s.push({code:"DONE_WITH_ACTIVE_BLOCKER",taskKey:l.task_key});let u=jr().loadProjectReadModel(t),d=vi().loadDecisionReadModel(t);return TA(e,n,s,u,d.decisions),{generated_at_utc:new Date().toISOString(),plans:e.sort((l,f)=>f.created_at_utc.localeCompare(l.created_at_utc)),tasks:n.sort((l,f)=>f.updated_at_utc.localeCompare(l.updated_at_utc)),events:r.concat(d.events),conflicts:s.concat(d.conflicts),projects:u.projects,modules:u.modules,moduleStats:u.moduleStats,usecases:u.usecases,testcases:u.testcases,decisions:d.decisions,summary:AA(e,n,s,u,d)}}var fh=480*60;function Bn(t,e){return t.reduce((n,r)=>n+rt(r[e]),0)}function Ku(t){return Math.round(t/fh*10)/10}function Gu(t){let e=rt(t);return e<=0?"0d":e<3600?`${Math.max(1,Math.round(e/60))}m`:e<fh?`${Math.round(e/3600*10)/10}h`:`${Math.round(e/fh*10)/10}d`}function kj(t,e){let n=String(t||"draft");return n==="cancelled"||!Array.isArray(e)||e.length===0?n:e.every(s=>s.status==="done")?"completed":n==="completed"?"active":n}function AA(t,e,n,r={},s={}){let i=e.filter(A=>A.status!=="cancelled"),o=i.filter(A=>A.status==="done"),a=i.filter(A=>A.status!=="done"&&A.status!=="cancelled"),c=i.length,u=o.length,d=Bn(i,"estimate_seconds"),l=Bn(i,"estimate_ai_seconds"),f=Bn(o,"estimate_seconds"),p=Bn(o,"estimate_ai_seconds"),_=Bn(a,"estimate_seconds"),h=Bn(a,"estimate_ai_seconds"),m=r.moduleStats||[],E=s.decisions||[],x=m.reduce((A,O)=>A+O.usecase_total,0),S=m.reduce((A,O)=>A+O.usecase_done,0),v=m.reduce((A,O)=>A+O.testcase_total,0),C=m.reduce((A,O)=>A+O.testcase_done,0);return{plans:t.length,projects:(r.projects||[]).length,modules:(r.modules||[]).length,tasks:e.length,tasksTotal:c,tasksDone:u,tasksProgressPercent:c===0?0:Math.round(u/c*100),usecaseTotal:x,usecaseDone:S,usecaseProgressPercent:x===0?0:Math.round(S/x*100),testcaseTotal:v,testcaseDone:C,testcaseProgressPercent:v===0?0:Math.round(C/v*100),done:u,inProgress:e.filter(A=>A.status==="in_progress").length,bugs:e.filter(A=>A.type==="bug").length,ready:e.filter(A=>A.ready).length,unmetDependencies:e.filter(A=>A.unmet_dependencies.length>0).length,conflicts:n.length,estimateHumanSecondsTotal:d,estimateHumanSecondsDone:f,estimateAiSecondsTotal:l,estimateAiSecondsDone:p,remainingHumanSeconds:_,remainingAiSeconds:h,remainingHumanManDays:Ku(_),remainingAiManDays:Ku(h),decisionsTotal:E.length,decisionsOpen:E.filter(A=>A.status==="open").length,decisionsClosed:E.filter(A=>A.status==="closed").length}}function Rj(t){let e=bs(t),{verifyProjects:n}=jr(),{verifyDecisions:r}=vi(),s=n(t),i=r(t),o=[...e.conflicts,...s.errors,...i.errors];return{ok:o.length===0,errors:o,summary:e.summary}}function dA(t,e){let{findEntityByKey:n}=jr(),{loadDecisionReadModel:r}=vi(),s=n(t,e);if(s)return s;let o=r(t).decisions.find(d=>d.decision_key===e);if(o)return{entity_type:"decision",entity_id:o.decision_id,key:o.decision_key};let a=bs(t),c=a.tasks.find(d=>d.task_key===e);if(c)return{entity_type:"task",entity_id:c.task_id,key:c.task_key,plan_key:c.plan_key};let u=a.plans.find(d=>d.plan_key===e);return u?{entity_type:"plan",entity_id:u.plan_id,key:u.plan_key,plan_key:u.plan_key}:null}function wA(t,e){let n=dA(t,e);if(n)return n;let{resolveAcrossStores:r}=Mr(),s=r(t,i=>dA(i,e));if(s)return s;throw new dn("PAN_ENTITY_NOT_FOUND",ne("ERR_LINK_TARGET_NOT_FOUND",{key:e}),{targetKey:e},3)}async function vA(t,e,n){let r=String(e.type||"depends_on");if(!qu.includes(r))throw fn(ne("ERR_LINK_TYPE_INVALID",{type:r}),{type:r,allowed:qu});if(!e.targetKey)throw fn(ne("ERR_LINK_TARGET_REQUIRED"));let s=wA(n.root,e.targetKey),o={type:"link.added",payload:{type:r,target_entity_type:s.entity_type,target_entity_id:s.entity_id,target_key_hint:s.key,note:e.note||""},actorKind:e.actorKind,actorCode:e.actorCode,idempotencyKey:e.idempotencyKey};return t.surface==="plan"?sa(t.key,o,n):Eh(t.key,o,n)}async function Nj(t,e,n){let r=String(e.type||"depends_on");if(!qu.includes(r))throw fn(ne("ERR_LINK_TYPE_INVALID",{type:r}),{type:r});if(!e.targetKey)throw fn(ne("ERR_LINK_TARGET_REQUIRED"));let s=wA(n.root,e.targetKey),o={type:"link.removed",payload:{type:r,target_entity_type:s.entity_type,target_entity_id:s.entity_id,target_key_hint:s.key},actorKind:e.actorKind,actorCode:e.actorCode,idempotencyKey:e.idempotencyKey};return t.surface==="plan"?sa(t.key,o,n):Eh(t.key,o,n)}function Ij(t,e){let n=(t.acceptance_json||[]).map(a=>`- ${a}`).join(`
810
816
  `),r=(t.verification_json||[]).map(a=>`- ${a}`).join(`
811
817
  `),s=n||ne("TASK_PROMPT_ACCEPTANCE_DEFAULT"),i=r||ne("TASK_PROMPT_VERIFICATION_DEFAULT"),o=(t.depends_on||[]).map(a=>`- ${a.type}: ${a.target_key} (${a.target_status||"?"}${a.met?", met":", unmet"})`).join(`
812
818
  `)||ne("TASK_PROMPT_DEPENDS_NONE");return[`# ${ne("TASK_PROMPT_TITLE",{key:t.task_key})}`,"",ne("TASK_PROMPT_META_PLAN",{planKey:e.plan_key,planTitle:e.title}),ne("TASK_PROMPT_META_PROJECT",{project:t.project_code}),ne("TASK_PROMPT_META_STATUS",{status:t.status}),ne("TASK_PROMPT_META_REVISION",{revision:t.revision}),ne("TASK_PROMPT_META_READY",{ready:t.ready?"yes":"no"}),"",`## ${ne("TASK_PROMPT_REQUIREMENTS")}`,"",t.description_json.text||t.title,"",`## ${ne("TASK_PROMPT_DEPENDS")}`,"",o,"",`## ${ne("TASK_PROMPT_ACCEPTANCE")}`,"",s,"",`## ${ne("TASK_PROMPT_VERIFICATION")}`,"",i,"",ne("TASK_PROMPT_FOOTER"),""].join(`
@@ -4972,7 +4978,7 @@ ${s$}`)}async function c$({root:t,port:e=0,portScan:n=!1,portBusyMessage:r="",op
4972
4978
  `),0}throw He(L("ERR_INVALID_PLAN_COMMAND",{command:t}))}async function H$(t,e,n,r){let{flags:s}=e,i=r.stdout;if(t==="add"||t==="bug"){let l=await _$({planKey:s.plan,title:s.title,description:s.description,type:t==="bug"?"bug":s.type,projectCode:s.project,projectKey:s["project-key"],repoName:s["repo-name"],repoPath:s["repo-path"],workPath:s["work-path"],actorKind:s["actor-kind"],actorCode:s["actor-code"],phaseId:s.phase,priority:s.priority,difficulty:s.difficulty,estimateSeconds:s.estimate?ia(s.estimate):0,estimateAiSeconds:s["estimate-ai"]?ia(s["estimate-ai"]):0,externalRef:oa(s.ref,s["ref-url"]),acceptance:Ut(s.acceptance,[]),verification:Ut(s.verification,[]),tags:Ut(s.tags,[]),dependsOn:s["depends-on"]||s.depends||[],idempotencyKey:s["idempotency-key"]},be(n,s,r));if(s.json)Y(i,l);else{let f=l.upserted?` (${L("MSG_TASK_UPSERTED")})`:"";i.write(`${L("MSG_TASK_CREATED",{key:l.task_key})}${f}
4973
4979
  `)}return 0}let o=Ri(n,r);if(t==="list"){let l=o.tasks.map(f=>({...f,external_ref:aa(f.external_ref_json)}));return s.plan&&(l=l.filter(f=>f.plan_key===s.plan)),s.status&&(l=l.filter(f=>f.status===s.status)),s.type&&(l=l.filter(f=>f.type===s.type)),s.ready&&(l=l.filter(f=>f.ready)),s.json?Y(i,l):cr(i,l,["task_key","type","status","ready","external_ref","title"]),0}let a=e.positionals[2]||s.task,c=o.tasks.find(l=>l.task_key===a);if(!c)throw new hn("PAN_ENTITY_NOT_FOUND",L("ERR_TASK_NOT_FOUND",{key:a}),{},3);if(t==="show")return s.json?Y(i,c):i.write(`${c.task_key} ${c.status} ${c.title}
4974
4980
  `),0;if(t==="prompt"){let l=o.plans.find(p=>p.plan_id===c.plan_id),f=g$(c,l);return s.json?Y(i,{prompt:f}):i.write(f),0}if(t==="link"||t==="unlink"){let l=s.target||s.to||e.positionals[3],p=await(t==="link"?ZA:ew)({surface:"task",key:a},{type:s.type||"depends_on",targetKey:l,note:s.note||"",actorKind:s["actor-kind"],actorCode:s["actor-code"],idempotencyKey:s["idempotency-key"]},be(n,s,r));return s.json?Y(i,p):i.write(`${L(t==="link"?"MSG_LINK_ADDED":"MSG_LINK_REMOVED",{source:a,type:s.type||"depends_on",target:l})}
4975
- `),0}let u;if(t==="update"){let l=!!s.estimate,f=!!s["estimate-ai"];if(!l&&!f)throw He(L("ERR_TASK_UPDATE_NEEDS_ESTIMATE"));let p={};l&&(p.estimateSeconds=ia(s.estimate)),f&&(p.estimateAiSeconds=ia(s["estimate-ai"])),u={type:"task.updated",payload:p}}else t==="assign"?u={type:"task.assigned",payload:{assignee:s.assignee||""}}:t==="claim"?u={type:"task.claimed",payload:{claimant:s.actor||""}}:t==="release"?u={type:"task.status_changed",payload:{status:"todo",claimant:""}}:t==="block"?u={type:"task.blocked",payload:{reason:s.reason||""}}:t==="unblock"?u={type:"task.unblocked",payload:{}}:t==="done"?u={type:"task.done",payload:{status:"done",verify:s.verify||""}}:t==="cancel"?u={type:"task.cancelled",payload:{status:"cancelled",reason:s.reason||""}}:t==="reopen"?u={type:"task.status_changed",payload:{status:"todo",reason:s.reason||""}}:t==="status"?u={type:"task.status_changed",payload:{status:s.status}}:t==="worklog"&&(u={type:"worklog.added",payload:{durationSeconds:ia(s.duration),source:s.source||"reported"}});if(!u)throw He(L("ERR_INVALID_TASK_COMMAND",{command:t}));let d=await p$(a,{...u,baseRevision:Number(s["base-revision"]||c.revision),actorKind:s["actor-kind"],actorCode:s["actor-code"],idempotencyKey:s["idempotency-key"]},be(n,s,r));return s.json?Y(i,d):i.write(`${L("MSG_TASK_EVENT_LOGGED",{type:d.event_type,key:a})}
4981
+ `),0}let u;if(t==="update"){let l=!!s.estimate,f=!!s["estimate-ai"],p=s.title!==void 0,_=s.description!==void 0;if(!l&&!f&&!p&&!_)throw He(L("ERR_TASK_UPDATE_NEEDS_FIELD"));let h={};l&&(h.estimateSeconds=ia(s.estimate)),f&&(h.estimateAiSeconds=ia(s["estimate-ai"])),p&&(h.title=s.title),_&&(h.description=s.description),u={type:"task.updated",payload:h}}else t==="assign"?u={type:"task.assigned",payload:{assignee:s.assignee||""}}:t==="claim"?u={type:"task.claimed",payload:{claimant:s.actor||""}}:t==="release"?u={type:"task.status_changed",payload:{status:"todo",claimant:""}}:t==="block"?u={type:"task.blocked",payload:{reason:s.reason||""}}:t==="unblock"?u={type:"task.unblocked",payload:{}}:t==="done"?u={type:"task.done",payload:{status:"done",verify:s.verify||""}}:t==="cancel"?u={type:"task.cancelled",payload:{status:"cancelled",reason:s.reason||""}}:t==="reopen"?u={type:"task.status_changed",payload:{status:"todo",reason:s.reason||""}}:t==="status"?u={type:"task.status_changed",payload:{status:s.status}}:t==="worklog"&&(u={type:"worklog.added",payload:{durationSeconds:ia(s.duration),source:s.source||"reported"}});if(!u)throw He(L("ERR_INVALID_TASK_COMMAND",{command:t}));let d=await p$(a,{...u,baseRevision:Number(s["base-revision"]||c.revision),actorKind:s["actor-kind"],actorCode:s["actor-code"],idempotencyKey:s["idempotency-key"]},be(n,s,r));return s.json?Y(i,d):i.write(`${L("MSG_TASK_EVENT_LOGGED",{type:d.event_type,key:a})}
4976
4982
  `),0}async function V$(t,e,n,r){let{flags:s}=e,i=r.stdout;if(t==="init"){let o=await A$(n);return s.json?Y(i,o):i.write(`${L("MSG_PROJECT_INITIALIZED",{root:o.root})}
4977
4983
  `),0}if(t==="module"){let o=e.positionals[2];if(o==="add"){let a=await y$({projectKey:s.project,slug:s.slug,title:s.title,description:s.description,status:s.status,priority:s.priority,tags:Ut(s.tags,[])},be(n,s,r));return s.json?Y(i,a):i.write(`${L("MSG_MODULE_CREATED",{key:a.module_key})}
4978
4984
  `),0}if(o==="list"){let c=Ts(n,r).modules;return s.project&&(c=c.filter(u=>u.project_key===s.project)),s.json?Y(i,c):cr(i,c,["module_key","status","title"]),0}throw He(L("ERR_INVALID_PROJECT_MODULE_COMMAND",{action:o}))}if(t==="add"){X$(s.key||s.project,r);let o=await b$({key:s.key||s.project,title:s.title,description:s.description,status:s.status,tags:Ut(s.tags,[])},be(n,s,r));return s.json?Y(i,o):(o.store_initialized&&i.write(`${L("MSG_PROJECT_INITIALIZED",{root:Gr.dirname(o.project_dir)})}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "pan-stack-cli",
3
- "version": "0.2.3",
3
+ "version": "0.2.4",
4
4
  "description": "PAN Stack CLI — multi-repo git and project commands from .project.yaml",
5
5
  "license": "MIT",
6
6
  "bin": {