@jutge.org/toolkit 4.4.40 → 4.4.42
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.
- package/dist/index.js +2 -2
- package/package.json +1 -1
package/dist/index.js
CHANGED
|
@@ -216,7 +216,7 @@ Expecting `+J_.join(", ")+", got '"+(this.terminals_[E]||E)+"'";else k_="Parse e
|
|
|
216
216
|
return undefined
|
|
217
217
|
}
|
|
218
218
|
`.trim()},blockValue:function($){var w=this.aliasable("container.hooks.blockHelperMissing"),f=[this.contextName(0)];this.setupHelperArgs($,0,f);var K=this.popStack();f.splice(1,0,K),this.push(this.source.functionCall(w,"call",f))},ambiguousBlockValue:function(){var $=this.aliasable("container.hooks.blockHelperMissing"),w=[this.contextName(0)];this.setupHelperArgs("",0,w,!0),this.flushInline();var f=this.topStack();w.splice(1,0,f),this.pushSource(["if (!",this.lastHelper,") { ",f," = ",this.source.functionCall($,"call",w),"}"])},appendContent:function($){if(this.pendingContent)$=this.pendingContent+$;else this.pendingLocation=this.source.currentLocation;this.pendingContent=$},append:function(){if(this.isInline())this.replaceStack(function(w){return[" != null ? ",w,' : ""']}),this.pushSource(this.appendToBuffer(this.popStack()));else{var $=this.popStack();if(this.pushSource(["if (",$," != null) { ",this.appendToBuffer($,void 0,!0)," }"]),this.environment.isSimple)this.pushSource(["else { ",this.appendToBuffer("''",void 0,!0)," }"])}},appendEscaped:function(){this.pushSource(this.appendToBuffer([this.aliasable("container.escapeExpression"),"(",this.popStack(),")"]))},getContext:function($){this.lastContext=$},pushContext:function(){this.pushStackLiteral(this.contextName(this.lastContext))},lookupOnContext:function($,w,f,K){var z=0;if(!K&&this.options.compat&&!this.lastContext)this.push(this.depthedLookup($[z++]));else this.pushContext();this.resolvePath("context",$,z,w,f)},lookupBlockParam:function($,w){this.useBlockParams=!0,this.push(["blockParams[",$[0],"][",$[1],"]"]),this.resolvePath("context",w,1)},lookupData:function($,w,f){if(!$)this.pushStackLiteral("data");else this.pushStackLiteral("container.data(data, "+$+")");this.resolvePath("data",w,0,!0,f)},resolvePath:function($,w,f,K,z){var P=this;if(this.options.strict||this.options.assumeObjects){this.push(VN6(this.options.strict&&z,this,w,f,$));return}var D=w.length;for(;f<D;f++)this.replaceStack(function(Y){var J=P.nameLookup(Y,w[f],$);if(!K)return[" != null ? ",J," : ",Y];else return[" && ",J]})},resolvePossibleLambda:function(){this.push([this.aliasable("container.lambda"),"(",this.popStack(),", ",this.contextName(0),")"])},pushStringParam:function($,w){if(this.pushContext(),this.pushString(w),w!=="SubExpression")if(typeof $==="string")this.pushString($);else this.pushStackLiteral($)},emptyHash:function($){if(this.trackIds)this.push("{}");if(this.stringParams)this.push("{}"),this.push("{}");this.pushStackLiteral($?"undefined":"{}")},pushHash:function(){if(this.hash)this.hashes.push(this.hash);this.hash={values:{},types:[],contexts:[],ids:[]}},popHash:function(){var $=this.hash;if(this.hash=this.hashes.pop(),this.trackIds)this.push(this.objectLiteral($.ids));if(this.stringParams)this.push(this.objectLiteral($.contexts)),this.push(this.objectLiteral($.types));this.push(this.objectLiteral($.values))},pushString:function($){this.pushStackLiteral(this.quotedString($))},pushLiteral:function($){this.pushStackLiteral($)},pushProgram:function($){if($!=null)this.pushStackLiteral(this.programExpression($));else this.pushStackLiteral(null)},registerDecorator:function($,w){var f=this.nameLookup("decorators",w,"decorator"),K=this.setupHelperArgs(w,$);this.decorators.push(["fn = ",this.decorators.functionCall(f,"",["fn","props","container",K])," || fn;"])},invokeHelper:function($,w,f){var K=this.popStack(),z=this.setupHelper($,w),P=[];if(f)P.push(z.name);if(P.push(K),!this.options.strict)P.push(this.aliasable("container.hooks.helperMissing"));var D=["(",this.itemsSeparatedBy(P,"||"),")"],Y=this.source.functionCall(D,"call",z.callParams);this.push(Y)},itemsSeparatedBy:function($,w){var f=[];f.push($[0]);for(var K=1;K<$.length;K++)f.push(w,$[K]);return f},invokeKnownHelper:function($,w){var f=this.setupHelper($,w);this.push(this.source.functionCall(f.name,"call",f.callParams))},invokeAmbiguous:function($,w){this.useRegister("helper");var f=this.popStack();this.emptyHash();var K=this.setupHelper(0,$,w),z=this.lastHelper=this.nameLookup("helpers",$,"helper"),P=["(","(helper = ",z," || ",f,")"];if(!this.options.strict)P[0]="(helper = ",P.push(" != null ? helper : ",this.aliasable("container.hooks.helperMissing"));this.push(["(",P,K.paramsInit?["),(",K.paramsInit]:[],"),","(typeof helper === ",this.aliasable('"function"')," ? ",this.source.functionCall("helper","call",K.callParams)," : helper))"])},invokePartial:function($,w,f){var K=[],z=this.setupParams(w,1,K);if($)w=this.popStack(),delete z.name;if(f)z.indent=JSON.stringify(f);if(z.helpers="helpers",z.partials="partials",z.decorators="container.decorators",!$)K.unshift(this.nameLookup("partials",w,"partial"));else K.unshift(w);if(this.options.compat)z.depths="depths";z=this.objectLiteral(z),K.push(z),this.push(this.source.functionCall("container.invokePartial","",K))},assignToHash:function($){var w=this.popStack(),f=void 0,K=void 0,z=void 0;if(this.trackIds)z=this.popStack();if(this.stringParams)K=this.popStack(),f=this.popStack();var P=this.hash;if(f)P.contexts[$]=f;if(K)P.types[$]=K;if(z)P.ids[$]=z;P.values[$]=w},pushId:function($,w,f){if($==="BlockParam")this.pushStackLiteral("blockParams["+w[0]+"].path["+w[1]+"]"+(f?" + "+JSON.stringify("."+f):""));else if($==="PathExpression")this.pushString(w);else if($==="SubExpression")this.pushStackLiteral("true");else this.pushStackLiteral("null")},compiler:YD,compileChildren:function($,w){var f=$.children,K=void 0,z=void 0;for(var P=0,D=f.length;P<D;P++){K=f[P],z=new this.compiler;var Y=this.matchExistingProgram(K);if(Y==null){this.context.programs.push("");var J=this.context.programs.length;K.index=J,K.name="program"+J,this.context.programs[J]=z.compile(K,w,this.context,!this.precompile),this.context.decorators[J]=z.decorators,this.context.environments[J]=K,this.useDepths=this.useDepths||z.useDepths,this.useBlockParams=this.useBlockParams||z.useBlockParams,K.useDepths=this.useDepths,K.useBlockParams=this.useBlockParams}else K.index=Y.index,K.name="program"+Y.index,this.useDepths=this.useDepths||Y.useDepths,this.useBlockParams=this.useBlockParams||Y.useBlockParams}},matchExistingProgram:function($){for(var w=0,f=this.context.environments.length;w<f;w++){var K=this.context.environments[w];if(K&&K.equals($))return K}},programExpression:function($){var w=this.environment.children[$],f=[w.index,"data",w.blockParams];if(this.useBlockParams||this.useDepths)f.push("blockParams");if(this.useDepths)f.push("depths");return"container.program("+f.join(", ")+")"},useRegister:function($){if(!this.registers[$])this.registers[$]=!0,this.registers.list.push($)},push:function($){if(!($ instanceof DD))$=this.source.wrap($);return this.inlineStack.push($),$},pushStackLiteral:function($){this.push(new DD($))},pushSource:function($){if(this.pendingContent)this.source.push(this.appendToBuffer(this.source.quotedString(this.pendingContent),this.pendingLocation)),this.pendingContent=void 0;if($)this.source.push($)},replaceStack:function($){var w=["("],f=void 0,K=void 0,z=void 0;if(!this.isInline())throw new kd.default("replaceStack on non-inline");var P=this.popStack(!0);if(P instanceof DD)f=[P.value],w=["(",f],z=!0;else{K=!0;var D=this.incrStack();w=["((",this.push(D)," = ",P,")"],f=this.topStack()}var Y=$.call(this,f);if(!z)this.popStack();if(K)this.stackSlot--;this.push(w.concat(Y,")"))},incrStack:function(){if(this.stackSlot++,this.stackSlot>this.stackVars.length)this.stackVars.push("stack"+this.stackSlot);return this.topStackName()},topStackName:function(){return"stack"+this.stackSlot},flushInline:function(){var $=this.inlineStack;this.inlineStack=[];for(var w=0,f=$.length;w<f;w++){var K=$[w];if(K instanceof DD)this.compileStack.push(K);else{var z=this.incrStack();this.pushSource([z," = ",K,";"]),this.compileStack.push(z)}}},isInline:function(){return this.inlineStack.length},popStack:function($){var w=this.isInline(),f=(w?this.inlineStack:this.compileStack).pop();if(!$&&f instanceof DD)return f.value;else{if(!w){if(!this.stackSlot)throw new kd.default("Invalid stack pop");this.stackSlot--}return f}},topStack:function(){var $=this.isInline()?this.inlineStack:this.compileStack,w=$[$.length-1];if(w instanceof DD)return w.value;else return w},contextName:function($){if(this.useDepths&&$)return"depths["+$+"]";else return"depth"+$},quotedString:function($){return this.source.quotedString($)},objectLiteral:function($){return this.source.objectLiteral($)},aliasable:function($){var w=this.aliases[$];if(w)return w.referenceCount++,w;return w=this.aliases[$]=this.source.wrap($),w.aliasable=!0,w.referenceCount=1,w},setupHelper:function($,w,f){var K=[],z=this.setupHelperArgs(w,$,K,f),P=this.nameLookup("helpers",w,"helper"),D=this.aliasable(this.contextName(0)+" != null ? "+this.contextName(0)+" : (container.nullContext || {})");return{params:K,paramsInit:z,name:P,callParams:[D].concat(K)}},setupParams:function($,w,f){var K={},z=[],P=[],D=[],Y=!f,J=void 0;if(Y)f=[];if(K.name=this.quotedString($),K.hash=this.popStack(),this.trackIds)K.hashIds=this.popStack();if(this.stringParams)K.hashTypes=this.popStack(),K.hashContexts=this.popStack();var Z=this.popStack(),k=this.popStack();if(k||Z)K.fn=k||"container.noop",K.inverse=Z||"container.noop";var W=w;while(W--){if(J=this.popStack(),f[W]=J,this.trackIds)D[W]=this.popStack();if(this.stringParams)P[W]=this.popStack(),z[W]=this.popStack()}if(Y)K.args=this.source.generateArray(f);if(this.trackIds)K.ids=this.source.generateArray(D);if(this.stringParams)K.types=this.source.generateArray(P),K.contexts=this.source.generateArray(z);if(this.options.data)K.data="data";if(this.useBlockParams)K.blockParams="blockParams";return K},setupHelperArgs:function($,w,f,K){var z=this.setupParams($,w,f);if(z.loc=JSON.stringify(this.source.currentLocation),z=this.objectLiteral(z),K)return this.useRegister("options"),f.push("options"),["options=",z];else if(f)return f.push(z),"";else return z}};(function(){var q="break else new var case finally return void catch for switch while continue function this with default if throw delete in try do instanceof typeof abstract enum int short boolean export interface static byte extends long super char final native synchronized class float package throws const goto private transient debugger implements protected volatile double import public let yield await null true false".split(" "),$=YD.RESERVED_WORDS={};for(var w=0,f=q.length;w<f;w++)$[q[w]]=!0})();YD.isValidJavaScriptVariableName=function(q){return!YD.RESERVED_WORDS[q]&&/^[a-zA-Z_$][0-9a-zA-Z_$]*$/.test(q)};function VN6(q,$,w,f,K){var z=$.popStack(),P=w.length;if(q)P--;for(;f<P;f++)z=$.nameLookup(z,w[f],K);if(q)return[$.aliasable("container.strict"),"(",z,", ",$.quotedString(w[f]),", ",JSON.stringify($.source.currentLocation)," )"];else return z}xO_.default=YD;dO_.exports=xO_.default});var nO_=G((pO_,iO_)=>{pO_.__esModule=!0;function Yk(q){return q&&q.__esModule?q:{default:q}}var hN6=ik_(),EN6=Yk(hN6),gN6=nx(),RN6=Yk(gN6),Od=zO_(),Wd=JO_(),bN6=lO_(),IN6=Yk(bN6),yN6=EG(),SN6=Yk(yN6),mN6=lx(),LN6=Yk(mN6),cN6=EN6.default.create;function rO_(){var q=cN6();return q.compile=function($,w){return Wd.compile($,w,q)},q.precompile=function($,w){return Wd.precompile($,w,q)},q.AST=RN6.default,q.Compiler=Wd.Compiler,q.JavaScriptCompiler=IN6.default,q.Parser=Od.parser,q.parse=Od.parse,q.parseWithoutProcessing=Od.parseWithoutProcessing,q}var JD=rO_();JD.create=rO_;LN6.default(JD);JD.Visitor=SN6.default;JD.default=JD;pO_.default=JD;iO_.exports=pO_.default});var aO_=G((nN6)=>{nN6.__esModule=!0;nN6.print=iN6;nN6.PrintVisitor=C4;function lN6(q){return q&&q.__esModule?q:{default:q}}var rN6=EG(),pN6=lN6(rN6);function iN6(q){return new C4().accept(q)}function C4(){this.padding=0}C4.prototype=new pN6.default;C4.prototype.pad=function(q){var $="";for(var w=0,f=this.padding;w<f;w++)$+=" ";return $+=q+`
|
|
219
|
-
`,$};C4.prototype.Program=function(q){var $="",w=q.body,f=void 0,K=void 0;if(q.blockParams){var z="BLOCK PARAMS: [";for(f=0,K=q.blockParams.length;f<K;f++)z+=" "+q.blockParams[f];z+=" ]",$+=this.pad(z)}for(f=0,K=w.length;f<K;f++)$+=this.accept(w[f]);return this.padding--,$};C4.prototype.MustacheStatement=function(q){return this.pad("{{ "+this.SubExpression(q)+" }}")};C4.prototype.Decorator=function(q){return this.pad("{{ DIRECTIVE "+this.SubExpression(q)+" }}")};C4.prototype.BlockStatement=C4.prototype.DecoratorBlock=function(q){var $="";if($+=this.pad((q.type==="DecoratorBlock"?"DIRECTIVE ":"")+"BLOCK:"),this.padding++,$+=this.pad(this.SubExpression(q)),q.program)$+=this.pad("PROGRAM:"),this.padding++,$+=this.accept(q.program),this.padding--;if(q.inverse){if(q.program)this.padding++;if($+=this.pad("{{^}}"),this.padding++,$+=this.accept(q.inverse),this.padding--,q.program)this.padding--}return this.padding--,$};C4.prototype.PartialStatement=function(q){var $="PARTIAL:"+q.name.original;if(q.params[0])$+=" "+this.accept(q.params[0]);if(q.hash)$+=" "+this.accept(q.hash);return this.pad("{{> "+$+" }}")};C4.prototype.PartialBlockStatement=function(q){var $="PARTIAL BLOCK:"+q.name.original;if(q.params[0])$+=" "+this.accept(q.params[0]);if(q.hash)$+=" "+this.accept(q.hash);return $+=" "+this.pad("PROGRAM:"),this.padding++,$+=this.accept(q.program),this.padding--,this.pad("{{> "+$+" }}")};C4.prototype.ContentStatement=function(q){return this.pad("CONTENT[ '"+q.value+"' ]")};C4.prototype.CommentStatement=function(q){return this.pad("{{! '"+q.value+"' }}")};C4.prototype.SubExpression=function(q){var $=q.params,w=[],f=void 0;for(var K=0,z=$.length;K<z;K++)w.push(this.accept($[K]));return $="["+w.join(", ")+"]",f=q.hash?" "+this.accept(q.hash):"",this.accept(q.path)+" "+$+f};C4.prototype.PathExpression=function(q){var $=q.parts.join("/");return(q.data?"@":"")+"PATH:"+$};C4.prototype.StringLiteral=function(q){return'"'+q.value+'"'};C4.prototype.NumberLiteral=function(q){return"NUMBER{"+q.value+"}"};C4.prototype.BooleanLiteral=function(q){return"BOOLEAN{"+q.value+"}"};C4.prototype.UndefinedLiteral=function(){return"UNDEFINED"};C4.prototype.NullLiteral=function(){return"NULL"};C4.prototype.Hash=function(q){var $=q.pairs,w=[];for(var f=0,K=$.length;f<K;f++)w.push(this.accept($[f]));return"HASH{"+w.join(", ")+"}"};C4.prototype.HashPair=function(q){return q.key+"="+this.accept(q.value)}});var Jk=G((PN8,oO_)=>{var yG=nO_().default,FO_=aO_();yG.PrintVisitor=FO_.PrintVisitor;yG.print=FO_.print;oO_.exports=yG;function BO_(q,$){var w=H_("fs"),f=w.readFileSync($,"utf8");q.exports=yG.compile(f)}if(H_.extensions)H_.extensions[".handlebars"]=BO_,H_.extensions[".hbs"]=BO_});var Ed;var _v_=e9(()=>{Ed=Array.isArray});async function kD(q){let $=Ed(q)?q.map((K)=>[null,K]):Object.entries(q),w=await Promise.all($.map(([K,z])=>z.then((P)=>({result:P,exc:null,key:K})).catch((P)=>({result:null,exc:P,key:K})))),f=w.filter((K)=>K.exc);if(f.length>0)throw new qv_(f.map((K)=>K.exc));if(Ed(q))return w.map((K)=>K.result);return w.reduce((K,z)=>({...K,[z.key]:z.result}),{})}var qv_,Ok=(q)=>{return new Promise(($)=>setTimeout($,q))};var $v_=e9(()=>{_v_();qv_=class qv_ extends Error{constructor(q=[]){super();let $=q.find((w)=>w.name)?.name??"";this.name=`AggregateError(${$}...)`,this.message=`AggregateError with ${q.length} errors`,this.stack=q.find((w)=>w.stack)?.stack??this.stack,this.errors=q}}});var QE6=(q,$,w,f)=>{return function(...z){let P=w?w(...z):JSON.stringify({args:z}),D=q[P];if(D!==void 0){if(!D.exp)return D.value;if(D.exp>new Date().getTime())return D.value}let Y=$(...z);return q[P]={exp:f?new Date().getTime()+f:null,value:Y},Y}},Wk=(q,$={})=>{return QE6({},q,$.key??null,$.ttl??null)};var wv_=()=>{};var vk=(q)=>{if(!q)return{};return Object.keys(q).reduce((w,f)=>{return w[q[f]]=f,w},{})};var fv_=()=>{};var Tk=(q,$)=>{return Math.floor(Math.random()*($-q+1)+q)},tf=(q)=>{return q.map(($)=>({rand:Math.random(),value:$})).sort(($,w)=>$.rand-w.rand).map(($)=>$.value)};var Kv_=()=>{};var zv_=(q)=>{if(!q||q.length===0)return"";let $=q.toLowerCase();return $.substring(0,1).toUpperCase()+$.substring(1,$.length)},gd=(q)=>{if(!q)return"";return q.split(/(?=[A-Z])|[\.\-\s_]/).map(($)=>$.trim()).filter(($)=>!!$).map(($)=>zv_($.toLowerCase())).join(" ")};var Pv_=()=>{};var sq=e9(()=>{$v_();wv_();fv_();Kv_();Pv_()});var _A={};E1(_A,{proglangNames:()=>P4,proglangKeys:()=>p$,proglangExtensions:()=>Rd,languageNames:()=>l6,languageKeys:()=>J9});var l6,J9,P4,Rd,p$;var Yq=e9(()=>{sq();l6={en:"English",ca:"Catalan",es:"Spanish",fr:"French",de:"German"},J9=Object.keys(l6),P4={c:"C",cc:"C++",py:"Python3",hs:"GHC",clj:"Clojure",java:"Java",rs:"Rust",v:"Verilog",R:"R",tar:"MakePRO2"},Rd=vk(P4),p$=Object.keys(P4)});var Av_=G((Pb8,Gv_)=>{var Dg6=["B","kB","MB","GB","TB","PB","EB","ZB","YB"],Yg6=["B","kiB","MiB","GiB","TiB","PiB","EiB","ZiB","YiB"],Jg6=["b","kbit","Mbit","Gbit","Tbit","Pbit","Ebit","Zbit","Ybit"],Hg6=["b","kibit","Mibit","Gibit","Tibit","Pibit","Eibit","Zibit","Yibit"],jv_=(q,$,w)=>{let f=q;if(typeof $==="string"||Array.isArray($))f=q.toLocaleString($,w);else if($===!0||w!==void 0)f=q.toLocaleString(void 0,w);return f};Gv_.exports=(q,$)=>{if(!Number.isFinite(q))throw TypeError(`Expected a finite number, got ${typeof q}: ${q}`);$=Object.assign({bits:!1,binary:!1},$);let w=$.bits?$.binary?Hg6:Jg6:$.binary?Yg6:Dg6;if($.signed&&q===0)return` 0 ${w[0]}`;let f=q<0,K=f?"-":$.signed?"+":"";if(f)q=-q;let z;if($.minimumFractionDigits!==void 0)z={minimumFractionDigits:$.minimumFractionDigits};if($.maximumFractionDigits!==void 0)z=Object.assign({maximumFractionDigits:$.maximumFractionDigits},z);if(q<1){let J=jv_(q,$.locale,z);return K+J+" "+w[0]}let P=Math.min(Math.floor($.binary?Math.log(q)/Math.log(1024):Math.log10(q)/3),w.length-1);if(q/=Math.pow($.binary?1024:1000,P),!z)q=q.toPrecision(3);let D=jv_(Number(q),$.locale,z),Y=w[P];return K+D+" "+Y}});var Cv_=G((Db8,uv_)=>{var __dirname="/
|
|
219
|
+
`,$};C4.prototype.Program=function(q){var $="",w=q.body,f=void 0,K=void 0;if(q.blockParams){var z="BLOCK PARAMS: [";for(f=0,K=q.blockParams.length;f<K;f++)z+=" "+q.blockParams[f];z+=" ]",$+=this.pad(z)}for(f=0,K=w.length;f<K;f++)$+=this.accept(w[f]);return this.padding--,$};C4.prototype.MustacheStatement=function(q){return this.pad("{{ "+this.SubExpression(q)+" }}")};C4.prototype.Decorator=function(q){return this.pad("{{ DIRECTIVE "+this.SubExpression(q)+" }}")};C4.prototype.BlockStatement=C4.prototype.DecoratorBlock=function(q){var $="";if($+=this.pad((q.type==="DecoratorBlock"?"DIRECTIVE ":"")+"BLOCK:"),this.padding++,$+=this.pad(this.SubExpression(q)),q.program)$+=this.pad("PROGRAM:"),this.padding++,$+=this.accept(q.program),this.padding--;if(q.inverse){if(q.program)this.padding++;if($+=this.pad("{{^}}"),this.padding++,$+=this.accept(q.inverse),this.padding--,q.program)this.padding--}return this.padding--,$};C4.prototype.PartialStatement=function(q){var $="PARTIAL:"+q.name.original;if(q.params[0])$+=" "+this.accept(q.params[0]);if(q.hash)$+=" "+this.accept(q.hash);return this.pad("{{> "+$+" }}")};C4.prototype.PartialBlockStatement=function(q){var $="PARTIAL BLOCK:"+q.name.original;if(q.params[0])$+=" "+this.accept(q.params[0]);if(q.hash)$+=" "+this.accept(q.hash);return $+=" "+this.pad("PROGRAM:"),this.padding++,$+=this.accept(q.program),this.padding--,this.pad("{{> "+$+" }}")};C4.prototype.ContentStatement=function(q){return this.pad("CONTENT[ '"+q.value+"' ]")};C4.prototype.CommentStatement=function(q){return this.pad("{{! '"+q.value+"' }}")};C4.prototype.SubExpression=function(q){var $=q.params,w=[],f=void 0;for(var K=0,z=$.length;K<z;K++)w.push(this.accept($[K]));return $="["+w.join(", ")+"]",f=q.hash?" "+this.accept(q.hash):"",this.accept(q.path)+" "+$+f};C4.prototype.PathExpression=function(q){var $=q.parts.join("/");return(q.data?"@":"")+"PATH:"+$};C4.prototype.StringLiteral=function(q){return'"'+q.value+'"'};C4.prototype.NumberLiteral=function(q){return"NUMBER{"+q.value+"}"};C4.prototype.BooleanLiteral=function(q){return"BOOLEAN{"+q.value+"}"};C4.prototype.UndefinedLiteral=function(){return"UNDEFINED"};C4.prototype.NullLiteral=function(){return"NULL"};C4.prototype.Hash=function(q){var $=q.pairs,w=[];for(var f=0,K=$.length;f<K;f++)w.push(this.accept($[f]));return"HASH{"+w.join(", ")+"}"};C4.prototype.HashPair=function(q){return q.key+"="+this.accept(q.value)}});var Jk=G((PN8,oO_)=>{var yG=nO_().default,FO_=aO_();yG.PrintVisitor=FO_.PrintVisitor;yG.print=FO_.print;oO_.exports=yG;function BO_(q,$){var w=H_("fs"),f=w.readFileSync($,"utf8");q.exports=yG.compile(f)}if(H_.extensions)H_.extensions[".handlebars"]=BO_,H_.extensions[".hbs"]=BO_});var Ed;var _v_=e9(()=>{Ed=Array.isArray});async function kD(q){let $=Ed(q)?q.map((K)=>[null,K]):Object.entries(q),w=await Promise.all($.map(([K,z])=>z.then((P)=>({result:P,exc:null,key:K})).catch((P)=>({result:null,exc:P,key:K})))),f=w.filter((K)=>K.exc);if(f.length>0)throw new qv_(f.map((K)=>K.exc));if(Ed(q))return w.map((K)=>K.result);return w.reduce((K,z)=>({...K,[z.key]:z.result}),{})}var qv_,Ok=(q)=>{return new Promise(($)=>setTimeout($,q))};var $v_=e9(()=>{_v_();qv_=class qv_ extends Error{constructor(q=[]){super();let $=q.find((w)=>w.name)?.name??"";this.name=`AggregateError(${$}...)`,this.message=`AggregateError with ${q.length} errors`,this.stack=q.find((w)=>w.stack)?.stack??this.stack,this.errors=q}}});var QE6=(q,$,w,f)=>{return function(...z){let P=w?w(...z):JSON.stringify({args:z}),D=q[P];if(D!==void 0){if(!D.exp)return D.value;if(D.exp>new Date().getTime())return D.value}let Y=$(...z);return q[P]={exp:f?new Date().getTime()+f:null,value:Y},Y}},Wk=(q,$={})=>{return QE6({},q,$.key??null,$.ttl??null)};var wv_=()=>{};var vk=(q)=>{if(!q)return{};return Object.keys(q).reduce((w,f)=>{return w[q[f]]=f,w},{})};var fv_=()=>{};var Tk=(q,$)=>{return Math.floor(Math.random()*($-q+1)+q)},tf=(q)=>{return q.map(($)=>({rand:Math.random(),value:$})).sort(($,w)=>$.rand-w.rand).map(($)=>$.value)};var Kv_=()=>{};var zv_=(q)=>{if(!q||q.length===0)return"";let $=q.toLowerCase();return $.substring(0,1).toUpperCase()+$.substring(1,$.length)},gd=(q)=>{if(!q)return"";return q.split(/(?=[A-Z])|[\.\-\s_]/).map(($)=>$.trim()).filter(($)=>!!$).map(($)=>zv_($.toLowerCase())).join(" ")};var Pv_=()=>{};var sq=e9(()=>{$v_();wv_();fv_();Kv_();Pv_()});var _A={};E1(_A,{proglangNames:()=>P4,proglangKeys:()=>p$,proglangExtensions:()=>Rd,languageNames:()=>l6,languageKeys:()=>J9});var l6,J9,P4,Rd,p$;var Yq=e9(()=>{sq();l6={en:"English",ca:"Catalan",es:"Spanish",fr:"French",de:"German"},J9=Object.keys(l6),P4={c:"C",cc:"C++",py:"Python3",hs:"GHC",clj:"Clojure",java:"Java",rs:"Rust",v:"Verilog",R:"R",tar:"MakePRO2"},Rd=vk(P4),p$=Object.keys(P4)});var Av_=G((Pb8,Gv_)=>{var Dg6=["B","kB","MB","GB","TB","PB","EB","ZB","YB"],Yg6=["B","kiB","MiB","GiB","TiB","PiB","EiB","ZiB","YiB"],Jg6=["b","kbit","Mbit","Gbit","Tbit","Pbit","Ebit","Zbit","Ybit"],Hg6=["b","kibit","Mibit","Gibit","Tibit","Pibit","Eibit","Zibit","Yibit"],jv_=(q,$,w)=>{let f=q;if(typeof $==="string"||Array.isArray($))f=q.toLocaleString($,w);else if($===!0||w!==void 0)f=q.toLocaleString(void 0,w);return f};Gv_.exports=(q,$)=>{if(!Number.isFinite(q))throw TypeError(`Expected a finite number, got ${typeof q}: ${q}`);$=Object.assign({bits:!1,binary:!1},$);let w=$.bits?$.binary?Hg6:Jg6:$.binary?Yg6:Dg6;if($.signed&&q===0)return` 0 ${w[0]}`;let f=q<0,K=f?"-":$.signed?"+":"";if(f)q=-q;let z;if($.minimumFractionDigits!==void 0)z={minimumFractionDigits:$.minimumFractionDigits};if($.maximumFractionDigits!==void 0)z=Object.assign({maximumFractionDigits:$.maximumFractionDigits},z);if(q<1){let J=jv_(q,$.locale,z);return K+J+" "+w[0]}let P=Math.min(Math.floor($.binary?Math.log(q)/Math.log(1024):Math.log10(q)/3),w.length-1);if(q/=Math.pow($.binary?1024:1000,P),!z)q=q.toPrecision(3);let D=jv_(Number(q),$.locale,z),Y=w[P];return K+D+" "+Y}});var Cv_=G((Db8,uv_)=>{var __dirname="/home/pauek/Jutge/jutge-toolkit/node_modules/fast-folder-size",Zg6=H_("path"),kg6={win32:`"${Zg6.join(__dirname,"bin","du.exe")}" -nobanner -accepteula -q -c .`,darwin:"du -sk .",linux:"du -sb ."},Og6={win32(q){return+q.split(`
|
|
220
220
|
`)[1].split(",").slice(-2)[0]},darwin(q){let $=/^(\d+)/.exec(q);return Number($[1])*1024},linux(q){let $=/^(\d+)/.exec(q);return Number($[1])}};uv_.exports={commands:kg6,processOutput:Og6}});var hv_=G((Yb8,Nv_)=>{var{execSync:Wg6}=H_("child_process"),{commands:Vv_,processOutput:Mv_}=Cv_();function vg6(q){let $=Vv_[process.platform]||Vv_.linux,w=Wg6($,{cwd:q}).toString();return(Mv_[process.platform]||Mv_.linux)(w)}Nv_.exports=vg6});var XD=G((Jb8,Rv_)=>{var vD=H_("fs"),TD=H_("path"),Tg6=Av_(),Xg6=hv_(),jg6={allFiles:!1,dirsFirst:!1,dirsOnly:!1,sizes:!1,exclude:[],maxDepth:Number.POSITIVE_INFINITY,reverse:!1,trailingSlash:!1,ascii:!1},Gg6={BRANCH:"\u251C\u2500\u2500 ",EMPTY:"",INDENT:" ",LAST_BRANCH:"\u2514\u2500\u2500 ",VERTICAL:"\u2502 "},Ag6={BRANCH:"|-- ",EMPTY:"",INDENT:" ",LAST_BRANCH:"`-- ",VERTICAL:"| "},Ev_=[/\.DS_Store/];function ug6(q){return q[0]==="."}function gv_(q,$,w,f,K,z){let P=vD.lstatSync($).isDirectory(),D=!P,Y=[],J=K.ascii?Ag6:Gg6;for(let W=0;W<Ev_.length;W++)if(Ev_[W].test($))return Y;if(D&&K.dirsOnly)return Y;for(let W=0;W<K.exclude.length;W++)if(K.exclude[W].test($))return Y;if(w>K.maxDepth)return Y;let Z=[f];if(w>=1)Z.push(z?J.LAST_BRANCH:J.BRANCH);if(K.sizes){let W=P?Xg6($):vD.statSync($).size,v=Tg6(W);Z.push(v.replace(" ","")),Z.push(" ")}if(Z.push(q),P&&K.trailingSlash)Z.push("/");if(Y.push(Z.join("")),D)return Y;let k=vD.readdirSync($);if(k.sort(),K.reverse)k.reverse();if(!K.allFiles)k=k.filter((W)=>!ug6(W));if(K.dirsOnly)k=k.filter((W)=>vD.lstatSync(TD.join($,W)).isDirectory());if(K.dirsFirst){let W=k.filter((X)=>vD.lstatSync(TD.join($,X)).isDirectory()),v=k.filter((X)=>!vD.lstatSync(TD.join($,X)).isDirectory());k=[].concat(W,v)}return k.forEach((W,v)=>{let X=v===k.length-1,j=gv_(W,TD.join($,W),w+1,f+(w>=1?z?J.INDENT:J.VERTICAL:J.EMPTY),K,X);Y.push.apply(Y,j)}),Y}function Cg6(q,$){let w=Object.assign({},jg6,$);return gv_(TD.basename(TD.join(process.cwd(),q)),q,0,"",w).join(`
|
|
221
221
|
`)}Rv_.exports=Cg6});var cd=G((Ab8,mv_)=>{mv_.exports={LOCHDR:30,LOCSIG:67324752,LOCVER:4,LOCFLG:6,LOCHOW:8,LOCTIM:10,LOCCRC:14,LOCSIZ:18,LOCLEN:22,LOCNAM:26,LOCEXT:28,EXTSIG:134695760,EXTHDR:16,EXTCRC:4,EXTSIZ:8,EXTLEN:12,CENHDR:46,CENSIG:33639248,CENVEM:4,CENVER:6,CENFLG:8,CENHOW:10,CENTIM:12,CENCRC:16,CENSIZ:20,CENLEN:24,CENNAM:28,CENEXT:30,CENCOM:32,CENDSK:34,CENATT:36,CENATX:38,CENOFF:42,ENDHDR:22,ENDSIG:101010256,ENDSUB:8,ENDTOT:10,ENDSIZ:12,ENDOFF:16,ENDCOM:20,END64HDR:20,END64SIG:117853008,END64START:4,END64OFF:8,END64NUMDISKS:16,ZIP64SIG:101075792,ZIP64HDR:56,ZIP64LEAD:12,ZIP64SIZE:4,ZIP64VEM:12,ZIP64VER:14,ZIP64DSK:16,ZIP64DSKDIR:20,ZIP64SUB:24,ZIP64TOT:32,ZIP64SIZB:40,ZIP64OFF:48,ZIP64EXTRA:56,STORED:0,SHRUNK:1,REDUCED1:2,REDUCED2:3,REDUCED3:4,REDUCED4:5,IMPLODED:6,DEFLATED:8,ENHANCED_DEFLATED:9,PKWARE:10,BZIP2:12,LZMA:14,IBM_TERSE:18,IBM_LZ77:19,AES_ENCRYPT:99,FLG_ENC:1,FLG_COMP1:2,FLG_COMP2:4,FLG_DESC:8,FLG_ENH:16,FLG_PATCH:32,FLG_STR:64,FLG_EFS:2048,FLG_MSK:4096,FILE:2,BUFFER:1,NONE:0,EF_ID:0,EF_SIZE:2,ID_ZIP64:1,ID_AVINFO:7,ID_PFS:8,ID_OS2:9,ID_NTFS:10,ID_OPENVMS:12,ID_UNIX:13,ID_FORK:14,ID_PATCH:15,ID_X509_PKCS7:20,ID_X509_CERTID_F:21,ID_X509_CERTID_C:22,ID_STRONGENC:23,ID_RECORD_MGT:24,ID_X509_PKCS7_RL:25,ID_IBM1:101,ID_IBM2:102,ID_POSZIP:18064,EF_ZIP64_OR_32:4294967295,EF_ZIP64_OR_16:65535,EF_ZIP64_SUNCOMP:0,EF_ZIP64_SCOMP:8,EF_ZIP64_RHO:16,EF_ZIP64_DSN:24}});var KA=G((cv_)=>{var Lv_={INVALID_LOC:"Invalid LOC header (bad signature)",INVALID_CEN:"Invalid CEN header (bad signature)",INVALID_END:"Invalid END header (bad signature)",DESCRIPTOR_NOT_EXIST:"No descriptor present",DESCRIPTOR_UNKNOWN:"Unknown descriptor format",DESCRIPTOR_FAULTY:"Descriptor data is malformed",NO_DATA:"Nothing to decompress",BAD_CRC:"CRC32 checksum failed {0}",FILE_IN_THE_WAY:"There is a file in the way: {0}",UNKNOWN_METHOD:"Invalid/unsupported compression method",AVAIL_DATA:"inflate::Available inflate data did not terminate",INVALID_DISTANCE:"inflate::Invalid literal/length or distance code in fixed or dynamic block",TO_MANY_CODES:"inflate::Dynamic block code description: too many length or distance codes",INVALID_REPEAT_LEN:"inflate::Dynamic block code description: repeat more than specified lengths",INVALID_REPEAT_FIRST:"inflate::Dynamic block code description: repeat lengths with no first length",INCOMPLETE_CODES:"inflate::Dynamic block code description: code lengths codes incomplete",INVALID_DYN_DISTANCE:"inflate::Dynamic block code description: invalid distance code lengths",INVALID_CODES_LEN:"inflate::Dynamic block code description: invalid literal/length code lengths",INVALID_STORE_BLOCK:"inflate::Stored block length did not match one's complement",INVALID_BLOCK_TYPE:"inflate::Invalid block type (type == 3)",CANT_EXTRACT_FILE:"Could not extract the file",CANT_OVERRIDE:"Target file already exists",DISK_ENTRY_TOO_LARGE:"Number of disk entries is too large",NO_ZIP:"No zip file was loaded",NO_ENTRY:"Entry doesn't exist",DIRECTORY_CONTENT_ERROR:"A directory cannot have content",FILE_NOT_FOUND:'File not found: "{0}"',NOT_IMPLEMENTED:"Not implemented",INVALID_FILENAME:"Invalid filename",INVALID_FORMAT:"Invalid or unsupported zip format. No END header found",INVALID_PASS_PARAM:"Incompatible password parameter",WRONG_PASSWORD:"Wrong Password",COMMENT_TOO_LONG:"Comment is too long",EXTRA_FIELD_PARSE_ERROR:"Extra field parsing error"};function Ng6(q){return function(...$){if($.length)q=q.replace(/\{(\d)\}/g,(w,f)=>$[f]||"");return Error("ADM-ZIP: "+q)}}for(let q of Object.keys(Lv_))cv_[q]=Ng6(Lv_[q])});var pv_=G((Cb8,rv_)=>{var hg6=H_("fs"),_3=H_("path"),xv_=cd(),Eg6=KA(),gg6=typeof process==="object"&&process.platform==="win32",dv_=(q)=>typeof q==="object"&&q!==null,lv_=new Uint32Array(256).map((q,$)=>{for(let w=0;w<8;w++)if(($&1)!==0)$=3988292384^$>>>1;else $>>>=1;return $>>>0});function V4(q){if(this.sep=_3.sep,this.fs=hg6,dv_(q)){if(dv_(q.fs)&&typeof q.fs.statSync==="function")this.fs=q.fs}}rv_.exports=V4;V4.prototype.makeDir=function(q){let $=this;function w(f){let K=f.split($.sep)[0];f.split($.sep).forEach(function(z){if(!z||z.substr(-1,1)===":")return;K+=$.sep+z;var P;try{P=$.fs.statSync(K)}catch(D){$.fs.mkdirSync(K)}if(P&&P.isFile())throw Eg6.FILE_IN_THE_WAY(`"${K}"`)})}w(q)};V4.prototype.writeFileTo=function(q,$,w,f){let K=this;if(K.fs.existsSync(q)){if(!w)return!1;var z=K.fs.statSync(q);if(z.isDirectory())return!1}var P=_3.dirname(q);if(!K.fs.existsSync(P))K.makeDir(P);var D;try{D=K.fs.openSync(q,"w",438)}catch(Y){K.fs.chmodSync(q,438),D=K.fs.openSync(q,"w",438)}if(D)try{K.fs.writeSync(D,$,0,$.length,0)}finally{K.fs.closeSync(D)}return K.fs.chmodSync(q,f||438),!0};V4.prototype.writeFileToAsync=function(q,$,w,f,K){if(typeof f==="function")K=f,f=void 0;let z=this;z.fs.exists(q,function(P){if(P&&!w)return K(!1);z.fs.stat(q,function(D,Y){if(P&&Y.isDirectory())return K(!1);var J=_3.dirname(q);z.fs.exists(J,function(Z){if(!Z)z.makeDir(J);z.fs.open(q,"w",438,function(k,W){if(k)z.fs.chmod(q,438,function(){z.fs.open(q,"w",438,function(v,X){z.fs.write(X,$,0,$.length,0,function(){z.fs.close(X,function(){z.fs.chmod(q,f||438,function(){K(!0)})})})})});else if(W)z.fs.write(W,$,0,$.length,0,function(){z.fs.close(W,function(){z.fs.chmod(q,f||438,function(){K(!0)})})});else z.fs.chmod(q,f||438,function(){K(!0)})})})})})};V4.prototype.findFiles=function(q){let $=this;function w(f,K,z){if(typeof K==="boolean")z=K,K=void 0;let P=[];return $.fs.readdirSync(f).forEach(function(D){let Y=_3.join(f,D),J=$.fs.statSync(Y);if(!K||K.test(Y))P.push(_3.normalize(Y)+(J.isDirectory()?$.sep:""));if(J.isDirectory()&&z)P=P.concat(w(Y,K,z))}),P}return w(q,void 0,!0)};V4.prototype.findFilesAsync=function(q,$){let w=this,f=[];w.fs.readdir(q,function(K,z){if(K)return $(K);let P=z.length;if(!P)return $(null,f);z.forEach(function(D){D=_3.join(q,D),w.fs.stat(D,function(Y,J){if(Y)return $(Y);if(J){if(f.push(_3.normalize(D)+(J.isDirectory()?w.sep:"")),J.isDirectory())w.findFilesAsync(D,function(Z,k){if(Z)return $(Z);if(f=f.concat(k),!--P)$(null,f)});else if(!--P)$(null,f)}})})})};V4.prototype.getAttributes=function(){};V4.prototype.setAttributes=function(){};V4.crc32update=function(q,$){return lv_[(q^$)&255]^q>>>8};V4.crc32=function(q){if(typeof q==="string")q=Buffer.from(q,"utf8");let $=q.length,w=-1;for(let f=0;f<$;)w=V4.crc32update(w,q[f++]);return~w>>>0};V4.methodToString=function(q){switch(q){case xv_.STORED:return"STORED ("+q+")";case xv_.DEFLATED:return"DEFLATED ("+q+")";default:return"UNSUPPORTED ("+q+")"}};V4.canonical=function(q){if(!q)return"";let $=_3.posix.normalize("/"+q.split("\\").join("/"));return _3.join(".",$)};V4.zipnamefix=function(q){if(!q)return"";let $=_3.posix.normalize("/"+q.split("\\").join("/"));return _3.posix.join(".",$)};V4.findLast=function(q,$){if(!Array.isArray(q))throw TypeError("arr is not array");let w=q.length>>>0;for(let f=w-1;f>=0;f--)if($(q[f],f,q))return q[f];return};V4.sanitize=function(q,$){q=_3.resolve(_3.normalize(q));var w=$.split("/");for(var f=0,K=w.length;f<K;f++){var z=_3.normalize(_3.join(q,w.slice(f,K).join(_3.sep)));if(z.indexOf(q)===0)return z}return _3.normalize(_3.join(q,_3.basename($)))};V4.toBuffer=function($,w){if(Buffer.isBuffer($))return $;else if($ instanceof Uint8Array)return Buffer.from($);else return typeof $==="string"?w($):Buffer.alloc(0)};V4.readBigUInt64LE=function(q,$){var w=Buffer.from(q.slice($,$+8));return w.swap64(),parseInt(`0x${w.toString("hex")}`)};V4.fromDOS2Date=function(q){return new Date((q>>25&127)+1980,Math.max((q>>21&15)-1,0),Math.max(q>>16&31,1),q>>11&31,q>>5&63,(q&31)<<1)};V4.fromDate2DOS=function(q){let $=0,w=0;if(q.getFullYear()>1979)$=(q.getFullYear()-1980&127)<<9|q.getMonth()+1<<5|q.getDate(),w=q.getHours()<<11|q.getMinutes()<<5|q.getSeconds()>>1;return $<<16|w};V4.isWin=gg6;V4.crcTable=lv_});var nv_=G((Vb8,iv_)=>{var Rg6=H_("path");iv_.exports=function(q,{fs:$}){var w=q||"",f=z(),K=null;function z(){return{directory:!1,readonly:!1,hidden:!1,executable:!1,mtime:0,atime:0}}if(w&&$.existsSync(w))K=$.statSync(w),f.directory=K.isDirectory(),f.mtime=K.mtime,f.atime=K.atime,f.executable=(73&K.mode)!==0,f.readonly=(128&K.mode)===0,f.hidden=Rg6.basename(w)[0]===".";else console.warn("Invalid path: "+w);return{get directory(){return f.directory},get readOnly(){return f.readonly},get hidden(){return f.hidden},get mtime(){return f.mtime},get atime(){return f.atime},get executable(){return f.executable},decodeAttributes:function(){},encodeAttributes:function(){},toJSON:function(){return{path:w,isDirectory:f.directory,isReadOnly:f.readonly,isHidden:f.hidden,isExecutable:f.executable,mTime:f.mtime,aTime:f.atime}},toString:function(){return JSON.stringify(this.toJSON(),null,"\t")}}}});var Bv_=G((Mb8,av_)=>{av_.exports={efs:!0,encode:(q)=>Buffer.from(q,"utf8"),decode:(q)=>q.toString("utf8")}});var GD=G((Nb8,jD)=>{jD.exports=pv_();jD.exports.Constants=cd();jD.exports.Errors=KA();jD.exports.FileAttr=nv_();jD.exports.decoder=Bv_()});var ov_=G((hb8,Fv_)=>{var p5=GD(),l_=p5.Constants;Fv_.exports=function(){var q=20,$=10,w=0,f=0,K=0,z=0,P=0,D=0,Y=0,J=0,Z=0,k=0,W=0,v=0,X=0;q|=p5.isWin?2560:768,w|=l_.FLG_EFS;let j={extraLen:0},A=(V)=>Math.max(0,V)>>>0,C=(V)=>Math.max(0,V)&65535,N=(V)=>Math.max(0,V)&255;return K=p5.fromDate2DOS(new Date),{get made(){return q},set made(V){q=V},get version(){return $},set version(V){$=V},get flags(){return w},set flags(V){w=V},get flags_efs(){return(w&l_.FLG_EFS)>0},set flags_efs(V){if(V)w|=l_.FLG_EFS;else w&=~l_.FLG_EFS},get flags_desc(){return(w&l_.FLG_DESC)>0},set flags_desc(V){if(V)w|=l_.FLG_DESC;else w&=~l_.FLG_DESC},get method(){return f},set method(V){switch(V){case l_.STORED:this.version=10;case l_.DEFLATED:default:this.version=20}f=V},get time(){return p5.fromDOS2Date(this.timeval)},set time(V){this.timeval=p5.fromDate2DOS(V)},get timeval(){return K},set timeval(V){K=A(V)},get timeHighByte(){return N(K>>>8)},get crc(){return z},set crc(V){z=A(V)},get compressedSize(){return P},set compressedSize(V){P=A(V)},get size(){return D},set size(V){D=A(V)},get fileNameLength(){return Y},set fileNameLength(V){Y=V},get extraLength(){return J},set extraLength(V){J=V},get extraLocalLength(){return j.extraLen},set extraLocalLength(V){j.extraLen=V},get commentLength(){return Z},set commentLength(V){Z=V},get diskNumStart(){return k},set diskNumStart(V){k=A(V)},get inAttr(){return W},set inAttr(V){W=A(V)},get attr(){return v},set attr(V){v=A(V)},get fileAttr(){return(v||0)>>16&4095},get offset(){return X},set offset(V){X=A(V)},get encrypted(){return(w&l_.FLG_ENC)===l_.FLG_ENC},get centralHeaderSize(){return l_.CENHDR+Y+J+Z},get realDataOffset(){return X+l_.LOCHDR+j.fnameLen+j.extraLen},get localHeader(){return j},loadLocalHeaderFromBinary:function(V){var E=V.slice(X,X+l_.LOCHDR);if(E.readUInt32LE(0)!==l_.LOCSIG)throw p5.Errors.INVALID_LOC();j.version=E.readUInt16LE(l_.LOCVER),j.flags=E.readUInt16LE(l_.LOCFLG),j.method=E.readUInt16LE(l_.LOCHOW),j.time=E.readUInt32LE(l_.LOCTIM),j.crc=E.readUInt32LE(l_.LOCCRC),j.compressedSize=E.readUInt32LE(l_.LOCSIZ),j.size=E.readUInt32LE(l_.LOCLEN),j.fnameLen=E.readUInt16LE(l_.LOCNAM),j.extraLen=E.readUInt16LE(l_.LOCEXT);let R=X+l_.LOCHDR+j.fnameLen,b=R+j.extraLen;return V.slice(R,b)},loadFromBinary:function(V){if(V.length!==l_.CENHDR||V.readUInt32LE(0)!==l_.CENSIG)throw p5.Errors.INVALID_CEN();q=V.readUInt16LE(l_.CENVEM),$=V.readUInt16LE(l_.CENVER),w=V.readUInt16LE(l_.CENFLG),f=V.readUInt16LE(l_.CENHOW),K=V.readUInt32LE(l_.CENTIM),z=V.readUInt32LE(l_.CENCRC),P=V.readUInt32LE(l_.CENSIZ),D=V.readUInt32LE(l_.CENLEN),Y=V.readUInt16LE(l_.CENNAM),J=V.readUInt16LE(l_.CENEXT),Z=V.readUInt16LE(l_.CENCOM),k=V.readUInt16LE(l_.CENDSK),W=V.readUInt16LE(l_.CENATT),v=V.readUInt32LE(l_.CENATX),X=V.readUInt32LE(l_.CENOFF)},localHeaderToBinary:function(){var V=Buffer.alloc(l_.LOCHDR);return V.writeUInt32LE(l_.LOCSIG,0),V.writeUInt16LE($,l_.LOCVER),V.writeUInt16LE(w,l_.LOCFLG),V.writeUInt16LE(f,l_.LOCHOW),V.writeUInt32LE(K,l_.LOCTIM),V.writeUInt32LE(z,l_.LOCCRC),V.writeUInt32LE(P,l_.LOCSIZ),V.writeUInt32LE(D,l_.LOCLEN),V.writeUInt16LE(Y,l_.LOCNAM),V.writeUInt16LE(j.extraLen,l_.LOCEXT),V},centralHeaderToBinary:function(){var V=Buffer.alloc(l_.CENHDR+Y+J+Z);return V.writeUInt32LE(l_.CENSIG,0),V.writeUInt16LE(q,l_.CENVEM),V.writeUInt16LE($,l_.CENVER),V.writeUInt16LE(w,l_.CENFLG),V.writeUInt16LE(f,l_.CENHOW),V.writeUInt32LE(K,l_.CENTIM),V.writeUInt32LE(z,l_.CENCRC),V.writeUInt32LE(P,l_.CENSIZ),V.writeUInt32LE(D,l_.CENLEN),V.writeUInt16LE(Y,l_.CENNAM),V.writeUInt16LE(J,l_.CENEXT),V.writeUInt16LE(Z,l_.CENCOM),V.writeUInt16LE(k,l_.CENDSK),V.writeUInt16LE(W,l_.CENATT),V.writeUInt32LE(v,l_.CENATX),V.writeUInt32LE(X,l_.CENOFF),V},toJSON:function(){let V=function(E){return E+" bytes"};return{made:q,version:$,flags:w,method:p5.methodToString(f),time:this.time,crc:"0x"+z.toString(16).toUpperCase(),compressedSize:V(P),size:V(D),fileNameLength:V(Y),extraLength:V(J),commentLength:V(Z),diskNumStart:k,inAttr:W,attr:v,offset:X,centralHeaderSize:V(l_.CENHDR+Y+J+Z)}},toString:function(){return JSON.stringify(this.toJSON(),null,"\t")}}}});var Qv_=G((Eb8,Uv_)=>{var AD=GD(),W4=AD.Constants;Uv_.exports=function(){var q=0,$=0,w=0,f=0,K=0;return{get diskEntries(){return q},set diskEntries(z){q=$=z},get totalEntries(){return $},set totalEntries(z){$=q=z},get size(){return w},set size(z){w=z},get offset(){return f},set offset(z){f=z},get commentLength(){return K},set commentLength(z){K=z},get mainHeaderSize(){return W4.ENDHDR+K},loadFromBinary:function(z){if((z.length!==W4.ENDHDR||z.readUInt32LE(0)!==W4.ENDSIG)&&(z.length<W4.ZIP64HDR||z.readUInt32LE(0)!==W4.ZIP64SIG))throw AD.Errors.INVALID_END();if(z.readUInt32LE(0)===W4.ENDSIG)q=z.readUInt16LE(W4.ENDSUB),$=z.readUInt16LE(W4.ENDTOT),w=z.readUInt32LE(W4.ENDSIZ),f=z.readUInt32LE(W4.ENDOFF),K=z.readUInt16LE(W4.ENDCOM);else q=AD.readBigUInt64LE(z,W4.ZIP64SUB),$=AD.readBigUInt64LE(z,W4.ZIP64TOT),w=AD.readBigUInt64LE(z,W4.ZIP64SIZE),f=AD.readBigUInt64LE(z,W4.ZIP64OFF),K=0},toBinary:function(){var z=Buffer.alloc(W4.ENDHDR+K);return z.writeUInt32LE(W4.ENDSIG,0),z.writeUInt32LE(0,4),z.writeUInt16LE(q,W4.ENDSUB),z.writeUInt16LE($,W4.ENDTOT),z.writeUInt32LE(w,W4.ENDSIZ),z.writeUInt32LE(f,W4.ENDOFF),z.writeUInt16LE(K,W4.ENDCOM),z.fill(" ",W4.ENDHDR),z},toJSON:function(){let z=function(P,D){let Y=P.toString(16).toUpperCase();while(Y.length<D)Y="0"+Y;return"0x"+Y};return{diskEntries:q,totalEntries:$,size:w+" bytes",offset:z(f,4),commentLength:K}},toString:function(){return JSON.stringify(this.toJSON(),null,"\t")}}}});var xd=G((bg6)=>{bg6.EntryHeader=ov_();bg6.MainHeader=Qv_()});var ev_=G((Rb8,tv_)=>{tv_.exports=function(q){var $=H_("zlib"),w={chunkSize:(parseInt(q.length/1024)+1)*1024};return{deflate:function(){return $.deflateRawSync(q,w)},deflateAsync:function(f){var K=$.createDeflateRaw(w),z=[],P=0;K.on("data",function(D){z.push(D),P+=D.length}),K.on("end",function(){var D=Buffer.alloc(P),Y=0;D.fill(0);for(var J=0;J<z.length;J++){var Z=z[J];Z.copy(D,Y),Y+=Z.length}f&&f(D)}),K.end(q)}}}});var _0_=G((bb8,sv_)=>{var Sg6=+(process.versions?process.versions.node:"").split(".")[0]||0;sv_.exports=function(q,$){var w=H_("zlib");let f=Sg6>=15&&$>0?{maxOutputLength:$}:{};return{inflate:function(){return w.inflateRawSync(q,f)},inflateAsync:function(K){var z=w.createInflateRaw(f),P=[],D=0;z.on("data",function(Y){P.push(Y),D+=Y.length}),z.on("end",function(){var Y=Buffer.alloc(D),J=0;Y.fill(0);for(var Z=0;Z<P.length;Z++){var k=P[Z];k.copy(Y,J),J+=k.length}K&&K(Y)}),z.end(q)}}}});var K0_=G((Ib8,f0_)=>{var{randomFillSync:q0_}=H_("crypto"),mg6=KA(),Lg6=new Uint32Array(256).map((q,$)=>{for(let w=0;w<8;w++)if(($&1)!==0)$=$>>>1^3988292384;else $>>>=1;return $>>>0}),w0_=(q,$)=>Math.imul(q,$)>>>0,$0_=(q,$)=>{return Lg6[(q^$)&255]^q>>>8},uk=()=>{if(typeof q0_==="function")return q0_(Buffer.alloc(12));else return uk.node()};uk.node=()=>{let q=Buffer.alloc(12),$=q.length;for(let w=0;w<$;w++)q[w]=Math.random()*256&255;return q};var zA={genSalt:uk};function PA(q){let $=Buffer.isBuffer(q)?q:Buffer.from(q);this.keys=new Uint32Array([305419896,591751049,878082192]);for(let w=0;w<$.length;w++)this.updateKeys($[w])}PA.prototype.updateKeys=function(q){let $=this.keys;return $[0]=$0_($[0],q),$[1]+=$[0]&255,$[1]=w0_($[1],134775813)+1,$[2]=$0_($[2],$[1]>>>24),q};PA.prototype.next=function(){let q=(this.keys[2]|2)>>>0;return w0_(q,q^1)>>8&255};function cg6(q){let $=new PA(q);return function(w){let f=Buffer.alloc(w.length),K=0;for(let z of w)f[K++]=$.updateKeys(z^$.next());return f}}function xg6(q){let $=new PA(q);return function(w,f,K=0){if(!f)f=Buffer.alloc(w.length);for(let z of w){let P=$.next();f[K++]=z^P,$.updateKeys(z)}return f}}function dg6(q,$,w){if(!q||!Buffer.isBuffer(q)||q.length<12)return Buffer.alloc(0);let f=cg6(w),K=f(q.slice(0,12)),z=($.flags&8)===8?$.timeHighByte:$.crc>>>24;if(K[11]!==z)throw mg6.WRONG_PASSWORD();return f(q.slice(12))}function lg6(q){if(Buffer.isBuffer(q)&&q.length>=12)zA.genSalt=function(){return q.slice(0,12)};else if(q==="node")zA.genSalt=uk.node;else zA.genSalt=uk}function rg6(q,$,w,f=!1){if(q==null)q=Buffer.alloc(0);if(!Buffer.isBuffer(q))q=Buffer.from(q.toString());let K=xg6(w),z=zA.genSalt();if(z[11]=$.crc>>>24&255,f)z[10]=$.crc>>>16&255;let P=Buffer.alloc(q.length+12);return K(z,P),K(q,P,12)}f0_.exports={decrypt:dg6,encrypt:rg6,_salter:lg6}});var z0_=G((pg6)=>{pg6.Deflater=ev_();pg6.Inflater=_0_();pg6.ZipCrypto=K0_()});var ld=G((Sb8,P0_)=>{var h8=GD(),Bg6=xd(),M4=h8.Constants,dd=z0_();P0_.exports=function(q,$){var w=new Bg6.EntryHeader,f=Buffer.alloc(0),K=Buffer.alloc(0),z=!1,P=null,D=Buffer.alloc(0),Y=Buffer.alloc(0),J=!0;let Z=q,k=typeof Z.decoder==="object"?Z.decoder:h8.decoder;J=k.hasOwnProperty("efs")?k.efs:!1;function W(){if(!$||!($ instanceof Uint8Array))return Buffer.alloc(0);return Y=w.loadLocalHeaderFromBinary($),$.slice(w.realDataOffset,w.realDataOffset+w.compressedSize)}function v(V){if(!w.flags_desc){if(h8.crc32(V)!==w.localHeader.crc)return!1}else{let E={},R=w.realDataOffset+w.compressedSize;if($.readUInt32LE(R)==M4.LOCSIG||$.readUInt32LE(R)==M4.CENSIG)throw h8.Errors.DESCRIPTOR_NOT_EXIST();if($.readUInt32LE(R)==M4.EXTSIG)E.crc=$.readUInt32LE(R+M4.EXTCRC),E.compressedSize=$.readUInt32LE(R+M4.EXTSIZ),E.size=$.readUInt32LE(R+M4.EXTLEN);else if($.readUInt16LE(R+12)===19280)E.crc=$.readUInt32LE(R+M4.EXTCRC-4),E.compressedSize=$.readUInt32LE(R+M4.EXTSIZ-4),E.size=$.readUInt32LE(R+M4.EXTLEN-4);else throw h8.Errors.DESCRIPTOR_UNKNOWN();if(E.compressedSize!==w.compressedSize||E.size!==w.size||E.crc!==w.crc)throw h8.Errors.DESCRIPTOR_FAULTY();if(h8.crc32(V)!==E.crc)return!1}return!0}function X(V,E,R){if(typeof E>"u"&&typeof V==="string")R=V,V=void 0;if(z){if(V&&E)E(Buffer.alloc(0),h8.Errors.DIRECTORY_CONTENT_ERROR());return Buffer.alloc(0)}var b=W();if(b.length===0){if(V&&E)E(b);return b}if(w.encrypted){if(typeof R!=="string"&&!Buffer.isBuffer(R))throw h8.Errors.INVALID_PASS_PARAM();b=dd.ZipCrypto.decrypt(b,w,R)}var S=Buffer.alloc(w.size);switch(w.method){case h8.Constants.STORED:if(b.copy(S),!v(S)){if(V&&E)E(S,h8.Errors.BAD_CRC());throw h8.Errors.BAD_CRC()}else{if(V&&E)E(S);return S}case h8.Constants.DEFLATED:var i=new dd.Inflater(b,w.size);if(!V){if(i.inflate(S).copy(S,0),!v(S))throw h8.Errors.BAD_CRC(`"${k.decode(f)}"`);return S}else i.inflateAsync(function(y){if(y.copy(y,0),E)if(!v(y))E(y,h8.Errors.BAD_CRC());else E(y)});break;default:if(V&&E)E(Buffer.alloc(0),h8.Errors.UNKNOWN_METHOD());throw h8.Errors.UNKNOWN_METHOD()}}function j(V,E){if((!P||!P.length)&&Buffer.isBuffer($)){if(V&&E)E(W());return W()}if(P.length&&!z){var R;switch(w.method){case h8.Constants.STORED:if(w.compressedSize=w.size,R=Buffer.alloc(P.length),P.copy(R),V&&E)E(R);return R;default:case h8.Constants.DEFLATED:var b=new dd.Deflater(P);if(!V){var S=b.deflate();return w.compressedSize=S.length,S}else b.deflateAsync(function(i){R=Buffer.alloc(i.length),w.compressedSize=i.length,i.copy(R),E&&E(R)});b=null;break}}else if(V&&E)E(Buffer.alloc(0));else return Buffer.alloc(0)}function A(V,E){return(V.readUInt32LE(E+4)<<4)+V.readUInt32LE(E)}function C(V){try{var E=0,R,b,S;while(E+4<V.length)if(R=V.readUInt16LE(E),E+=2,b=V.readUInt16LE(E),E+=2,S=V.slice(E,E+b),E+=b,M4.ID_ZIP64===R)N(S)}catch(i){throw h8.Errors.EXTRA_FIELD_PARSE_ERROR()}}function N(V){var E,R,b,S;if(V.length>=M4.EF_ZIP64_SCOMP){if(E=A(V,M4.EF_ZIP64_SUNCOMP),w.size===M4.EF_ZIP64_OR_32)w.size=E}if(V.length>=M4.EF_ZIP64_RHO){if(R=A(V,M4.EF_ZIP64_SCOMP),w.compressedSize===M4.EF_ZIP64_OR_32)w.compressedSize=R}if(V.length>=M4.EF_ZIP64_DSN){if(b=A(V,M4.EF_ZIP64_RHO),w.offset===M4.EF_ZIP64_OR_32)w.offset=b}if(V.length>=M4.EF_ZIP64_DSN+4){if(S=V.readUInt32LE(M4.EF_ZIP64_DSN),w.diskNumStart===M4.EF_ZIP64_OR_16)w.diskNumStart=S}}return{get entryName(){return k.decode(f)},get rawEntryName(){return f},set entryName(V){f=h8.toBuffer(V,k.encode);var E=f[f.length-1];z=E===47||E===92,w.fileNameLength=f.length},get efs(){if(typeof J==="function")return J(this.entryName);else return J},get extra(){return D},set extra(V){D=V,w.extraLength=V.length,C(V)},get comment(){return k.decode(K)},set comment(V){if(K=h8.toBuffer(V,k.encode),w.commentLength=K.length,K.length>65535)throw h8.Errors.COMMENT_TOO_LONG()},get name(){var V=k.decode(f);return z?V.substr(V.length-1).split("/").pop():V.split("/").pop()},get isDirectory(){return z},getCompressedData:function(){return j(!1,null)},getCompressedDataAsync:function(V){j(!0,V)},setData:function(V){if(P=h8.toBuffer(V,h8.decoder.encode),!z&&P.length)w.size=P.length,w.method=h8.Constants.DEFLATED,w.crc=h8.crc32(V),w.changed=!0;else w.method=h8.Constants.STORED},getData:function(V){if(w.changed)return P;else return X(!1,null,V)},getDataAsync:function(V,E){if(w.changed)V(P);else X(!0,V,E)},set attr(V){w.attr=V},get attr(){return w.attr},set header(V){w.loadFromBinary(V)},get header(){return w},packCentralHeader:function(){w.flags_efs=this.efs,w.extraLength=D.length;var V=w.centralHeaderToBinary(),E=h8.Constants.CENHDR;return f.copy(V,E),E+=f.length,D.copy(V,E),E+=w.extraLength,K.copy(V,E),V},packLocalHeader:function(){let V=0;w.flags_efs=this.efs,w.extraLocalLength=Y.length;let E=w.localHeaderToBinary(),R=Buffer.alloc(E.length+f.length+w.extraLocalLength);return E.copy(R,V),V+=E.length,f.copy(R,V),V+=f.length,Y.copy(R,V),V+=Y.length,R},toJSON:function(){let V=function(E){return"<"+(E&&E.length+" bytes buffer"||"null")+">"};return{entryName:this.entryName,name:this.name,comment:this.comment,isDirectory:this.isDirectory,header:w.toJSON(),compressedData:V($),data:V(P)}},toString:function(){return JSON.stringify(this.toJSON(),null,"\t")}}}});var J0_=G((mb8,Y0_)=>{var D0_=ld(),Fg6=xd(),M3=GD();Y0_.exports=function(q,$){var w=[],f={},K=Buffer.alloc(0),z=new Fg6.MainHeader,P=!1,D=null;let Y=new Set,J=$,{noSort:Z,decoder:k}=J;if(q)X(J.readEntries);else P=!0;function W(){let A=new Set;for(let C of Object.keys(f)){let N=C.split("/");if(N.pop(),!N.length)continue;for(let V=0;V<N.length;V++){let E=N.slice(0,V+1).join("/")+"/";A.add(E)}}for(let C of A)if(!(C in f)){let N=new D0_(J);N.entryName=C,N.attr=16,N.temporary=!0,w.push(N),f[N.entryName]=N,Y.add(N)}}function v(){if(P=!0,f={},z.diskEntries>(q.length-z.offset)/M3.Constants.CENHDR)throw M3.Errors.DISK_ENTRY_TOO_LARGE();w=Array(z.diskEntries);var A=z.offset;for(var C=0;C<w.length;C++){var N=A,V=new D0_(J,q);if(V.header=q.slice(N,N+=M3.Constants.CENHDR),V.entryName=q.slice(N,N+=V.header.fileNameLength),V.header.extraLength)V.extra=q.slice(N,N+=V.header.extraLength);if(V.header.commentLength)V.comment=q.slice(N,N+V.header.commentLength);A+=V.header.centralHeaderSize,w[C]=V,f[V.entryName]=V}Y.clear(),W()}function X(A){var C=q.length-M3.Constants.ENDHDR,N=Math.max(0,C-65535),V=N,E=q.length,R=-1,b=0;if(typeof J.trailingSpace==="boolean"?J.trailingSpace:!1)N=0;for(C;C>=V;C--){if(q[C]!==80)continue;if(q.readUInt32LE(C)===M3.Constants.ENDSIG){R=C,b=C,E=C+M3.Constants.ENDHDR,V=C-M3.Constants.END64HDR;continue}if(q.readUInt32LE(C)===M3.Constants.END64SIG){V=N;continue}if(q.readUInt32LE(C)===M3.Constants.ZIP64SIG){R=C,E=C+M3.readBigUInt64LE(q,C+M3.Constants.ZIP64SIZE)+M3.Constants.ZIP64LEAD;break}}if(R==-1)throw M3.Errors.INVALID_FORMAT();if(z.loadFromBinary(q.slice(R,E)),z.commentLength)K=q.slice(b+M3.Constants.ENDHDR);if(A)v()}function j(){if(w.length>1&&!Z)w.sort((A,C)=>A.entryName.toLowerCase().localeCompare(C.entryName.toLowerCase()))}return{get entries(){if(!P)v();return w.filter((A)=>!Y.has(A))},get comment(){return k.decode(K)},set comment(A){K=M3.toBuffer(A,k.encode),z.commentLength=K.length},getEntryCount:function(){if(!P)return z.diskEntries;return w.length},forEach:function(A){this.entries.forEach(A)},getEntry:function(A){if(!P)v();return f[A]||null},setEntry:function(A){if(!P)v();w.push(A),f[A.entryName]=A,z.totalEntries=w.length},deleteFile:function(A,C=!0){if(!P)v();let N=f[A];this.getEntryChildren(N,C).map((E)=>E.entryName).forEach(this.deleteEntry)},deleteEntry:function(A){if(!P)v();let C=f[A],N=w.indexOf(C);if(N>=0)w.splice(N,1),delete f[A],z.totalEntries=w.length},getEntryChildren:function(A,C=!0){if(!P)v();if(typeof A==="object")if(A.isDirectory&&C){let N=[],V=A.entryName;for(let E of w)if(E.entryName.startsWith(V))N.push(E);return N}else return[A];return[]},getChildCount:function(A){if(A&&A.isDirectory){let C=this.getEntryChildren(A);return C.includes(A)?C.length-1:C.length}return 0},compressToBuffer:function(){if(!P)v();j();let A=[],C=[],N=0,V=0;z.size=0,z.offset=0;let E=0;for(let S of this.entries){let i=S.getCompressedData();S.header.offset=V;let y=S.packLocalHeader(),a=y.length+i.length;V+=a,A.push(y),A.push(i);let e=S.packCentralHeader();C.push(e),z.size+=e.length,N+=a+e.length,E++}N+=z.mainHeaderSize,z.offset=V,z.totalEntries=E,V=0;let R=Buffer.alloc(N);for(let S of A)S.copy(R,V),V+=S.length;for(let S of C)S.copy(R,V),V+=S.length;let b=z.toBinary();if(K)K.copy(b,M3.Constants.ENDHDR);return b.copy(R,V),q=R,P=!1,R},toAsyncBuffer:function(A,C,N,V){try{if(!P)v();j();let E=[],R=[],b=0,S=0,i=0;z.size=0,z.offset=0;let y=function(a){if(a.length>0){let e=a.shift(),Q=e.entryName+e.extra.toString();if(N)N(Q);e.getCompressedDataAsync(function(w_){if(V)V(Q);e.header.offset=S;let J_=e.packLocalHeader(),k_=J_.length+w_.length;S+=k_,E.push(J_),E.push(w_);let P_=e.packCentralHeader();R.push(P_),z.size+=P_.length,b+=k_+P_.length,i++,y(a)})}else{b+=z.mainHeaderSize,z.offset=S,z.totalEntries=i,S=0;let e=Buffer.alloc(b);E.forEach(function(w_){w_.copy(e,S),S+=w_.length}),R.forEach(function(w_){w_.copy(e,S),S+=w_.length});let Q=z.toBinary();if(K)K.copy(Q,M3.Constants.ENDHDR);Q.copy(e,S),q=e,P=!1,A(e)}};y(Array.from(this.entries))}catch(E){C(E)}}}}});var k0_=G((Lb8,Z0_)=>{var v4=GD(),N4=H_("path"),og6=ld(),Ug6=J0_(),sf=(...q)=>v4.findLast(q,($)=>typeof $==="boolean"),H0_=(...q)=>v4.findLast(q,($)=>typeof $==="string"),Qg6=(...q)=>v4.findLast(q,($)=>typeof $==="function"),tg6={noSort:!1,readEntries:!1,method:v4.Constants.NONE,fs:null};Z0_.exports=function(q,$){let w=null,f=Object.assign(Object.create(null),tg6);if(q&&typeof q==="object"){if(!(q instanceof Uint8Array)){if(Object.assign(f,q),q=f.input?f.input:void 0,f.input)delete f.input}if(Buffer.isBuffer(q))w=q,f.method=v4.Constants.BUFFER,q=void 0}Object.assign(f,$);let K=new v4(f);if(typeof f.decoder!=="object"||typeof f.decoder.encode!=="function"||typeof f.decoder.decode!=="function")f.decoder=v4.decoder;if(q&&typeof q==="string")if(K.fs.existsSync(q))f.method=v4.Constants.FILE,f.filename=q,w=K.fs.readFileSync(q);else throw v4.Errors.INVALID_FILENAME();let z=new Ug6(w,f),{canonical:P,sanitize:D,zipnamefix:Y}=v4;function J(v){if(v&&z){var X;if(typeof v==="string")X=z.getEntry(N4.posix.normalize(v));if(typeof v==="object"&&typeof v.entryName<"u"&&typeof v.header<"u")X=z.getEntry(v.entryName);if(X)return X}return null}function Z(v){let{join:X,normalize:j,sep:A}=N4.posix;return X(".",j(A+v.split("\\").join(A)+A))}function k(v){if(v instanceof RegExp)return function(X){return function(j){return X.test(j)}}(v);else if(typeof v!=="function")return()=>!0;return v}let W=(v,X)=>{let j=X.slice(-1);return j=j===K.sep?K.sep:"",N4.relative(v,X)+j};return{readFile:function(v,X){var j=J(v);return j&&j.getData(X)||null},childCount:function(v){let X=J(v);if(X)return z.getChildCount(X)},readFileAsync:function(v,X){var j=J(v);if(j)j.getDataAsync(X);else X(null,"getEntry failed for:"+v)},readAsText:function(v,X){var j=J(v);if(j){var A=j.getData();if(A&&A.length)return A.toString(X||"utf8")}return""},readAsTextAsync:function(v,X,j){var A=J(v);if(A)A.getDataAsync(function(C,N){if(N){X(C,N);return}if(C&&C.length)X(C.toString(j||"utf8"));else X("")});else X("")},deleteFile:function(v,X=!0){var j=J(v);if(j)z.deleteFile(j.entryName,X)},deleteEntry:function(v){var X=J(v);if(X)z.deleteEntry(X.entryName)},addZipComment:function(v){z.comment=v},getZipComment:function(){return z.comment||""},addZipEntryComment:function(v,X){var j=J(v);if(j)j.comment=X},getZipEntryComment:function(v){var X=J(v);if(X)return X.comment||"";return""},updateFile:function(v,X){var j=J(v);if(j)j.setData(X)},addLocalFile:function(v,X,j,A){if(K.fs.existsSync(v)){X=X?Z(X):"";let C=N4.win32.basename(N4.win32.normalize(v));X+=j?j:C;let N=K.fs.statSync(v),V=N.isFile()?K.fs.readFileSync(v):Buffer.alloc(0);if(N.isDirectory())X+=K.sep;this.addFile(X,V,A,N)}else throw v4.Errors.FILE_NOT_FOUND(v)},addLocalFileAsync:function(v,X){v=typeof v==="object"?v:{localPath:v};let j=N4.resolve(v.localPath),{comment:A}=v,{zipPath:C,zipName:N}=v,V=this;K.fs.stat(j,function(E,R){if(E)return X(E,!1);C=C?Z(C):"";let b=N4.win32.basename(N4.win32.normalize(j));if(C+=N?N:b,R.isFile())K.fs.readFile(j,function(S,i){if(S)return X(S,!1);return V.addFile(C,i,A,R),setImmediate(X,void 0,!0)});else if(R.isDirectory())return C+=K.sep,V.addFile(C,Buffer.alloc(0),A,R),setImmediate(X,void 0,!0)})},addLocalFolder:function(v,X,j){if(j=k(j),X=X?Z(X):"",v=N4.normalize(v),K.fs.existsSync(v)){let A=K.findFiles(v),C=this;if(A.length)for(let N of A){let V=N4.join(X,W(v,N));if(j(V))C.addLocalFile(N,N4.dirname(V))}}else throw v4.Errors.FILE_NOT_FOUND(v)},addLocalFolderAsync:function(v,X,j,A){A=k(A),j=j?Z(j):"",v=N4.normalize(v);var C=this;K.fs.open(v,"r",function(N){if(N&&N.code==="ENOENT")X(void 0,v4.Errors.FILE_NOT_FOUND(v));else if(N)X(void 0,N);else{var V=K.findFiles(v),E=-1,R=function(){if(E+=1,E<V.length){var b=V[E],S=W(v,b).split("\\").join("/");if(S=S.normalize("NFD").replace(/[\u0300-\u036f]/g,"").replace(/[^\x20-\x7E]/g,""),A(S))K.fs.stat(b,function(i,y){if(i)X(void 0,i);if(y.isFile())K.fs.readFile(b,function(a,e){if(a)X(void 0,a);else C.addFile(j+S,e,"",y),R()});else C.addFile(j+S+"/",Buffer.alloc(0),"",y),R()});else process.nextTick(()=>{R()})}else X(!0,void 0)};R()}})},addLocalFolderAsync2:function(v,X){let j=this;v=typeof v==="object"?v:{localPath:v},localPath=N4.resolve(Z(v.localPath));let{zipPath:A,filter:C,namefix:N}=v;if(C instanceof RegExp)C=function(R){return function(b){return R.test(b)}}(C);else if(typeof C!=="function")C=function(){return!0};if(A=A?Z(A):"",N=="latin1")N=(R)=>R.normalize("NFD").replace(/[\u0300-\u036f]/g,"").replace(/[^\x20-\x7E]/g,"");if(typeof N!=="function")N=(R)=>R;let V=(R)=>N4.join(A,N(W(localPath,R))),E=(R)=>N4.win32.basename(N4.win32.normalize(N(R)));K.fs.open(localPath,"r",function(R){if(R&&R.code==="ENOENT")X(void 0,v4.Errors.FILE_NOT_FOUND(localPath));else if(R)X(void 0,R);else K.findFilesAsync(localPath,function(b,S){if(b)return X(b);if(S=S.filter((i)=>C(V(i))),!S.length)X(void 0,!1);setImmediate(S.reverse().reduce(function(i,y){return function(a,e){if(a||e===!1)return setImmediate(i,a,!1);j.addLocalFileAsync({localPath:y,zipPath:N4.dirname(V(y)),zipName:E(y)},i)}},X))})})},addLocalFolderPromise:function(v,X){return new Promise((j,A)=>{this.addLocalFolderAsync2(Object.assign({localPath:v},X),(C,N)=>{if(C)A(C);if(N)j(this)})})},addFile:function(v,X,j,A){v=Y(v);let C=J(v),N=C!=null;if(!N)C=new og6(f),C.entryName=v;C.comment=j||"";let V=typeof A==="object"&&A instanceof K.fs.Stats;if(V)C.header.time=A.mtime;var E=C.isDirectory?16:0;let R=C.isDirectory?16384:32768;if(V)R|=4095&A.mode;else if(typeof A==="number")R|=4095&A;else R|=C.isDirectory?493:420;if(E=(E|R<<16)>>>0,C.attr=E,C.setData(X),!N)z.setEntry(C);return C},getEntries:function(v){return z.password=v,z?z.entries:[]},getEntry:function(v){return J(v)},getEntryCount:function(){return z.getEntryCount()},forEach:function(v){return z.forEach(v)},extractEntryTo:function(v,X,j,A,C,N){A=sf(!1,A),C=sf(!1,C),j=sf(!0,j),N=H0_(C,N);var V=J(v);if(!V)throw v4.Errors.NO_ENTRY();var E=P(V.entryName),R=D(X,N&&!V.isDirectory?N:j?E:N4.basename(E));if(V.isDirectory){var b=z.getEntryChildren(V);return b.forEach(function(y){if(y.isDirectory)return;var a=y.getData();if(!a)throw v4.Errors.CANT_EXTRACT_FILE();var e=P(y.entryName),Q=D(X,j?e:N4.basename(e));let w_=C?y.header.fileAttr:void 0;K.writeFileTo(Q,a,A,w_)}),!0}var S=V.getData(z.password);if(!S)throw v4.Errors.CANT_EXTRACT_FILE();if(K.fs.existsSync(R)&&!A)throw v4.Errors.CANT_OVERRIDE();let i=C?v.header.fileAttr:void 0;return K.writeFileTo(R,S,A,i),!0},test:function(v){if(!z)return!1;for(var X in z.entries)try{if(X.isDirectory)continue;var j=z.entries[X].getData(v);if(!j)return!1}catch(A){return!1}return!0},extractAllTo:function(v,X,j,A){if(j=sf(!1,j),A=H0_(j,A),X=sf(!1,X),!z)throw v4.Errors.NO_ZIP();z.entries.forEach(function(C){var N=D(v,P(C.entryName));if(C.isDirectory){K.makeDir(N);return}var V=C.getData(A);if(!V)throw v4.Errors.CANT_EXTRACT_FILE();let E=j?C.header.fileAttr:void 0;K.writeFileTo(N,V,X,E);try{K.fs.utimesSync(N,C.header.time,C.header.time)}catch(R){throw v4.Errors.CANT_EXTRACT_FILE()}})},extractAllToAsync:function(v,X,j,A){if(A=Qg6(X,j,A),j=sf(!1,j),X=sf(!1,X),!A)return new Promise((R,b)=>{this.extractAllToAsync(v,X,j,function(S){if(S)b(S);else R(this)})});if(!z){A(v4.Errors.NO_ZIP());return}v=N4.resolve(v);let C=(R)=>D(v,N4.normalize(P(R.entryName))),N=(R,b)=>Error(R+': "'+b+'"'),V=[],E=[];z.entries.forEach((R)=>{if(R.isDirectory)V.push(R);else E.push(R)});for(let R of V){let b=C(R),S=j?R.header.fileAttr:void 0;try{if(K.makeDir(b),S)K.fs.chmodSync(b,S);K.fs.utimesSync(b,R.header.time,R.header.time)}catch(i){A(N("Unable to create folder",b))}}E.reverse().reduce(function(R,b){return function(S){if(S)R(S);else{let i=N4.normalize(P(b.entryName)),y=D(v,i);b.getDataAsync(function(a,e){if(e)R(e);else if(!a)R(v4.Errors.CANT_EXTRACT_FILE());else{let Q=j?b.header.fileAttr:void 0;K.writeFileToAsync(y,a,X,Q,function(w_){if(!w_)R(N("Unable to write file",y));K.fs.utimes(y,b.header.time,b.header.time,function(J_){if(J_)R(N("Unable to set times",y));else R()})})}})}}},A)()},writeZip:function(v,X){if(arguments.length===1){if(typeof v==="function")X=v,v=""}if(!v&&f.filename)v=f.filename;if(!v)return;var j=z.compressToBuffer();if(j){var A=K.writeFileTo(v,j,!0);if(typeof X==="function")X(!A?Error("failed"):null,"")}},writeZipPromise:function(v,X){let{overwrite:j,perm:A}=Object.assign({overwrite:!0},X);return new Promise((C,N)=>{if(!v&&f.filename)v=f.filename;if(!v)N("ADM-ZIP: ZIP File Name Missing");this.toBufferPromise().then((V)=>{let E=(R)=>R?C(R):N("ADM-ZIP: Wasn't able to write zip file");K.writeFileToAsync(v,V,j,A,E)},N)})},toBufferPromise:function(){return new Promise((v,X)=>{z.toAsyncBuffer(v,X)})},toBuffer:function(v,X,j,A){if(typeof v==="function")return z.toAsyncBuffer(v,X,j,A),null;return z.compressToBuffer()}}}});var n$=G((Wy8,hT_)=>{/*!
|
|
222
222
|
Copyright 2013 Lovell Fuller and others.
|
|
@@ -607,7 +607,7 @@ main = do
|
|
|
607
607
|
`))if(D.trim()==="")P+=`
|
|
608
608
|
`;else P+=`(println ${D})
|
|
609
609
|
`;await G4(oG(q,f),P)}}class UG extends N8{id(){return"Verilog"}name(){return"Verilog"}type(){return"formal methods"}language(){return"Verilog"}async version(){return await a6(),"Verilog Fake Compiler"}flags1(){return""}flags2(){return""}tool(){return"Verilog"}extension(){return"v"}async compileNormal(q,$,w){let f=`${w}.exe`;return await A8($,f,`echo "This is a fake executable for Verilog source ${w}"
|
|
610
|
-
`),f}async execute(q,$,w,f,K){}}import{cp as Vd,glob as TW_,mkdir as NE6,rm as hE6}from"fs/promises";import{basename as EE6,extname as gE6,join as Uf}from"path";class QG extends N8{id(){return"PRO2"}name(){return"PRO2 Project C++ Compiler"}type(){return"compiler"}language(){return"C++"}async version(){return await this.getVersion("g++ --version",0)}flags1(){return"-std=c++17 -D_JUDGE_ -O2 -D_GLIBCXX_DEBUG -DNDEBUG -Wall -Wextra -Wno-sign-compare -Wshadow"}flags2(){return"-std=c++17 -D_JUDGE_ -O2 -D_GLIBCXX_DEBUG -DNDEBUG -Wall -Wextra -Wno-sign-compare -Wshadow"}tool(){return"g++"}extension(){return"hh"}async compileNormal(q,$,w){let f=`${w}.exe`,K=Uf($,`${u8()}-PRO2/${$q()}`);await hE6(K,{recursive:!0,force:!0}),await NE6(K,{recursive:!0}),u.print(`Using working directory ${u.hyperlink($,K)}`);for(let D of["public","private"]){let Y=await Array.fromAsync(TW_(`${D}/*.{cc,hh}`,{cwd:$}));for(let J of Y){let Z=Uf(K,EE6(J));await Vd(Uf($,J),Z)}}let z=gE6(w);await Vd(Uf($,w),Uf(K,`program${z}`));let P=await Array.fromAsync(TW_("*.cc",{cwd:K}));if(await p_({reject:!1,stderr:"inherit",stdout:"inherit",cwd:K})`${this.tool()} ${this.flags1().split(" ")} -o ${f} ${P}`,!await l8(K,f))throw Error(`Compilation failed for ${w}`);return await Vd(Uf(K,f),Uf($,f)),f}}import{cp as Md,glob as XW_,mkdir as RE6,rm as bE6}from"fs/promises";import{basename as IE6,join as d5}from"path";class tG extends N8{id(){return"MakePRO2"}name(){return"PRO2 Makefile C++ Compiler"}type(){return"compiler"}language(){return"C++"}async version(){return await this.getVersion("g++ --version",0)}flags1(){return""}flags2(){return""}tool(){return"make"}extension(){return"tar"}async compileNormal(q,$,w){let f=`${w}.exe`,K=`${u8()}-MakePRO2/${$q()}`;await bE6(K,{recursive:!0,force:!0}),await RE6(K,{recursive:!0}),u.print(`Using working directory ${u.hyperlink($,K)}`);for(let P of["public","private","solution"]){let D=await Array.fromAsync(XW_(`${P}/*.{cc,hh}`,{cwd:$}));for(let Y of D){let J=d5(K,IE6(Y));await Md(d5($,Y),J)}if(await l8(d5($,P),"Makefile")){let Y=d5(K,"Makefile");await Md(d5($,P,"Makefile"),Y)}}if(!await l8($,"solution"))await p_({cwd:K})`tar xf ${d5($,w)}`;let z=await Array.fromAsync(XW_("*.cc",{cwd:K}));if(await p_({reject:!1,stderr:"inherit",stdout:"inherit",cwd:K})`${this.tool()}`,!await l8(K,"program.exe"))throw Error(`"program.exe" not found after calling 'make'`);return await Md(d5(K,"program.exe"),d5($,f)),f}}import{join as yE6}from"path";class eG extends N8{id(){return"R"}name(){return"R"}type(){return"interpreter"}language(){return"R"}async version(){return await this.getVersion("R --version",0)}flags1(){return""}flags2(){return""}tool(){return"R"}extension(){return"R"}async compileNormal(q,$,w){return await a6(),u.warning("No compilation available for R"),w}async compileWithMain(q,$,w){return await a6(),u.warning("No compilation available for R"),w}async execute(q,$,w,f,K){let z=w;await this.rmInDir($,K);let P=await this.getInput($,f);u.command(`Rscript ${z} < ${f} > ${K}`);let{exitCode:D}=await p_({reject:!1,input:P,stdout:{file:yE6($,K)},stderr:"inherit",cwd:$})`Rscript ${z}`;if(D!==0)throw Error(`Execution failed for ${z}`)}}var Y9=/\r?\n/;function Dq(q,$){let w=new Map;return(...f)=>{let K=$?$(...f):JSON.stringify(f);if(!w.has(K))w.set(K,q(...f));return w.get(K)}}async function SE6(){let{stdout:q}=await p_({reject:!1})`python3 --version`,$=q.trim();return{result:$.startsWith("Python 3"),version:$,stdout:q}}var jW_=Dq(SE6);async function GW_(){let{result:q}=await jW_();return q}async function mE6(){let{stdout:q}=await p_({reject:!1})`R --version`,$=q.split(Y9)[0].trim();return{result:$.startsWith("R version"),version:$,stdout:q}}var AW_=Dq(mE6);async function uW_(){let{result:q}=await AW_();return q}async function LE6(q){let{exitCode:$,stdout:w,stderr:f}=await p_({reject:!1})`python3 -m pip show ${q}`;return{result:$===0,version:$===0?"installed":"not installed",stdout:w,stderr:f}}var cE6=Dq(LE6,(q)=>q);async function xE6(){let{stdout:q}=await p_({reject:!1})`g++ --version`,$=q.split(Y9)[0].trim();return{result:q.startsWith("Apple clang")||q.startsWith("g++"),version:$,stdout:q}}var CW_=Dq(xE6);async function Hk(){let{result:q}=await CW_();return q}async function dE6(){let{stdout:q}=await p_({reject:!1})`ghc --version`,$=q.split(Y9)[0].trim();return{result:q.startsWith("The Glorious Glasgow Haskell Compilation System"),version:$,stdout:q}}var VW_=Dq(dE6);async function MW_(){let{result:q}=await VW_();return q}async function lE6(){let{stdout:q}=await p_({reject:!1})`clj --version`,$=q.split(Y9)[0].trim();return{result:q.startsWith("Clojure"),version:$,stdout:q}}var NW_=Dq(lE6);async function hW_(){let{result:q}=await NW_();return q}async function rE6(){let{stdout:q,stderr:$}=await p_({reject:!1})`javac -version`,w=q||$,f=w.split(Y9)[0].trim();return{result:w.startsWith("javac"),version:f,stdout:q,stderr:$}}var EW_=Dq(rE6);async function gW_(){let{result:q}=await EW_();return q}async function pE6(){let{stdout:q}=await p_({reject:!1})`rustc --version`,$=q.split(Y9)[0].trim();return{result:q.startsWith("rustc"),version:$,stdout:q}}var RW_=Dq(pE6);async function bW_(){let{result:q}=await RW_();return q}async function iE6(){return await a6(),{result:!1,version:"not implemented",stdout:""}}var IW_=Dq(iE6);async function yW_(){let{result:q}=await IW_();return q}async function nE6(){let{stdout:q,exitCode:$}=await p_({reject:!1})`jutge-code-metrics`,w="not reported";return{result:$===0,version:"not reported",stdout:q}}var SW_=Dq(nE6);async function mW_(){let{result:q}=await SW_();return q}async function aE6(){let{stdout:q}=await p_({reject:!1})`pdflatex --version`,$=q.split(Y9)[0].trim();return{result:q.includes("pdfTeX"),version:$,stdout:q}}var ah8=Dq(aE6);async function BE6(){let{stdout:q}=await p_({reject:!1})`xelatex --version`,$=q.split(Y9)[0].trim();return{result:q.includes("XeTeX"),version:$,stdout:q}}var LW_=Dq(BE6);async function cW_(){let{result:q}=await LW_();return q}async function FE6(){let{stdout:q}=await p_({reject:!1})`pandoc --version`,$=q.split(Y9)[0].trim();return{result:q.startsWith("pandoc")&&q.includes("+lua"),version:$,stdout:q}}var xW_=Dq(FE6);async function dW_(){let{result:q}=await xW_();return q}async function lW_(){u.command("python3 --version");let{result:q,version:$}=await jW_();if(u.print($),q){u.success("Python3 seems installed");let w="turtle-pil yogi easyinput multimetric".split(" ");for(let f of w){u.command(`python3 -m pip show ${f}`);let{result:K}=await cE6(f);if(K)u.success(`Module ${f} is installed`);else u.warning(`Module ${f} is not installed`)}}else u.warning("Python3 does not appear to be installed"),u.print("This is not a problem if you do not plan to use Python solutions"),u.print("See https://www.python.org/downloads/")}async function rW_(){u.command("g++ --version");let{result:q,version:$}=await CW_();if(u.print($),q)u.success("C/C++ seems installed");else u.warning("C/C++ does not appear to be installed"),u.print("This is not a problem if you do not plan to use C or C++ solutions"),u.print("Please install GCC or Clang")}async function pW_(){u.command("ghc --version");let{result:q,version:$}=await VW_();if(u.print($),q)u.success("Haskell seems installed");else u.warning("Haskell does not appear to be installed"),u.print("This is not a problem if you do not plan to use Haskell solutions"),u.print("See https://www.haskell.org/ghc/download.html")}async function iW_(){u.command("clj --version");let{result:q,version:$}=await NW_();if(u.print($),q)u.success("Clojure seems installed");else u.warning("Clojure does not appear to be installed"),u.print("This is not a problem if you do not plan to use Clojure solutions"),u.print("See https://clojure.org/guides/getting_started")}async function nW_(){u.command("javac -version");let{result:q,version:$}=await EW_();if(u.print($),q)u.success("Java seems installed");else u.warning("Java does not appear to be installed"),u.print("You will not be able to compile/execute Java solutions"),u.print("See https://www.oracle.com/java/technologies/javase-jdk11-downloads.html")}async function aW_(){u.command("rustc --version");let{result:q,version:$}=await RW_();if(u.print($),q)u.success("Rust seems installed");else u.warning("Rust does not appear to be installed"),u.print("You will not be able to compile/execute Rust solutions"),u.print("See https://www.rust-lang.org/tools/install")}async function BW_(){u.command("not implemented");let{result:q,version:$}=await IW_();if(u.print($),q)u.success("Verilog seems installed");else u.warning("Verilog does not appear to be installed, but this is not important for circuit problems")}async function FW_(){u.command("R --version");let{result:q,version:$}=await AW_();if(u.print($),q)u.success("R seems installed");else u.warning("R does not appear to be installed"),u.print("You will not be able to compile/execute R solutions"),u.print("See Google")}async function oW_(){u.command("jutge-code-metrics");let{result:q,version:$}=await SW_();if(u.print($),q)u.success("jutge-code-metrics seems installed");else u.warning("jutge-code-metrics does not appear to be installed"),u.print("You will not be able to compute code metrics when staging solutions"),u.print("Use python3 -m pip install jutge-toolkit to install it")}async function UW_(){u.command("xelatex --version");let{result:q,version:$}=await LW_();if(u.print($),q)u.success("XeLaTeX seems installed");else u.warning("XeLaTeX does not appear to be installed"),u.print("You will not be able to generate PDF statements"),u.print("Install a TeX distribution: macOS: brew install --cask mactex (or basictex for smaller install)"),u.print(" Ubuntu/Debian: sudo apt install texlive-full"),u.print(" Other: https://www.tug.org/texlive/ or https://miktex.org/")}async function QW_(){u.command("pandoc --version");let{result:q,version:$}=await xW_();if(u.print($),q)u.success("Pandoc with Lua support seems installed");else u.warning("Pandoc with Lua support does not appear to be installed"),u.print("You will not be able to generate text statements (HTML, TXT, MD)"),u.print("See https://pandoc.org/installing.html")}async function tW_(){if(await a6(),process.stdout.isTTY)u.success("Terminal supports TTY");else u.warning("Terminal does not support TTY"),u.print("Some output features may not work as expected");if(zq.isSupported)u.success("Terminal supports hyperlinks");else u.warning("Terminal does not support hyperlinks"),u.print("Links to files may not be clickable");let q=["EDITOR","VISUAL"];for(let $ of q)if(process.env[$])u.success(`${$} environment variable is set to "${process.env[$]}"`);else u.warning(`${$} environment variable is not set`)}var Zk={C:dG,"C++":lG,Python3:rG,Haskell:pG,Clojure:iG,Java:nG,Rust:aG,Verilog:UG,R:eG,PRO2:QG,MakePRO2:tG,RunPython:Ad,RunHaskell:ud,RunClojure:Cd},oE6={c:dG,cc:lG,hh:QG,tar:tG,py:rG,hs:pG,clj:iG,java:nG,rs:aG,v:UG,R:eG},hd={c:Hk,cc:Hk,hh:Hk,tar:Hk,py:GW_,hs:MW_,clj:hW_,java:gW_,rs:bW_,v:yW_,R:uW_};function Qf(q){let $=Zk[q];if(!$)throw Error(`Compiler '${q}' is not defined`);return new $}function kk(q){let $=oE6[q];if(!$)throw Error(`No compiler defined for extension '.${q}'`);return new $}async function sG(){return await a6(),Object.keys(Zk)}async function eW_(){let q=[];for(let $ of Object.keys(Zk))if(await new Zk[$]().available())q.push($);return q}async function UE6(q){let $=Qf(q);if(!$)throw Error(`Compiler '${q}' is not defined`);return await $.info()}async function sW_(){let q={};for(let $ of Object.keys(Zk))q[$]=await UE6($);return q}Yq();import{exists as OD,glob as l5}from"fs/promises";import{basename as eE6,join as a2,normalize as Dv_,sep as Yv_}from"path";Yq();async function B2(q){let $=new Jv_(q);return await $.load(),$}class Jv_{directory;structure="multi";language=null;handler;languages=[];originalLanguage=null;problemYml=null;problemLangYmls={};solutions=[];goldenSolution=null;testcases=[];constructor(q){if(q==="."||q==="./"||!q)this.directory=Dv_(process.cwd());else this.directory=Dv_(a2(q,"."))}async load(){await u.section(`Loading problem from ${this.directory}`,async()=>{if(await this.loadStructure(),await this.loadLanguages(),await this.loadHandler(),await this.loadProblemYml(),await this.loadOriginalLanguage(),this.handler.handler!=="game")await this.loadSolutions(),await this.loadGoldenSolution(),await this.loadTestcases(),await this.loadScores();await this.loadAwards()});let q=!1;if(!this.originalLanguage)u.error("No original language found"),q=!0;if(!this.goldenSolution)if(this.handler.handler==="game"||this.handler.handler==="quiz");else u.error("No golden solution found"),q=!0;if(q)throw Error("Inspection failed due to errors")}async loadStructure(){await u.section("Determining structure",async()=>{if(await a6(),this.directory.endsWith(".pbm"))this.structure="multi";else{this.structure="single";let q=a2(this.directory,"..");if(!q.endsWith(".pbm"))throw Error(`Parent directory ${q} is not a problem root directory (missing .pbm suffix)`)}u.print(this.structure)})}async loadLanguages(){await u.section("Loading languages",async()=>{if(this.structure==="multi")await this.loadLanguagesMulti();else await this.loadLanguagesSingle()})}async loadLanguagesMulti(){let $=(await Array.fromAsync(l5("problem.*.yml",{cwd:this.directory}))).map((w)=>{let f=w.match(/problem\.(.+)\.yml/);return f?f[1]:null}).filter((w)=>w&&(w in l6));this.languages=$,u.yaml(this.languages);for(let w of this.languages)await u.section(`Loading problem.${w}.yml`,async()=>{this.problemLangYmls[w]=await y1(this.directory,`problem.${w}.yml`),u.yaml(this.problemLangYmls[w]),jP.parse(this.problemLangYmls[w])})}async loadLanguagesSingle(){for(let q of Object.keys(l6)){let $=a2(this.directory,"..",q,`problem.${q}.yml`);if(await OD($))this.languages.push(q)}u.yaml(this.languages);for(let q of this.languages)await u.section(`Loading ..${Yv_}${q}${Yv_}problem.${q}.yml`,async()=>{this.problemLangYmls[q]=await y1(a2(this.directory,"..",q),`problem.${q}.yml`),u.yaml(this.problemLangYmls[q])});this.language=eE6(this.directory)}async loadHandler(){await u.section("Loading handler.yml",async()=>{let q=await y1(this.directory,"handler.yml");if(this.handler=WX.parse(q),this.handler.source_modifier==="structs")u.warning('source_modifier "structs" is deprecated, using "no_main" instead. please update handler.yml'),this.handler.source_modifier="no_main";if(this.handler.handler==="circuits")this.handler.solution="Verilog";if(this.handler.handler==="std"&&this.handler.solution==="C++"){let $=await Array.fromAsync(l5("solution.*",{cwd:this.directory}));if($.length===1){let w=$[0].split(".").pop(),f=P4[w];if(f)u.warning(`Assuming solution is in ${f} based on file extension .${w} (please update handler.yml)`),this.handler.solution=f}}u.yaml(this.handler)})}async loadScores(){await u.section("Loading scores.yml",async()=>{if(await OD(a2(this.directory,"scores.yml"))){let q=await y1(this.directory,"scores.yml"),$=I8_.parse(q);u.yaml($)}else u.print("no scoring, scores.yml not defined")})}async loadProblemYml(){await u.section("Loading problem.yml",async()=>{if(await OD(a2(this.directory,"problem.yml"))){let q=await y1(this.directory,"problem.yml"),$=mq.parse(q);u.yaml($)}else u.print("problem.yml not defined")})}async loadOriginalLanguage(){await u.section("Determining original language",async()=>{await a6();for(let q of this.languages)if("author"in this.problemLangYmls[q]){this.originalLanguage=q;break}if(!this.originalLanguage)throw Error("No original language found (a language with an author field)");u.print(this.originalLanguage)})}async loadSolutions(){if(this.handler.handler==="quiz")return;await u.section("Loading solutions",async()=>{if(this.handler.compilers==="PRO2"){let q=await Array.fromAsync(l5("solution{.tar,.cc,.hh}",{cwd:this.directory}));this.solutions=q.sort()}else if(this.handler.compilers==="MakePRO2")this.solutions=["solution.tar"];else{let{proglangNames:q}=await Promise.resolve().then(() => (Yq(),_A)),$=Object.keys(q).join(","),w=await Array.fromAsync(l5(`solution.{${$}}`,{cwd:this.directory}));this.solutions=w.sort()}if(u.yaml(this.solutions),this.solutions.length===0)throw Error("No solutions found")})}async loadGoldenSolution(){if(this.handler.handler==="quiz")return;await u.section("Determining golden solution",async()=>{let{proglangExtensions:q}=await Promise.resolve().then(() => (Yq(),_A));if(this.handler.handler==="circuits")this.goldenSolution="solution.v";else if(this.handler.compilers==="RunPython")this.goldenSolution="solution.py";else if(this.handler.compilers==="RunHaskell"||this.handler.compilers==="GHC")this.goldenSolution="solution.hs";else if(this.handler.compilers==="RunClojure"||this.handler.compilers==="Clojure")this.goldenSolution="solution.clj";else if(this.handler.compilers==="PRO2")if(await l8(this.directory,"solution.hh"))this.goldenSolution="solution.hh";else if(await l8(this.directory,"solution.cc"))this.goldenSolution="solution.cc";else throw Error(`Didn't find "solution.hh" or "solution.cc" for PRO2!`);else if(this.handler.compilers==="MakePRO2")if(await l8(this.directory,"solution")||await l8(this.directory,"solution.tar"))this.goldenSolution="solution.tar";else throw Error(`Didn't find "solution" or "solution.tar" for MakePRO2!`);else{let $=this.handler.solution,w=q[$];if(!w)throw Error(`Unknown programming language ${$} for solution`);let f=a2(this.directory,`solution.${w}`);if(!await OD(f))throw Error(`Golden solution file ${f} not found`);this.goldenSolution=`solution.${w}`}u.print(this.goldenSolution)})}async loadTestcases(){if(this.handler.handler==="quiz")return;await u.section("Loading testcases",async()=>{let q=await Array.fromAsync(l5("*.inp",{cwd:this.directory}));this.testcases=q.map(($)=>$.replace(".inp","")).sort(),u.yaml(this.testcases)})}async reloadTestcases(){if(this.handler.handler==="quiz")return;let q=await Array.fromAsync(l5("*.inp",{cwd:this.directory}));this.testcases=q.map(($)=>$.replace(".inp","")).sort()}async reloadSolutions(){if(this.handler.handler==="quiz")return;let{proglangNames:q,proglangExtensions:$}=await Promise.resolve().then(() => (Yq(),_A));if(this.handler.compilers==="PRO2"){let w=await Array.fromAsync(l5("solution{.tar,.cc,.hh}",{cwd:this.directory}));this.solutions=w.sort()}else if(this.handler.compilers==="MakePRO2")this.solutions=await l8(this.directory,"solution")?["solution.tar"]:[];else{let w=Object.keys(q).join(","),f=await Array.fromAsync(l5(`solution.{${w}}`,{cwd:this.directory}));this.solutions=f.sort()}if(this.solutions.length===0)return;if(this.handler.handler==="circuits")this.goldenSolution="solution.v";else if(this.handler.compilers==="RunPython")this.goldenSolution="solution.py";else if(this.handler.compilers==="RunHaskell"||this.handler.compilers==="GHC")this.goldenSolution="solution.hs";else if(this.handler.compilers==="RunClojure"||this.handler.compilers==="Clojure")this.goldenSolution="solution.clj";else if(this.handler.compilers==="PRO2"){if(await l8(this.directory,"solution.hh"))this.goldenSolution="solution.hh";else if(await l8(this.directory,"solution.cc"))this.goldenSolution="solution.cc"}else if(this.handler.compilers==="MakePRO2"){if(await l8(this.directory,"solution"))this.goldenSolution="solution.tar"}else{let w=this.handler.solution,f=$[w];if(f&&await l8(this.directory,`solution.${f}`))this.goldenSolution=`solution.${f}`}}async loadAwards(){await u.section("Loading awards",async()=>{if(await OD(a2(this.directory,"award.html")))u.success(u.hyperlink(this.directory,"award.html")+" found");else u.warning("award.html not found");if(await OD(a2(this.directory,"award.png"))){u.success(u.hyperlink(this.directory,"award.png")+" found");let q=await xG(a2(this.directory,"award.png"));await u.image(a2(this.directory,"award.png"),6,3),u.print(`${q.width}x${q.height}`)}else u.warning("award.png not found")})}}var Zv_=Z6(H8(),"assets","latex");async function $A(q,$="DRAFT"){let w=await B2(q);return new kv_(w,$)}class kv_{problem;problem_nm;constructor(q,$){this.problem=q,this.problem_nm=$}async showDirectory(){await u.section("Directory",async()=>{await a6(),u.directory(Hv_(this.problem.directory));let q=wg6(Hv_(this.problem.directory));if(!q.endsWith(".pbm")){let $=qg6(q),w=$g6(q);if(!Object.keys(l6).includes($)||!w.endsWith(".pbm"))throw Error("The problem directory should end with .pbm or be a language id inside a .pbm directory")}})}async makeProblem(){if(this.problem.handler.handler==="game")return await this.makeGameProblem();else if(this.problem.handler.handler==="quiz")return await this.makeQuizProblem();else await this.makeTarFiles(),await this.makeGoldenExecutable(),await this.makeCorrectOutputs(),await this.checkSolutions(),await this.makePdfStatements(),await this.makeFullTextualStatements(),await this.makeShortTextualStatements()}async makeQuizProblem(){}async makeGameProblem(){let q=Z6(this.problem.directory,"Doc");await u.section(`Creating documentation in ${u.hyperlink(this.problem.directory,"Doc")}`,async()=>{u.command("make all");let{exitCode:f}=await p_({stderr:"inherit",cwd:q})`make all`;if(f===0)u.success("make completed successfully");else throw u.error("make failed"),Error("make failed")});let $=Z6(this.problem.directory,"Runner");await u.section(`Compiling files in ${u.hyperlink(this.problem.directory,"Runner")}`,async()=>{u.command("make all");let{exitCode:f}=await p_({stdout:"inherit",stderr:"inherit",cwd:$})`make all`;if(f===0)u.success("make completed successfully");else throw u.error("make failed"),Error("make failed")});let w=Z6(this.problem.directory,"Public");await u.section(`Preparing files in ${u.hyperlink(this.problem.directory,"Public")}`,async()=>{await _g6(w,{recursive:!0,force:!0}),await Xk(w,{recursive:!0});let f=[],K=[],z=["README.{txt,md}","Makefile","*.cc","*.hh","*.cnf"];for(let P of z){let D=await Array.fromAsync(bd(P,{cwd:$}));for(let Y of D.sort()){let J=Z6($,Y),Z=Z6(w,Y);if(this.problem.handler.game?.hide.includes(Y))K.push(Y);else f.push(Y),await Jq(J,Z)}}u.success(`Published files: ${f.join(" ")}`),u.warning(`Hidden files: ${K.join(" ")}`)})}async makeExecutable(q){if(this.problem.handler.handler!=="circuits"){let f=q.split(".").pop(),K=hd[f];if(!K)throw Error(`No compiler found for .${f} files`);if(!await K())throw Error(`Compiler for .${f} files is not available`)}let $=this.selectCompiler(),w=`${u8()}-${q}`;await u.section(`Copying ${u.hyperlink(this.problem.directory,q)} to ${u.hyperlink(this.problem.directory,w)}`,async()=>{await Jq(Z6(this.problem.directory,q),Z6(this.problem.directory,w))}),await u.section(`Compiling ${u.hyperlink(this.problem.directory,w)} with ${$.name()} (${this.problem.handler.source_modifier})`,async()=>{try{let f;if(this.problem.handler.source_modifier==="none")f=await $.compileNormal(this.problem.handler,this.problem.directory,w);else if(this.problem.handler.source_modifier==="no_main")f=await $.compileWithMain(this.problem.handler,this.problem.directory,w);else throw Error(`Unknown source modifier: ${this.problem.handler.source_modifier}`);if(!await qA(Z6(this.problem.directory,f)))throw Error(`Compilation failed for ${w}`);u.success(`Compiled ${w} to ${f}`)}catch(f){throw Error("Compilation failed",{cause:f})}})}async makeExecutables(){await u.section("Compiling solutions",async()=>{for(let q of this.problem.solutions)await this.makeExecutable(q)})}async makeGoldenExecutable(){await u.section(`Compiling golden solution from ${u.hyperlink(this.problem.directory,this.problem.goldenSolution)}`,async()=>{if(!this.problem.goldenSolution)throw Error("Golden solution not set");await this.makeExecutable(this.problem.goldenSolution)})}async checkSolutions(){for(let q of this.problem.solutions)if(q!==this.problem.goldenSolution)await this.verifyCandidate(q)}async makeCorrectOutput(q,$,w){return await this.runTestcase(q,`${q}.inp`,`${q}.cor`,$,u8()+"-"+w)}async runTestcase(q,$,w,f,K){let z=!1,P=Date.now();try{await f.execute(this.problem.handler,this.problem.directory,K,$,w)}catch(k){u.error(`Execution failed for testcase '${q}'`),z=!0}let Y=Date.now()-P;if(this.problem.handler.handler==="graphic")await sE6(Z6(this.problem.directory,"output.png"),Z6(this.problem.directory,w));let J=await Sy(Z6(this.problem.directory,$)),Z=await Sy(Z6(this.problem.directory,w));return{testcase:q,error:z,time:Y,inputSize:J,outputSize:Z}}selectCompiler(){if(this.problem.handler.compilers==="PRO2")return Qf("PRO2");else if(this.problem.handler.compilers==="MakePRO2")return Qf("MakePRO2");else if(this.problem.handler.compilers==="RunPython")return Qf("RunPython");else if(this.problem.handler.compilers==="RunHaskell")return Qf("RunHaskell");else if(this.problem.handler.compilers==="RunClojure")return Qf("RunClojure");else{let q=this.problem.goldenSolution.split(".").pop();return kk(q)}}async makeCorrectOutputs(){let q=this.selectCompiler();await u.section("Making correct outputs with golden solution",async()=>{await u.section(`Using ${q.name()}`,async()=>{let $=[];for(let f of this.problem.testcases)$.push(await this.makeCorrectOutput(f,q,this.problem.goldenSolution));u.print(),u.print("testcase time input output");for(let f of $){let K=Bw(f.time),z=ZD(f.inputSize).replace(" ",""),P=ZD(f.outputSize).replace(" ","");u.print((f.error?y_.red:y_.green)(`${f.testcase.padEnd(12)} ${K.padStart(10)} ${z.padStart(10)} ${P.padStart(10)}`))}let w=$.filter((f)=>f.error).length;if(w>0)throw u.print(),Error(`${w} errors occurred while making correct answers`)})})}async makeCorrectOutputForTestcase(q){if(!this.problem.goldenSolution)return;let $=this.selectCompiler();await u.section(`Making correct output for ${q}`,async()=>{await u.section(`Using ${$.name()}`,async()=>{let w=await this.makeCorrectOutput(q,$,this.problem.goldenSolution),f=Bw(w.time),K=ZD(w.inputSize).replace(" ",""),z=ZD(w.outputSize).replace(" ","");if(u.print("testcase time input output"),u.print((w.error?y_.red:y_.green)(`${w.testcase.padEnd(12)} ${f.padStart(10)} ${K.padStart(10)} ${z.padStart(10)}`)),w.error)throw Error(`Error making correct output for ${q}`)})})}async remakeStatements(){await this.makePdfStatements(),await this.makeFullTextualStatements(["txt","html","md"]),await this.makeShortTextualStatements(["txt","html","md"])}async makePdfStatements(){await u.section("Making PDF statements",async()=>{let q=Z6(this.problem.directory,u8()+"-pdf",$q());await Xk(q,{recursive:!0}),await u.section("Creating working directory",async()=>{await a6(),u.directory(q)});for(let $ of this.problem.languages)if(this.problem.structure==="multi"||this.problem.structure==="single"&&$===this.problem.language)await u.section(`Making PDF statement for ${l6[$]}`,async()=>{await this.makePdfStatement(q,$)})})}async makeSamples(q,$){let w=this.problem.handler.handler==="graphic",f=[],K=[],z=0;for(let D of this.problem.testcases)if(D.includes("sample"))z++;let P=1;for(let D of this.problem.testcases)if(D.includes("sample")){let Y="";if(w){await Jq(Z6(this.problem.directory,`${D}.cor`),Z6(q,`${D}.cor.png`));let J=await xG(Z6(q,`${D}.cor.png`));Y=`(${J.width}$\\times$${J.height})`}if(z>1)f.push(`
|
|
610
|
+
`),f}async execute(q,$,w,f,K){}}import{cp as Vd,glob as TW_,mkdir as NE6,rm as hE6}from"fs/promises";import{basename as EE6,extname as gE6,join as Uf}from"path";class QG extends N8{id(){return"PRO2"}name(){return"PRO2 Project C++ Compiler"}type(){return"compiler"}language(){return"C++"}async version(){return await this.getVersion("g++ --version",0)}flags1(){return"-std=c++17 -D_JUDGE_ -O2 -D_GLIBCXX_DEBUG -DNDEBUG -Wall -Wextra -Wno-sign-compare -Wshadow"}flags2(){return"-std=c++17 -D_JUDGE_ -O2 -D_GLIBCXX_DEBUG -DNDEBUG -Wall -Wextra -Wno-sign-compare -Wshadow"}tool(){return"g++"}extension(){return"hh"}async compileNormal(q,$,w){let f=`${w}.exe`,K=Uf($,`${u8()}-PRO2/${$q()}`);await hE6(K,{recursive:!0,force:!0}),await NE6(K,{recursive:!0}),u.print(`Using working directory ${u.hyperlink($,K)}`);for(let D of["public","private"]){let Y=await Array.fromAsync(TW_(`${D}/*.{cc,hh}`,{cwd:$}));for(let J of Y){let Z=Uf(K,EE6(J));await Vd(Uf($,J),Z)}}let z=gE6(w);await Vd(Uf($,w),Uf(K,`program${z}`));let P=await Array.fromAsync(TW_("*.cc",{cwd:K}));if(await p_({reject:!1,stderr:"inherit",stdout:"inherit",cwd:K})`${this.tool()} ${this.flags1().split(" ")} -o ${f} ${P}`,!await l8(K,f))throw Error(`Compilation failed for ${w}`);return await Vd(Uf(K,f),Uf($,f)),f}}import{cp as Md,glob as XW_,mkdir as RE6,rm as bE6}from"fs/promises";import{basename as IE6,join as d5}from"path";class tG extends N8{id(){return"MakePRO2"}name(){return"PRO2 Makefile C++ Compiler"}type(){return"compiler"}language(){return"C++"}async version(){return await this.getVersion("g++ --version",0)}flags1(){return""}flags2(){return""}tool(){return"make"}extension(){return"tar"}async compileNormal(q,$,w){let f=`${w}.exe`,K=`${u8()}-MakePRO2/${$q()}`;await bE6(K,{recursive:!0,force:!0}),await RE6(K,{recursive:!0}),u.print(`Using working directory ${u.hyperlink($,K)}`);for(let P of["public","private","solution"]){let D=await Array.fromAsync(XW_(`${P}/*.{cc,hh,cpp,hpp,tpp}`,{cwd:$}));for(let Y of D){let J=d5(K,IE6(Y));await Md(d5($,Y),J)}if(await l8(d5($,P),"Makefile")){let Y=d5(K,"Makefile");await Md(d5($,P,"Makefile"),Y)}}if(!await l8($,"solution"))await p_({cwd:K})`tar xf ${d5($,w)}`;let z=await Array.fromAsync(XW_("*.cc",{cwd:K}));if(await p_({reject:!1,stderr:"inherit",stdout:"inherit",cwd:K})`${this.tool()}`,!await l8(K,"program.exe"))throw Error(`"program.exe" not found after calling 'make'`);return await Md(d5(K,"program.exe"),d5($,f)),f}}import{join as yE6}from"path";class eG extends N8{id(){return"R"}name(){return"R"}type(){return"interpreter"}language(){return"R"}async version(){return await this.getVersion("R --version",0)}flags1(){return""}flags2(){return""}tool(){return"R"}extension(){return"R"}async compileNormal(q,$,w){return await a6(),u.warning("No compilation available for R"),w}async compileWithMain(q,$,w){return await a6(),u.warning("No compilation available for R"),w}async execute(q,$,w,f,K){let z=w;await this.rmInDir($,K);let P=await this.getInput($,f);u.command(`Rscript ${z} < ${f} > ${K}`);let{exitCode:D}=await p_({reject:!1,input:P,stdout:{file:yE6($,K)},stderr:"inherit",cwd:$})`Rscript ${z}`;if(D!==0)throw Error(`Execution failed for ${z}`)}}var Y9=/\r?\n/;function Dq(q,$){let w=new Map;return(...f)=>{let K=$?$(...f):JSON.stringify(f);if(!w.has(K))w.set(K,q(...f));return w.get(K)}}async function SE6(){let{stdout:q}=await p_({reject:!1})`python3 --version`,$=q.trim();return{result:$.startsWith("Python 3"),version:$,stdout:q}}var jW_=Dq(SE6);async function GW_(){let{result:q}=await jW_();return q}async function mE6(){let{stdout:q}=await p_({reject:!1})`R --version`,$=q.split(Y9)[0].trim();return{result:$.startsWith("R version"),version:$,stdout:q}}var AW_=Dq(mE6);async function uW_(){let{result:q}=await AW_();return q}async function LE6(q){let{exitCode:$,stdout:w,stderr:f}=await p_({reject:!1})`python3 -m pip show ${q}`;return{result:$===0,version:$===0?"installed":"not installed",stdout:w,stderr:f}}var cE6=Dq(LE6,(q)=>q);async function xE6(){let{stdout:q}=await p_({reject:!1})`g++ --version`,$=q.split(Y9)[0].trim();return{result:q.startsWith("Apple clang")||q.startsWith("g++"),version:$,stdout:q}}var CW_=Dq(xE6);async function Hk(){let{result:q}=await CW_();return q}async function dE6(){let{stdout:q}=await p_({reject:!1})`ghc --version`,$=q.split(Y9)[0].trim();return{result:q.startsWith("The Glorious Glasgow Haskell Compilation System"),version:$,stdout:q}}var VW_=Dq(dE6);async function MW_(){let{result:q}=await VW_();return q}async function lE6(){let{stdout:q}=await p_({reject:!1})`clj --version`,$=q.split(Y9)[0].trim();return{result:q.startsWith("Clojure"),version:$,stdout:q}}var NW_=Dq(lE6);async function hW_(){let{result:q}=await NW_();return q}async function rE6(){let{stdout:q,stderr:$}=await p_({reject:!1})`javac -version`,w=q||$,f=w.split(Y9)[0].trim();return{result:w.startsWith("javac"),version:f,stdout:q,stderr:$}}var EW_=Dq(rE6);async function gW_(){let{result:q}=await EW_();return q}async function pE6(){let{stdout:q}=await p_({reject:!1})`rustc --version`,$=q.split(Y9)[0].trim();return{result:q.startsWith("rustc"),version:$,stdout:q}}var RW_=Dq(pE6);async function bW_(){let{result:q}=await RW_();return q}async function iE6(){return await a6(),{result:!1,version:"not implemented",stdout:""}}var IW_=Dq(iE6);async function yW_(){let{result:q}=await IW_();return q}async function nE6(){let{stdout:q,exitCode:$}=await p_({reject:!1})`jutge-code-metrics`,w="not reported";return{result:$===0,version:"not reported",stdout:q}}var SW_=Dq(nE6);async function mW_(){let{result:q}=await SW_();return q}async function aE6(){let{stdout:q}=await p_({reject:!1})`pdflatex --version`,$=q.split(Y9)[0].trim();return{result:q.includes("pdfTeX"),version:$,stdout:q}}var ah8=Dq(aE6);async function BE6(){let{stdout:q}=await p_({reject:!1})`xelatex --version`,$=q.split(Y9)[0].trim();return{result:q.includes("XeTeX"),version:$,stdout:q}}var LW_=Dq(BE6);async function cW_(){let{result:q}=await LW_();return q}async function FE6(){let{stdout:q}=await p_({reject:!1})`pandoc --version`,$=q.split(Y9)[0].trim();return{result:q.startsWith("pandoc")&&q.includes("+lua"),version:$,stdout:q}}var xW_=Dq(FE6);async function dW_(){let{result:q}=await xW_();return q}async function lW_(){u.command("python3 --version");let{result:q,version:$}=await jW_();if(u.print($),q){u.success("Python3 seems installed");let w="turtle-pil yogi easyinput multimetric".split(" ");for(let f of w){u.command(`python3 -m pip show ${f}`);let{result:K}=await cE6(f);if(K)u.success(`Module ${f} is installed`);else u.warning(`Module ${f} is not installed`)}}else u.warning("Python3 does not appear to be installed"),u.print("This is not a problem if you do not plan to use Python solutions"),u.print("See https://www.python.org/downloads/")}async function rW_(){u.command("g++ --version");let{result:q,version:$}=await CW_();if(u.print($),q)u.success("C/C++ seems installed");else u.warning("C/C++ does not appear to be installed"),u.print("This is not a problem if you do not plan to use C or C++ solutions"),u.print("Please install GCC or Clang")}async function pW_(){u.command("ghc --version");let{result:q,version:$}=await VW_();if(u.print($),q)u.success("Haskell seems installed");else u.warning("Haskell does not appear to be installed"),u.print("This is not a problem if you do not plan to use Haskell solutions"),u.print("See https://www.haskell.org/ghc/download.html")}async function iW_(){u.command("clj --version");let{result:q,version:$}=await NW_();if(u.print($),q)u.success("Clojure seems installed");else u.warning("Clojure does not appear to be installed"),u.print("This is not a problem if you do not plan to use Clojure solutions"),u.print("See https://clojure.org/guides/getting_started")}async function nW_(){u.command("javac -version");let{result:q,version:$}=await EW_();if(u.print($),q)u.success("Java seems installed");else u.warning("Java does not appear to be installed"),u.print("You will not be able to compile/execute Java solutions"),u.print("See https://www.oracle.com/java/technologies/javase-jdk11-downloads.html")}async function aW_(){u.command("rustc --version");let{result:q,version:$}=await RW_();if(u.print($),q)u.success("Rust seems installed");else u.warning("Rust does not appear to be installed"),u.print("You will not be able to compile/execute Rust solutions"),u.print("See https://www.rust-lang.org/tools/install")}async function BW_(){u.command("not implemented");let{result:q,version:$}=await IW_();if(u.print($),q)u.success("Verilog seems installed");else u.warning("Verilog does not appear to be installed, but this is not important for circuit problems")}async function FW_(){u.command("R --version");let{result:q,version:$}=await AW_();if(u.print($),q)u.success("R seems installed");else u.warning("R does not appear to be installed"),u.print("You will not be able to compile/execute R solutions"),u.print("See Google")}async function oW_(){u.command("jutge-code-metrics");let{result:q,version:$}=await SW_();if(u.print($),q)u.success("jutge-code-metrics seems installed");else u.warning("jutge-code-metrics does not appear to be installed"),u.print("You will not be able to compute code metrics when staging solutions"),u.print("Use python3 -m pip install jutge-toolkit to install it")}async function UW_(){u.command("xelatex --version");let{result:q,version:$}=await LW_();if(u.print($),q)u.success("XeLaTeX seems installed");else u.warning("XeLaTeX does not appear to be installed"),u.print("You will not be able to generate PDF statements"),u.print("Install a TeX distribution: macOS: brew install --cask mactex (or basictex for smaller install)"),u.print(" Ubuntu/Debian: sudo apt install texlive-full"),u.print(" Other: https://www.tug.org/texlive/ or https://miktex.org/")}async function QW_(){u.command("pandoc --version");let{result:q,version:$}=await xW_();if(u.print($),q)u.success("Pandoc with Lua support seems installed");else u.warning("Pandoc with Lua support does not appear to be installed"),u.print("You will not be able to generate text statements (HTML, TXT, MD)"),u.print("See https://pandoc.org/installing.html")}async function tW_(){if(await a6(),process.stdout.isTTY)u.success("Terminal supports TTY");else u.warning("Terminal does not support TTY"),u.print("Some output features may not work as expected");if(zq.isSupported)u.success("Terminal supports hyperlinks");else u.warning("Terminal does not support hyperlinks"),u.print("Links to files may not be clickable");let q=["EDITOR","VISUAL"];for(let $ of q)if(process.env[$])u.success(`${$} environment variable is set to "${process.env[$]}"`);else u.warning(`${$} environment variable is not set`)}var Zk={C:dG,"C++":lG,Python3:rG,Haskell:pG,Clojure:iG,Java:nG,Rust:aG,Verilog:UG,R:eG,PRO2:QG,MakePRO2:tG,RunPython:Ad,RunHaskell:ud,RunClojure:Cd},oE6={c:dG,cc:lG,hh:QG,tar:tG,py:rG,hs:pG,clj:iG,java:nG,rs:aG,v:UG,R:eG},hd={c:Hk,cc:Hk,hh:Hk,tar:Hk,py:GW_,hs:MW_,clj:hW_,java:gW_,rs:bW_,v:yW_,R:uW_};function Qf(q){let $=Zk[q];if(!$)throw Error(`Compiler '${q}' is not defined`);return new $}function kk(q){let $=oE6[q];if(!$)throw Error(`No compiler defined for extension '.${q}'`);return new $}async function sG(){return await a6(),Object.keys(Zk)}async function eW_(){let q=[];for(let $ of Object.keys(Zk))if(await new Zk[$]().available())q.push($);return q}async function UE6(q){let $=Qf(q);if(!$)throw Error(`Compiler '${q}' is not defined`);return await $.info()}async function sW_(){let q={};for(let $ of Object.keys(Zk))q[$]=await UE6($);return q}Yq();import{exists as OD,glob as l5}from"fs/promises";import{basename as eE6,join as a2,normalize as Dv_,sep as Yv_}from"path";Yq();async function B2(q){let $=new Jv_(q);return await $.load(),$}class Jv_{directory;structure="multi";language=null;handler;languages=[];originalLanguage=null;problemYml=null;problemLangYmls={};solutions=[];goldenSolution=null;testcases=[];constructor(q){if(q==="."||q==="./"||!q)this.directory=Dv_(process.cwd());else this.directory=Dv_(a2(q,"."))}async load(){await u.section(`Loading problem from ${this.directory}`,async()=>{if(await this.loadStructure(),await this.loadLanguages(),await this.loadHandler(),await this.loadProblemYml(),await this.loadOriginalLanguage(),this.handler.handler!=="game")await this.loadSolutions(),await this.loadGoldenSolution(),await this.loadTestcases(),await this.loadScores();await this.loadAwards()});let q=!1;if(!this.originalLanguage)u.error("No original language found"),q=!0;if(!this.goldenSolution)if(this.handler.handler==="game"||this.handler.handler==="quiz");else u.error("No golden solution found"),q=!0;if(q)throw Error("Inspection failed due to errors")}async loadStructure(){await u.section("Determining structure",async()=>{if(await a6(),this.directory.endsWith(".pbm"))this.structure="multi";else{this.structure="single";let q=a2(this.directory,"..");if(!q.endsWith(".pbm"))throw Error(`Parent directory ${q} is not a problem root directory (missing .pbm suffix)`)}u.print(this.structure)})}async loadLanguages(){await u.section("Loading languages",async()=>{if(this.structure==="multi")await this.loadLanguagesMulti();else await this.loadLanguagesSingle()})}async loadLanguagesMulti(){let $=(await Array.fromAsync(l5("problem.*.yml",{cwd:this.directory}))).map((w)=>{let f=w.match(/problem\.(.+)\.yml/);return f?f[1]:null}).filter((w)=>w&&(w in l6));this.languages=$,u.yaml(this.languages);for(let w of this.languages)await u.section(`Loading problem.${w}.yml`,async()=>{this.problemLangYmls[w]=await y1(this.directory,`problem.${w}.yml`),u.yaml(this.problemLangYmls[w]),jP.parse(this.problemLangYmls[w])})}async loadLanguagesSingle(){for(let q of Object.keys(l6)){let $=a2(this.directory,"..",q,`problem.${q}.yml`);if(await OD($))this.languages.push(q)}u.yaml(this.languages);for(let q of this.languages)await u.section(`Loading ..${Yv_}${q}${Yv_}problem.${q}.yml`,async()=>{this.problemLangYmls[q]=await y1(a2(this.directory,"..",q),`problem.${q}.yml`),u.yaml(this.problemLangYmls[q])});this.language=eE6(this.directory)}async loadHandler(){await u.section("Loading handler.yml",async()=>{let q=await y1(this.directory,"handler.yml");if(this.handler=WX.parse(q),this.handler.source_modifier==="structs")u.warning('source_modifier "structs" is deprecated, using "no_main" instead. please update handler.yml'),this.handler.source_modifier="no_main";if(this.handler.handler==="circuits")this.handler.solution="Verilog";if(this.handler.handler==="std"&&this.handler.solution==="C++"){let $=await Array.fromAsync(l5("solution.*",{cwd:this.directory}));if($.length===1){let w=$[0].split(".").pop(),f=P4[w];if(f)u.warning(`Assuming solution is in ${f} based on file extension .${w} (please update handler.yml)`),this.handler.solution=f}}u.yaml(this.handler)})}async loadScores(){await u.section("Loading scores.yml",async()=>{if(await OD(a2(this.directory,"scores.yml"))){let q=await y1(this.directory,"scores.yml"),$=I8_.parse(q);u.yaml($)}else u.print("no scoring, scores.yml not defined")})}async loadProblemYml(){await u.section("Loading problem.yml",async()=>{if(await OD(a2(this.directory,"problem.yml"))){let q=await y1(this.directory,"problem.yml"),$=mq.parse(q);u.yaml($)}else u.print("problem.yml not defined")})}async loadOriginalLanguage(){await u.section("Determining original language",async()=>{await a6();for(let q of this.languages)if("author"in this.problemLangYmls[q]){this.originalLanguage=q;break}if(!this.originalLanguage)throw Error("No original language found (a language with an author field)");u.print(this.originalLanguage)})}async loadSolutions(){if(this.handler.handler==="quiz")return;await u.section("Loading solutions",async()=>{if(this.handler.compilers==="PRO2"){let q=await Array.fromAsync(l5("solution{.tar,.cc,.hh}",{cwd:this.directory}));this.solutions=q.sort()}else if(this.handler.compilers==="MakePRO2")this.solutions=["solution.tar"];else{let{proglangNames:q}=await Promise.resolve().then(() => (Yq(),_A)),$=Object.keys(q).join(","),w=await Array.fromAsync(l5(`solution.{${$}}`,{cwd:this.directory}));this.solutions=w.sort()}if(u.yaml(this.solutions),this.solutions.length===0)throw Error("No solutions found")})}async loadGoldenSolution(){if(this.handler.handler==="quiz")return;await u.section("Determining golden solution",async()=>{let{proglangExtensions:q}=await Promise.resolve().then(() => (Yq(),_A));if(this.handler.handler==="circuits")this.goldenSolution="solution.v";else if(this.handler.compilers==="RunPython")this.goldenSolution="solution.py";else if(this.handler.compilers==="RunHaskell"||this.handler.compilers==="GHC")this.goldenSolution="solution.hs";else if(this.handler.compilers==="RunClojure"||this.handler.compilers==="Clojure")this.goldenSolution="solution.clj";else if(this.handler.compilers==="PRO2")if(await l8(this.directory,"solution.hh"))this.goldenSolution="solution.hh";else if(await l8(this.directory,"solution.cc"))this.goldenSolution="solution.cc";else throw Error(`Didn't find "solution.hh" or "solution.cc" for PRO2!`);else if(this.handler.compilers==="MakePRO2")if(await l8(this.directory,"solution")||await l8(this.directory,"solution.tar"))this.goldenSolution="solution.tar";else throw Error(`Didn't find "solution" or "solution.tar" for MakePRO2!`);else{let $=this.handler.solution,w=q[$];if(!w)throw Error(`Unknown programming language ${$} for solution`);let f=a2(this.directory,`solution.${w}`);if(!await OD(f))throw Error(`Golden solution file ${f} not found`);this.goldenSolution=`solution.${w}`}u.print(this.goldenSolution)})}async loadTestcases(){if(this.handler.handler==="quiz")return;await u.section("Loading testcases",async()=>{let q=await Array.fromAsync(l5("*.inp",{cwd:this.directory}));this.testcases=q.map(($)=>$.replace(".inp","")).sort(),u.yaml(this.testcases)})}async reloadTestcases(){if(this.handler.handler==="quiz")return;let q=await Array.fromAsync(l5("*.inp",{cwd:this.directory}));this.testcases=q.map(($)=>$.replace(".inp","")).sort()}async reloadSolutions(){if(this.handler.handler==="quiz")return;let{proglangNames:q,proglangExtensions:$}=await Promise.resolve().then(() => (Yq(),_A));if(this.handler.compilers==="PRO2"){let w=await Array.fromAsync(l5("solution{.tar,.cc,.hh}",{cwd:this.directory}));this.solutions=w.sort()}else if(this.handler.compilers==="MakePRO2")this.solutions=await l8(this.directory,"solution")?["solution.tar"]:[];else{let w=Object.keys(q).join(","),f=await Array.fromAsync(l5(`solution.{${w}}`,{cwd:this.directory}));this.solutions=f.sort()}if(this.solutions.length===0)return;if(this.handler.handler==="circuits")this.goldenSolution="solution.v";else if(this.handler.compilers==="RunPython")this.goldenSolution="solution.py";else if(this.handler.compilers==="RunHaskell"||this.handler.compilers==="GHC")this.goldenSolution="solution.hs";else if(this.handler.compilers==="RunClojure"||this.handler.compilers==="Clojure")this.goldenSolution="solution.clj";else if(this.handler.compilers==="PRO2"){if(await l8(this.directory,"solution.hh"))this.goldenSolution="solution.hh";else if(await l8(this.directory,"solution.cc"))this.goldenSolution="solution.cc"}else if(this.handler.compilers==="MakePRO2"){if(await l8(this.directory,"solution"))this.goldenSolution="solution.tar"}else{let w=this.handler.solution,f=$[w];if(f&&await l8(this.directory,`solution.${f}`))this.goldenSolution=`solution.${f}`}}async loadAwards(){await u.section("Loading awards",async()=>{if(await OD(a2(this.directory,"award.html")))u.success(u.hyperlink(this.directory,"award.html")+" found");else u.warning("award.html not found");if(await OD(a2(this.directory,"award.png"))){u.success(u.hyperlink(this.directory,"award.png")+" found");let q=await xG(a2(this.directory,"award.png"));await u.image(a2(this.directory,"award.png"),6,3),u.print(`${q.width}x${q.height}`)}else u.warning("award.png not found")})}}var Zv_=Z6(H8(),"assets","latex");async function $A(q,$="DRAFT"){let w=await B2(q);return new kv_(w,$)}class kv_{problem;problem_nm;constructor(q,$){this.problem=q,this.problem_nm=$}async showDirectory(){await u.section("Directory",async()=>{await a6(),u.directory(Hv_(this.problem.directory));let q=wg6(Hv_(this.problem.directory));if(!q.endsWith(".pbm")){let $=qg6(q),w=$g6(q);if(!Object.keys(l6).includes($)||!w.endsWith(".pbm"))throw Error("The problem directory should end with .pbm or be a language id inside a .pbm directory")}})}async makeProblem(){if(this.problem.handler.handler==="game")return await this.makeGameProblem();else if(this.problem.handler.handler==="quiz")return await this.makeQuizProblem();else await this.makeTarFiles(),await this.makeGoldenExecutable(),await this.makeCorrectOutputs(),await this.checkSolutions(),await this.makePdfStatements(),await this.makeFullTextualStatements(),await this.makeShortTextualStatements()}async makeQuizProblem(){}async makeGameProblem(){let q=Z6(this.problem.directory,"Doc");await u.section(`Creating documentation in ${u.hyperlink(this.problem.directory,"Doc")}`,async()=>{u.command("make all");let{exitCode:f}=await p_({stderr:"inherit",cwd:q})`make all`;if(f===0)u.success("make completed successfully");else throw u.error("make failed"),Error("make failed")});let $=Z6(this.problem.directory,"Runner");await u.section(`Compiling files in ${u.hyperlink(this.problem.directory,"Runner")}`,async()=>{u.command("make all");let{exitCode:f}=await p_({stdout:"inherit",stderr:"inherit",cwd:$})`make all`;if(f===0)u.success("make completed successfully");else throw u.error("make failed"),Error("make failed")});let w=Z6(this.problem.directory,"Public");await u.section(`Preparing files in ${u.hyperlink(this.problem.directory,"Public")}`,async()=>{await _g6(w,{recursive:!0,force:!0}),await Xk(w,{recursive:!0});let f=[],K=[],z=["README.{txt,md}","Makefile","*.cc","*.hh","*.cnf"];for(let P of z){let D=await Array.fromAsync(bd(P,{cwd:$}));for(let Y of D.sort()){let J=Z6($,Y),Z=Z6(w,Y);if(this.problem.handler.game?.hide.includes(Y))K.push(Y);else f.push(Y),await Jq(J,Z)}}u.success(`Published files: ${f.join(" ")}`),u.warning(`Hidden files: ${K.join(" ")}`)})}async makeExecutable(q){if(this.problem.handler.handler!=="circuits"){let f=q.split(".").pop(),K=hd[f];if(!K)throw Error(`No compiler found for .${f} files`);if(!await K())throw Error(`Compiler for .${f} files is not available`)}let $=this.selectCompiler(),w=`${u8()}-${q}`;await u.section(`Copying ${u.hyperlink(this.problem.directory,q)} to ${u.hyperlink(this.problem.directory,w)}`,async()=>{await Jq(Z6(this.problem.directory,q),Z6(this.problem.directory,w))}),await u.section(`Compiling ${u.hyperlink(this.problem.directory,w)} with ${$.name()} (${this.problem.handler.source_modifier})`,async()=>{try{let f;if(this.problem.handler.source_modifier==="none")f=await $.compileNormal(this.problem.handler,this.problem.directory,w);else if(this.problem.handler.source_modifier==="no_main")f=await $.compileWithMain(this.problem.handler,this.problem.directory,w);else throw Error(`Unknown source modifier: ${this.problem.handler.source_modifier}`);if(!await qA(Z6(this.problem.directory,f)))throw Error(`Compilation failed for ${w}`);u.success(`Compiled ${w} to ${f}`)}catch(f){throw Error("Compilation failed",{cause:f})}})}async makeExecutables(){await u.section("Compiling solutions",async()=>{for(let q of this.problem.solutions)await this.makeExecutable(q)})}async makeGoldenExecutable(){await u.section(`Compiling golden solution from ${u.hyperlink(this.problem.directory,this.problem.goldenSolution)}`,async()=>{if(!this.problem.goldenSolution)throw Error("Golden solution not set");await this.makeExecutable(this.problem.goldenSolution)})}async checkSolutions(){for(let q of this.problem.solutions)if(q!==this.problem.goldenSolution)await this.verifyCandidate(q)}async makeCorrectOutput(q,$,w){return await this.runTestcase(q,`${q}.inp`,`${q}.cor`,$,u8()+"-"+w)}async runTestcase(q,$,w,f,K){let z=!1,P=Date.now();try{await f.execute(this.problem.handler,this.problem.directory,K,$,w)}catch(k){u.error(`Execution failed for testcase '${q}'`),z=!0}let Y=Date.now()-P;if(this.problem.handler.handler==="graphic")await sE6(Z6(this.problem.directory,"output.png"),Z6(this.problem.directory,w));let J=await Sy(Z6(this.problem.directory,$)),Z=await Sy(Z6(this.problem.directory,w));return{testcase:q,error:z,time:Y,inputSize:J,outputSize:Z}}selectCompiler(){if(this.problem.handler.compilers==="PRO2")return Qf("PRO2");else if(this.problem.handler.compilers==="MakePRO2")return Qf("MakePRO2");else if(this.problem.handler.compilers==="RunPython")return Qf("RunPython");else if(this.problem.handler.compilers==="RunHaskell")return Qf("RunHaskell");else if(this.problem.handler.compilers==="RunClojure")return Qf("RunClojure");else{let q=this.problem.goldenSolution.split(".").pop();return kk(q)}}async makeCorrectOutputs(){let q=this.selectCompiler();await u.section("Making correct outputs with golden solution",async()=>{await u.section(`Using ${q.name()}`,async()=>{let $=[];for(let f of this.problem.testcases)$.push(await this.makeCorrectOutput(f,q,this.problem.goldenSolution));u.print(),u.print("testcase time input output");for(let f of $){let K=Bw(f.time),z=ZD(f.inputSize).replace(" ",""),P=ZD(f.outputSize).replace(" ","");u.print((f.error?y_.red:y_.green)(`${f.testcase.padEnd(12)} ${K.padStart(10)} ${z.padStart(10)} ${P.padStart(10)}`))}let w=$.filter((f)=>f.error).length;if(w>0)throw u.print(),Error(`${w} errors occurred while making correct answers`)})})}async makeCorrectOutputForTestcase(q){if(!this.problem.goldenSolution)return;let $=this.selectCompiler();await u.section(`Making correct output for ${q}`,async()=>{await u.section(`Using ${$.name()}`,async()=>{let w=await this.makeCorrectOutput(q,$,this.problem.goldenSolution),f=Bw(w.time),K=ZD(w.inputSize).replace(" ",""),z=ZD(w.outputSize).replace(" ","");if(u.print("testcase time input output"),u.print((w.error?y_.red:y_.green)(`${w.testcase.padEnd(12)} ${f.padStart(10)} ${K.padStart(10)} ${z.padStart(10)}`)),w.error)throw Error(`Error making correct output for ${q}`)})})}async remakeStatements(){await this.makePdfStatements(),await this.makeFullTextualStatements(["txt","html","md"]),await this.makeShortTextualStatements(["txt","html","md"])}async makePdfStatements(){await u.section("Making PDF statements",async()=>{let q=Z6(this.problem.directory,u8()+"-pdf",$q());await Xk(q,{recursive:!0}),await u.section("Creating working directory",async()=>{await a6(),u.directory(q)});for(let $ of this.problem.languages)if(this.problem.structure==="multi"||this.problem.structure==="single"&&$===this.problem.language)await u.section(`Making PDF statement for ${l6[$]}`,async()=>{await this.makePdfStatement(q,$)})})}async makeSamples(q,$){let w=this.problem.handler.handler==="graphic",f=[],K=[],z=0;for(let D of this.problem.testcases)if(D.includes("sample"))z++;let P=1;for(let D of this.problem.testcases)if(D.includes("sample")){let Y="";if(w){await Jq(Z6(this.problem.directory,`${D}.cor`),Z6(q,`${D}.cor.png`));let J=await xG(Z6(q,`${D}.cor.png`));Y=`(${J.width}$\\times$${J.height})`}if(z>1)f.push(`
|
|
611
611
|
\\SampleOneColInputOutput[${Y}]{${D}}{${P}}
|
|
612
612
|
`),K.push(`
|
|
613
613
|
\\SampleTwoColInputOutput[${Y}]{${D}}{${P}}
|