mock-service-cli 4.11.0 → 4.12.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +32 -1
- package/dist/api-client/client.js +5 -3
- package/dist/api-overview.html +614 -587
- package/dist/file-explorer.html +79 -36
- package/dist/meta.json +2384 -2190
- package/dist/runtime.js +16 -16
- package/docs/api-client.md +2 -0
- package/package.json +1 -1
package/dist/runtime.js
CHANGED
|
@@ -74,7 +74,7 @@ Please see the 3.x to 4.x migration guide for details on how to update your app.
|
|
|
74
74
|
`.replace(/\s*\/\/.*$/gm,"").replace(/\n/g,"").trim();exports2.IP_V6_REGEX_OBJECT=new RegExp(`^${IP_V6_REGEX}$`)}});var require_canonicalDomain=__commonJS({"node_modules/tough-cookie/dist/cookie/canonicalDomain.js"(exports2){"use strict";Object.defineProperty(exports2,"__esModule",{value:!0});exports2.canonicalDomain=canonicalDomain;var constants_1=require_constants();function domainToASCII(domain){return new URL(`http://${domain}`).hostname}function canonicalDomain(domainName){if(domainName==null)return;let str=domainName.trim().replace(/^\./,"");return constants_1.IP_V6_REGEX_OBJECT.test(str)?(str.startsWith("[")||(str="["+str),str.endsWith("]")||(str=str+"]"),domainToASCII(str).slice(1,-1)):/[^\u0001-\u007f]/.test(str)?domainToASCII(str):str.toLowerCase()}}});var require_formatDate=__commonJS({"node_modules/tough-cookie/dist/cookie/formatDate.js"(exports2){"use strict";Object.defineProperty(exports2,"__esModule",{value:!0});exports2.formatDate=formatDate;function formatDate(date){return date.toUTCString()}}});var require_parseDate=__commonJS({"node_modules/tough-cookie/dist/cookie/parseDate.js"(exports2){"use strict";Object.defineProperty(exports2,"__esModule",{value:!0});exports2.parseDate=parseDate;var DATE_DELIM=/[\x09\x20-\x2F\x3B-\x40\x5B-\x60\x7B-\x7E]/,MONTH_TO_NUM={jan:0,feb:1,mar:2,apr:3,may:4,jun:5,jul:6,aug:7,sep:8,oct:9,nov:10,dec:11};function parseDigits(token,minDigits,maxDigits,trailingOK){let count=0;for(;count<token.length;){let c=token.charCodeAt(count);if(c<=47||c>=58)break;count++}if(!(count<minDigits||count>maxDigits)&&!(!trailingOK&&count!=token.length))return parseInt(token.slice(0,count),10)}function parseTime(token){let parts=token.split(":"),result=[0,0,0];if(parts.length===3){for(let i=0;i<3;i++){let trailingOK=i==2,numPart=parts[i];if(numPart===void 0)return;let num=parseDigits(numPart,1,2,trailingOK);if(num===void 0)return;result[i]=num}return result}}function parseMonth(token){switch(token=String(token).slice(0,3).toLowerCase(),token){case"jan":return MONTH_TO_NUM.jan;case"feb":return MONTH_TO_NUM.feb;case"mar":return MONTH_TO_NUM.mar;case"apr":return MONTH_TO_NUM.apr;case"may":return MONTH_TO_NUM.may;case"jun":return MONTH_TO_NUM.jun;case"jul":return MONTH_TO_NUM.jul;case"aug":return MONTH_TO_NUM.aug;case"sep":return MONTH_TO_NUM.sep;case"oct":return MONTH_TO_NUM.oct;case"nov":return MONTH_TO_NUM.nov;case"dec":return MONTH_TO_NUM.dec;default:return}}function parseDate(cookieDate){if(!cookieDate)return;let tokens=cookieDate.split(DATE_DELIM),hour,minute,second,dayOfMonth,month,year;for(let i=0;i<tokens.length;i++){let token=(tokens[i]??"").trim();if(token.length){if(second===void 0){let result=parseTime(token);if(result){hour=result[0],minute=result[1],second=result[2];continue}}if(dayOfMonth===void 0){let result=parseDigits(token,1,2,!0);if(result!==void 0){dayOfMonth=result;continue}}if(month===void 0){let result=parseMonth(token);if(result!==void 0){month=result;continue}}if(year===void 0){let result=parseDigits(token,2,4,!0);result!==void 0&&(year=result,year>=70&&year<=99?year+=1900:year>=0&&year<=69&&(year+=2e3))}}}if(!(dayOfMonth===void 0||month===void 0||year===void 0||hour===void 0||minute===void 0||second===void 0||dayOfMonth<1||dayOfMonth>31||year<1601||hour>23||minute>59||second>59))return new Date(Date.UTC(year,month,dayOfMonth,hour,minute,second))}}});var require_cookie2=__commonJS({"node_modules/tough-cookie/dist/cookie/cookie.js"(exports2){"use strict";var __createBinding=exports2&&exports2.__createBinding||(Object.create?(function(o,m,k,k2){k2===void 0&&(k2=k);var desc=Object.getOwnPropertyDescriptor(m,k);(!desc||("get"in desc?!m.__esModule:desc.writable||desc.configurable))&&(desc={enumerable:!0,get:function(){return m[k]}}),Object.defineProperty(o,k2,desc)}):(function(o,m,k,k2){k2===void 0&&(k2=k),o[k2]=m[k]})),__setModuleDefault=exports2&&exports2.__setModuleDefault||(Object.create?(function(o,v){Object.defineProperty(o,"default",{enumerable:!0,value:v})}):function(o,v){o.default=v}),__importStar=exports2&&exports2.__importStar||function(mod){if(mod&&mod.__esModule)return mod;var result={};if(mod!=null)for(var k in mod)k!=="default"&&Object.prototype.hasOwnProperty.call(mod,k)&&__createBinding(result,mod,k);return __setModuleDefault(result,mod),result};Object.defineProperty(exports2,"__esModule",{value:!0});exports2.Cookie=void 0;var getPublicSuffix_1=require_getPublicSuffix(),validators=__importStar(require_validators()),utils_1=require_utils3(),formatDate_1=require_formatDate(),parseDate_1=require_parseDate(),canonicalDomain_1=require_canonicalDomain(),COOKIE_OCTETS=/^[\x21\x23-\x2B\x2D-\x3A\x3C-\x5B\x5D-\x7E]+$/,PATH_VALUE=/[\x20-\x3A\x3C-\x7E]+/,CONTROL_CHARS=/[\x00-\x1F]/,TERMINATORS=[`
|
|
75
75
|
`,"\r","\0"];function trimTerminator(str){if(validators.isEmptyString(str))return str;for(let t=0;t<TERMINATORS.length;t++){let terminator=TERMINATORS[t],terminatorIdx=terminator?str.indexOf(terminator):-1;terminatorIdx!==-1&&(str=str.slice(0,terminatorIdx))}return str}function parseCookiePair(cookiePair,looseMode){cookiePair=trimTerminator(cookiePair);let firstEq=cookiePair.indexOf("=");if(looseMode)firstEq===0&&(cookiePair=cookiePair.substring(1),firstEq=cookiePair.indexOf("="));else if(firstEq<=0)return;let cookieName,cookieValue;if(firstEq<=0?(cookieName="",cookieValue=cookiePair.trim()):(cookieName=cookiePair.slice(0,firstEq).trim(),cookieValue=cookiePair.slice(firstEq+1).trim()),CONTROL_CHARS.test(cookieName)||CONTROL_CHARS.test(cookieValue))return;let c=new Cookie;return c.key=cookieName,c.value=cookieValue,c}function parse(str,options){if(validators.isEmptyString(str)||!validators.isString(str))return;str=str.trim();let firstSemi=str.indexOf(";"),cookiePair=firstSemi===-1?str:str.slice(0,firstSemi),c=parseCookiePair(cookiePair,options?.loose??!1);if(!c)return;if(firstSemi===-1)return c;let unparsed=str.slice(firstSemi+1).trim();if(unparsed.length===0)return c;let cookie_avs=unparsed.split(";");for(;cookie_avs.length;){let av=(cookie_avs.shift()??"").trim();if(av.length===0)continue;let av_sep=av.indexOf("="),av_key,av_value;switch(av_sep===-1?(av_key=av,av_value=null):(av_key=av.slice(0,av_sep),av_value=av.slice(av_sep+1)),av_key=av_key.trim().toLowerCase(),av_value&&(av_value=av_value.trim()),av_key){case"expires":if(av_value){let exp=(0,parseDate_1.parseDate)(av_value);exp&&(c.expires=exp)}break;case"max-age":if(av_value&&/^-?[0-9]+$/.test(av_value)){let delta=parseInt(av_value,10);c.setMaxAge(delta)}break;case"domain":if(av_value){let domain=av_value.trim().replace(/^\./,"");domain&&(c.domain=domain.toLowerCase())}break;case"path":c.path=av_value&&av_value[0]==="/"?av_value:null;break;case"secure":c.secure=!0;break;case"httponly":c.httpOnly=!0;break;case"samesite":switch(av_value?av_value.toLowerCase():""){case"strict":c.sameSite="strict";break;case"lax":c.sameSite="lax";break;case"none":c.sameSite="none";break;default:c.sameSite=void 0;break}break;default:c.extensions=c.extensions||[],c.extensions.push(av);break}}return c}function fromJSON(str){if(!str||validators.isEmptyString(str))return;let obj;if(typeof str=="string")try{obj=JSON.parse(str)}catch{return}else obj=str;let c=new Cookie;return Cookie.serializableProperties.forEach(prop=>{if(obj&&typeof obj=="object"&&(0,utils_1.inOperator)(prop,obj)){let val=obj[prop];if(val===void 0||(0,utils_1.inOperator)(prop,cookieDefaults)&&val===cookieDefaults[prop])return;switch(prop){case"key":case"value":case"sameSite":typeof val=="string"&&(c[prop]=val);break;case"expires":case"creation":case"lastAccessed":typeof val=="number"||typeof val=="string"||val instanceof Date?c[prop]=obj[prop]=="Infinity"?"Infinity":new Date(val):val===null&&(c[prop]=null);break;case"maxAge":(typeof val=="number"||val==="Infinity"||val==="-Infinity")&&(c[prop]=val);break;case"domain":case"path":(typeof val=="string"||val===null)&&(c[prop]=val);break;case"secure":case"httpOnly":typeof val=="boolean"&&(c[prop]=val);break;case"extensions":Array.isArray(val)&&val.every(item=>typeof item=="string")&&(c[prop]=val);break;case"hostOnly":case"pathIsDefault":(typeof val=="boolean"||val===null)&&(c[prop]=val);break}}}),c}var cookieDefaults={key:"",value:"",expires:"Infinity",maxAge:null,domain:null,path:null,secure:!1,httpOnly:!1,extensions:null,hostOnly:null,pathIsDefault:null,creation:null,lastAccessed:null,sameSite:void 0},Cookie=class _Cookie{constructor(options={}){this.key=options.key??cookieDefaults.key,this.value=options.value??cookieDefaults.value,this.expires=options.expires??cookieDefaults.expires,this.maxAge=options.maxAge??cookieDefaults.maxAge,this.domain=options.domain??cookieDefaults.domain,this.path=options.path??cookieDefaults.path,this.secure=options.secure??cookieDefaults.secure,this.httpOnly=options.httpOnly??cookieDefaults.httpOnly,this.extensions=options.extensions??cookieDefaults.extensions,this.creation=options.creation??cookieDefaults.creation,this.hostOnly=options.hostOnly??cookieDefaults.hostOnly,this.pathIsDefault=options.pathIsDefault??cookieDefaults.pathIsDefault,this.lastAccessed=options.lastAccessed??cookieDefaults.lastAccessed,this.sameSite=options.sameSite??cookieDefaults.sameSite,this.creation=options.creation??new Date,Object.defineProperty(this,"creationIndex",{configurable:!1,enumerable:!1,writable:!0,value:++_Cookie.cookiesCreated}),this.creationIndex=_Cookie.cookiesCreated}[Symbol.for("nodejs.util.inspect.custom")](){let now=Date.now(),hostOnly=this.hostOnly!=null?this.hostOnly.toString():"?",createAge=this.creation&&this.creation!=="Infinity"?`${String(now-this.creation.getTime())}ms`:"?",accessAge=this.lastAccessed&&this.lastAccessed!=="Infinity"?`${String(now-this.lastAccessed.getTime())}ms`:"?";return`Cookie="${this.toString()}; hostOnly=${hostOnly}; aAge=${accessAge}; cAge=${createAge}"`}toJSON(){let obj={};for(let prop of _Cookie.serializableProperties){let val=this[prop];if(val!==cookieDefaults[prop])switch(prop){case"key":case"value":case"sameSite":typeof val=="string"&&(obj[prop]=val);break;case"expires":case"creation":case"lastAccessed":typeof val=="number"||typeof val=="string"||val instanceof Date?obj[prop]=val=="Infinity"?"Infinity":new Date(val).toISOString():val===null&&(obj[prop]=null);break;case"maxAge":(typeof val=="number"||val==="Infinity"||val==="-Infinity")&&(obj[prop]=val);break;case"domain":case"path":(typeof val=="string"||val===null)&&(obj[prop]=val);break;case"secure":case"httpOnly":typeof val=="boolean"&&(obj[prop]=val);break;case"extensions":Array.isArray(val)&&(obj[prop]=val);break;case"hostOnly":case"pathIsDefault":(typeof val=="boolean"||val===null)&&(obj[prop]=val);break}}return obj}clone(){return fromJSON(this.toJSON())}validate(){if(!this.value||!COOKIE_OCTETS.test(this.value)||this.expires!="Infinity"&&!(this.expires instanceof Date)&&!(0,parseDate_1.parseDate)(this.expires)||this.maxAge!=null&&this.maxAge!=="Infinity"&&(this.maxAge==="-Infinity"||this.maxAge<=0)||this.path!=null&&!PATH_VALUE.test(this.path))return!1;let cdomain=this.cdomain();return!(cdomain&&(cdomain.match(/\.$/)||(0,getPublicSuffix_1.getPublicSuffix)(cdomain)==null))}setExpires(exp){exp instanceof Date?this.expires=exp:this.expires=(0,parseDate_1.parseDate)(exp)||"Infinity"}setMaxAge(age){age===1/0?this.maxAge="Infinity":age===-1/0?this.maxAge="-Infinity":this.maxAge=age}cookieString(){let val=this.value||"";return this.key?`${this.key}=${val}`:val}toString(){let str=this.cookieString();return this.expires!="Infinity"&&this.expires instanceof Date&&(str+=`; Expires=${(0,formatDate_1.formatDate)(this.expires)}`),this.maxAge!=null&&this.maxAge!=1/0&&(str+=`; Max-Age=${String(this.maxAge)}`),this.domain&&!this.hostOnly&&(str+=`; Domain=${this.domain}`),this.path&&(str+=`; Path=${this.path}`),this.secure&&(str+="; Secure"),this.httpOnly&&(str+="; HttpOnly"),this.sameSite&&this.sameSite!=="none"&&(this.sameSite.toLowerCase()===_Cookie.sameSiteCanonical.lax.toLowerCase()?str+=`; SameSite=${_Cookie.sameSiteCanonical.lax}`:this.sameSite.toLowerCase()===_Cookie.sameSiteCanonical.strict.toLowerCase()?str+=`; SameSite=${_Cookie.sameSiteCanonical.strict}`:str+=`; SameSite=${this.sameSite}`),this.extensions&&this.extensions.forEach(ext=>{str+=`; ${ext}`}),str}TTL(now=Date.now()){if(this.maxAge!=null&&typeof this.maxAge=="number")return this.maxAge<=0?0:this.maxAge*1e3;let expires=this.expires;return expires==="Infinity"?1/0:(expires?.getTime()??now)-(now||Date.now())}expiryTime(now){if(this.maxAge!=null){let relativeTo=now||this.lastAccessed||new Date,maxAge=typeof this.maxAge=="number"?this.maxAge:-1/0,age=maxAge<=0?-1/0:maxAge*1e3;return relativeTo==="Infinity"?1/0:relativeTo.getTime()+age}return this.expires=="Infinity"?1/0:this.expires?this.expires.getTime():void 0}expiryDate(now){let millisec=this.expiryTime(now);return millisec==1/0?new Date(2147483647e3):millisec==-1/0?new Date(0):millisec==null?void 0:new Date(millisec)}isPersistent(){return this.maxAge!=null||this.expires!="Infinity"}canonicalizedDomain(){return(0,canonicalDomain_1.canonicalDomain)(this.domain)}cdomain(){return(0,canonicalDomain_1.canonicalDomain)(this.domain)}static parse(str,options){return parse(str,options)}static fromJSON(str){return fromJSON(str)}};exports2.Cookie=Cookie;Cookie.cookiesCreated=0;Cookie.sameSiteLevel={strict:3,lax:2,none:1};Cookie.sameSiteCanonical={strict:"Strict",lax:"Lax"};Cookie.serializableProperties=["key","value","expires","maxAge","domain","path","secure","httpOnly","extensions","hostOnly","pathIsDefault","creation","lastAccessed","sameSite"]}});var require_cookieCompare=__commonJS({"node_modules/tough-cookie/dist/cookie/cookieCompare.js"(exports2){"use strict";Object.defineProperty(exports2,"__esModule",{value:!0});exports2.cookieCompare=cookieCompare;var MAX_TIME=2147483647e3;function cookieCompare(a,b){let cmp,aPathLen=a.path?a.path.length:0;if(cmp=(b.path?b.path.length:0)-aPathLen,cmp!==0)return cmp;let aTime=a.creation&&a.creation instanceof Date?a.creation.getTime():MAX_TIME,bTime=b.creation&&b.creation instanceof Date?b.creation.getTime():MAX_TIME;return cmp=aTime-bTime,cmp!==0||(cmp=(a.creationIndex||0)-(b.creationIndex||0)),cmp}}});var require_defaultPath=__commonJS({"node_modules/tough-cookie/dist/cookie/defaultPath.js"(exports2){"use strict";Object.defineProperty(exports2,"__esModule",{value:!0});exports2.defaultPath=defaultPath;function defaultPath(path){if(!path||path.slice(0,1)!=="/")return"/";if(path==="/")return path;let rightSlash=path.lastIndexOf("/");return rightSlash===0?"/":path.slice(0,rightSlash)}}});var require_domainMatch=__commonJS({"node_modules/tough-cookie/dist/cookie/domainMatch.js"(exports2){"use strict";Object.defineProperty(exports2,"__esModule",{value:!0});exports2.domainMatch=domainMatch;var canonicalDomain_1=require_canonicalDomain(),IP_REGEX_LOWERCASE=/(?:^(?:25[0-5]|2[0-4]\d|1\d\d|[1-9]\d|\d)(?:\.(?:25[0-5]|2[0-4]\d|1\d\d|[1-9]\d|\d)){3}$)|(?:^(?:(?:[a-f\d]{1,4}:){7}(?:[a-f\d]{1,4}|:)|(?:[a-f\d]{1,4}:){6}(?:(?:25[0-5]|2[0-4]\d|1\d\d|[1-9]\d|\d)(?:\.(?:25[0-5]|2[0-4]\d|1\d\d|[1-9]\d|\d)){3}|:[a-f\d]{1,4}|:)|(?:[a-f\d]{1,4}:){5}(?::(?:25[0-5]|2[0-4]\d|1\d\d|[1-9]\d|\d)(?:\.(?:25[0-5]|2[0-4]\d|1\d\d|[1-9]\d|\d)){3}|(?::[a-f\d]{1,4}){1,2}|:)|(?:[a-f\d]{1,4}:){4}(?:(?::[a-f\d]{1,4}){0,1}:(?:25[0-5]|2[0-4]\d|1\d\d|[1-9]\d|\d)(?:\.(?:25[0-5]|2[0-4]\d|1\d\d|[1-9]\d|\d)){3}|(?::[a-f\d]{1,4}){1,3}|:)|(?:[a-f\d]{1,4}:){3}(?:(?::[a-f\d]{1,4}){0,2}:(?:25[0-5]|2[0-4]\d|1\d\d|[1-9]\d|\d)(?:\.(?:25[0-5]|2[0-4]\d|1\d\d|[1-9]\d|\d)){3}|(?::[a-f\d]{1,4}){1,4}|:)|(?:[a-f\d]{1,4}:){2}(?:(?::[a-f\d]{1,4}){0,3}:(?:25[0-5]|2[0-4]\d|1\d\d|[1-9]\d|\d)(?:\.(?:25[0-5]|2[0-4]\d|1\d\d|[1-9]\d|\d)){3}|(?::[a-f\d]{1,4}){1,5}|:)|(?:[a-f\d]{1,4}:){1}(?:(?::[a-f\d]{1,4}){0,4}:(?:25[0-5]|2[0-4]\d|1\d\d|[1-9]\d|\d)(?:\.(?:25[0-5]|2[0-4]\d|1\d\d|[1-9]\d|\d)){3}|(?::[a-f\d]{1,4}){1,6}|:)|(?::(?:(?::[a-f\d]{1,4}){0,5}:(?:25[0-5]|2[0-4]\d|1\d\d|[1-9]\d|\d)(?:\.(?:25[0-5]|2[0-4]\d|1\d\d|[1-9]\d|\d)){3}|(?::[a-f\d]{1,4}){1,7}|:)))$)/;function domainMatch(domain,cookieDomain,canonicalize){if(domain==null||cookieDomain==null)return;let _str,_domStr;if(canonicalize!==!1?(_str=(0,canonicalDomain_1.canonicalDomain)(domain),_domStr=(0,canonicalDomain_1.canonicalDomain)(cookieDomain)):(_str=domain,_domStr=cookieDomain),_str==null||_domStr==null)return;if(_str==_domStr)return!0;let idx=_str.lastIndexOf(_domStr);return idx<=0||_str.length!==_domStr.length+idx||_str.substring(idx-1,idx)!=="."?!1:!IP_REGEX_LOWERCASE.test(_str)}}});var require_cookieJar=__commonJS({"node_modules/tough-cookie/dist/cookie/cookieJar.js"(exports2){"use strict";var __createBinding=exports2&&exports2.__createBinding||(Object.create?(function(o,m,k,k2){k2===void 0&&(k2=k);var desc=Object.getOwnPropertyDescriptor(m,k);(!desc||("get"in desc?!m.__esModule:desc.writable||desc.configurable))&&(desc={enumerable:!0,get:function(){return m[k]}}),Object.defineProperty(o,k2,desc)}):(function(o,m,k,k2){k2===void 0&&(k2=k),o[k2]=m[k]})),__setModuleDefault=exports2&&exports2.__setModuleDefault||(Object.create?(function(o,v){Object.defineProperty(o,"default",{enumerable:!0,value:v})}):function(o,v){o.default=v}),__importStar=exports2&&exports2.__importStar||function(mod){if(mod&&mod.__esModule)return mod;var result={};if(mod!=null)for(var k in mod)k!=="default"&&Object.prototype.hasOwnProperty.call(mod,k)&&__createBinding(result,mod,k);return __setModuleDefault(result,mod),result};Object.defineProperty(exports2,"__esModule",{value:!0});exports2.CookieJar=void 0;var getPublicSuffix_1=require_getPublicSuffix(),validators=__importStar(require_validators()),validators_1=require_validators(),store_1=require_store(),memstore_1=require_memstore(),pathMatch_1=require_pathMatch(),cookie_1=require_cookie2(),utils_1=require_utils3(),canonicalDomain_1=require_canonicalDomain(),constants_1=require_constants(),defaultPath_1=require_defaultPath(),domainMatch_1=require_domainMatch(),cookieCompare_1=require_cookieCompare(),version_1=require_version(),defaultSetCookieOptions={loose:!1,sameSiteContext:void 0,ignoreError:!1,http:!0},defaultGetCookieOptions={http:!0,expire:!0,allPaths:!1,sameSiteContext:void 0,sort:void 0},SAME_SITE_CONTEXT_VAL_ERR='Invalid sameSiteContext option for getCookies(); expected one of "strict", "lax", or "none"';function getCookieContext(url){if(url&&typeof url=="object"&&"hostname"in url&&typeof url.hostname=="string"&&"pathname"in url&&typeof url.pathname=="string"&&"protocol"in url&&typeof url.protocol=="string")return{hostname:url.hostname,pathname:url.pathname,protocol:url.protocol};if(typeof url=="string")try{return new URL(decodeURI(url))}catch{return new URL(url)}else throw new validators_1.ParameterError("`url` argument is not a string or URL.")}function checkSameSiteContext(value){let context=String(value).toLowerCase();if(context==="none"||context==="lax"||context==="strict")return context}function isSecurePrefixConditionMet(cookie){return!(typeof cookie.key=="string"&&cookie.key.startsWith("__Secure-"))||cookie.secure}function isHostPrefixConditionMet(cookie){return!(typeof cookie.key=="string"&&cookie.key.startsWith("__Host-"))||!!(cookie.secure&&cookie.hostOnly&&cookie.path!=null&&cookie.path==="/")}function getNormalizedPrefixSecurity(prefixSecurity){let normalizedPrefixSecurity=prefixSecurity.toLowerCase();switch(normalizedPrefixSecurity){case constants_1.PrefixSecurityEnum.STRICT:case constants_1.PrefixSecurityEnum.SILENT:case constants_1.PrefixSecurityEnum.DISABLED:return normalizedPrefixSecurity;default:return constants_1.PrefixSecurityEnum.SILENT}}var CookieJar=class _CookieJar{constructor(store,options){typeof options=="boolean"&&(options={rejectPublicSuffixes:options}),this.rejectPublicSuffixes=options?.rejectPublicSuffixes??!0,this.enableLooseMode=options?.looseMode??!1,this.allowSpecialUseDomain=options?.allowSpecialUseDomain??!0,this.prefixSecurity=getNormalizedPrefixSecurity(options?.prefixSecurity??"silent"),this.store=store??new memstore_1.MemoryCookieStore}callSync(fn){if(!this.store.synchronous)throw new Error("CookieJar store is not synchronous; use async API instead.");let syncErr=null,syncResult;try{fn.call(this,(error,result)=>{syncErr=error,syncResult=result})}catch(err){syncErr=err}if(syncErr)throw syncErr;return syncResult}setCookie(cookie,url,options,callback){typeof options=="function"&&(callback=options,options=void 0);let promiseCallback=(0,utils_1.createPromiseCallback)(callback),cb=promiseCallback.callback,context;try{if(typeof url=="string"&&validators.validate(validators.isNonEmptyString(url),callback,(0,utils_1.safeToString)(options)),context=getCookieContext(url),typeof url=="function")return promiseCallback.reject(new Error("No URL was specified"));if(typeof options=="function"&&(options=defaultSetCookieOptions),validators.validate(typeof cb=="function",cb),!validators.isNonEmptyString(cookie)&&!validators.isObject(cookie)&&cookie instanceof String&&cookie.length==0)return promiseCallback.resolve(void 0)}catch(err){return promiseCallback.reject(err)}let host=(0,canonicalDomain_1.canonicalDomain)(context.hostname)??null,loose=options?.loose||this.enableLooseMode,sameSiteContext=null;if(options?.sameSiteContext&&(sameSiteContext=checkSameSiteContext(options.sameSiteContext),!sameSiteContext))return promiseCallback.reject(new Error(SAME_SITE_CONTEXT_VAL_ERR));if(typeof cookie=="string"||cookie instanceof String){let parsedCookie=cookie_1.Cookie.parse(cookie.toString(),{loose});if(!parsedCookie){let err=new Error("Cookie failed to parse");return options?.ignoreError?promiseCallback.resolve(void 0):promiseCallback.reject(err)}cookie=parsedCookie}else if(!(cookie instanceof cookie_1.Cookie)){let err=new Error("First argument to setCookie must be a Cookie object or string");return options?.ignoreError?promiseCallback.resolve(void 0):promiseCallback.reject(err)}let now=options?.now||new Date;if(this.rejectPublicSuffixes&&cookie.domain)try{let cdomain=cookie.cdomain();if((typeof cdomain=="string"?(0,getPublicSuffix_1.getPublicSuffix)(cdomain,{allowSpecialUseDomain:this.allowSpecialUseDomain,ignoreError:options?.ignoreError}):null)==null&&!constants_1.IP_V6_REGEX_OBJECT.test(cookie.domain)){let err=new Error("Cookie has domain set to a public suffix");return options?.ignoreError?promiseCallback.resolve(void 0):promiseCallback.reject(err)}}catch(err){return options?.ignoreError?promiseCallback.resolve(void 0):promiseCallback.reject(err)}if(cookie.domain){if(!(0,domainMatch_1.domainMatch)(host??void 0,cookie.cdomain()??void 0,!1)){let err=new Error(`Cookie not in this host's domain. Cookie:${cookie.cdomain()??"null"} Request:${host??"null"}`);return options?.ignoreError?promiseCallback.resolve(void 0):promiseCallback.reject(err)}cookie.hostOnly==null&&(cookie.hostOnly=!1)}else cookie.hostOnly=!0,cookie.domain=host;if((!cookie.path||cookie.path[0]!=="/")&&(cookie.path=(0,defaultPath_1.defaultPath)(context.pathname),cookie.pathIsDefault=!0),options?.http===!1&&cookie.httpOnly){let err=new Error("Cookie is HttpOnly and this isn't an HTTP API");return options.ignoreError?promiseCallback.resolve(void 0):promiseCallback.reject(err)}if(cookie.sameSite!=="none"&&cookie.sameSite!==void 0&&sameSiteContext&&sameSiteContext==="none"){let err=new Error("Cookie is SameSite but this is a cross-origin request");return options?.ignoreError?promiseCallback.resolve(void 0):promiseCallback.reject(err)}let ignoreErrorForPrefixSecurity=this.prefixSecurity===constants_1.PrefixSecurityEnum.SILENT;if(!(this.prefixSecurity===constants_1.PrefixSecurityEnum.DISABLED)){let errorFound=!1,errorMsg;if(isSecurePrefixConditionMet(cookie)?isHostPrefixConditionMet(cookie)||(errorFound=!0,errorMsg="Cookie has __Host prefix but either Secure or HostOnly attribute is not set or Path is not '/'"):(errorFound=!0,errorMsg="Cookie has __Secure prefix but Secure attribute is not set"),errorFound)return options?.ignoreError||ignoreErrorForPrefixSecurity?promiseCallback.resolve(void 0):promiseCallback.reject(new Error(errorMsg))}let store=this.store;store.updateCookie||(store.updateCookie=async function(_oldCookie,newCookie,cb2){return this.putCookie(newCookie).then(()=>cb2?.(null),error=>cb2?.(error))});let withCookie=function(err,oldCookie){if(err){cb(err);return}let next=function(err2){err2?cb(err2):typeof cookie=="string"?cb(null,void 0):cb(null,cookie)};if(oldCookie){if(options&&"http"in options&&options.http===!1&&oldCookie.httpOnly){err=new Error("old Cookie is HttpOnly and this isn't an HTTP API"),options.ignoreError?cb(null,void 0):cb(err);return}cookie instanceof cookie_1.Cookie&&(cookie.creation=oldCookie.creation,cookie.creationIndex=oldCookie.creationIndex,cookie.lastAccessed=now,store.updateCookie(oldCookie,cookie,next))}else cookie instanceof cookie_1.Cookie&&(cookie.creation=cookie.lastAccessed=now,store.putCookie(cookie,next))};return store.findCookie(cookie.domain,cookie.path,cookie.key,withCookie),promiseCallback.promise}setCookieSync(cookie,url,options){let setCookieFn=options?this.setCookie.bind(this,cookie,url,options):this.setCookie.bind(this,cookie,url);return this.callSync(setCookieFn)}getCookies(url,options,callback){typeof options=="function"?(callback=options,options=defaultGetCookieOptions):options===void 0&&(options=defaultGetCookieOptions);let promiseCallback=(0,utils_1.createPromiseCallback)(callback),cb=promiseCallback.callback,context;try{typeof url=="string"&&validators.validate(validators.isNonEmptyString(url),cb,url),context=getCookieContext(url),validators.validate(validators.isObject(options),cb,(0,utils_1.safeToString)(options)),validators.validate(typeof cb=="function",cb)}catch(parameterError){return promiseCallback.reject(parameterError)}let host=(0,canonicalDomain_1.canonicalDomain)(context.hostname),path=context.pathname||"/",secure=context.protocol&&(context.protocol=="https:"||context.protocol=="wss:"),sameSiteLevel=0;if(options.sameSiteContext){let sameSiteContext=checkSameSiteContext(options.sameSiteContext);if(sameSiteContext==null)return promiseCallback.reject(new Error(SAME_SITE_CONTEXT_VAL_ERR));if(sameSiteLevel=cookie_1.Cookie.sameSiteLevel[sameSiteContext],!sameSiteLevel)return promiseCallback.reject(new Error(SAME_SITE_CONTEXT_VAL_ERR))}let http=options.http??!0,now=Date.now(),expireCheck=options.expire??!0,allPaths=options.allPaths??!1,store=this.store;function matchingCookie(c){if(c.hostOnly){if(c.domain!=host)return!1}else if(!(0,domainMatch_1.domainMatch)(host??void 0,c.domain??void 0,!1))return!1;if(!allPaths&&typeof c.path=="string"&&!(0,pathMatch_1.pathMatch)(path,c.path)||c.secure&&!secure||c.httpOnly&&!http)return!1;if(sameSiteLevel){let cookieLevel;if(c.sameSite==="lax"?cookieLevel=cookie_1.Cookie.sameSiteLevel.lax:c.sameSite==="strict"?cookieLevel=cookie_1.Cookie.sameSiteLevel.strict:cookieLevel=cookie_1.Cookie.sameSiteLevel.none,cookieLevel>sameSiteLevel)return!1}let expiryTime=c.expiryTime();return expireCheck&&expiryTime!=null&&expiryTime<=now?(store.removeCookie(c.domain,c.path,c.key,()=>{}),!1):!0}return store.findCookies(host,allPaths?null:path,this.allowSpecialUseDomain,(err,cookies)=>{if(err){cb(err);return}if(cookies==null){cb(null,[]);return}cookies=cookies.filter(matchingCookie),"sort"in options&&options.sort!==!1&&(cookies=cookies.sort(cookieCompare_1.cookieCompare));let now2=new Date;for(let cookie of cookies)cookie.lastAccessed=now2;cb(null,cookies)}),promiseCallback.promise}getCookiesSync(url,options){return this.callSync(this.getCookies.bind(this,url,options))??[]}getCookieString(url,options,callback){typeof options=="function"&&(callback=options,options=void 0);let promiseCallback=(0,utils_1.createPromiseCallback)(callback),next=function(err,cookies){err?promiseCallback.callback(err):promiseCallback.callback(null,cookies?.sort(cookieCompare_1.cookieCompare).map(c=>c.cookieString()).join("; "))};return this.getCookies(url,options,next),promiseCallback.promise}getCookieStringSync(url,options){return this.callSync(options?this.getCookieString.bind(this,url,options):this.getCookieString.bind(this,url))??""}getSetCookieStrings(url,options,callback){typeof options=="function"&&(callback=options,options=void 0);let promiseCallback=(0,utils_1.createPromiseCallback)(callback),next=function(err,cookies){err?promiseCallback.callback(err):promiseCallback.callback(null,cookies?.map(c=>c.toString()))};return this.getCookies(url,options,next),promiseCallback.promise}getSetCookieStringsSync(url,options={}){return this.callSync(this.getSetCookieStrings.bind(this,url,options))??[]}serialize(callback){let promiseCallback=(0,utils_1.createPromiseCallback)(callback),type=this.store.constructor.name;validators.isObject(type)&&(type=null);let serialized={version:`tough-cookie@${version_1.version}`,storeType:type,rejectPublicSuffixes:this.rejectPublicSuffixes,enableLooseMode:this.enableLooseMode,allowSpecialUseDomain:this.allowSpecialUseDomain,prefixSecurity:getNormalizedPrefixSecurity(this.prefixSecurity),cookies:[]};return typeof this.store.getAllCookies!="function"?promiseCallback.reject(new Error("store does not support getAllCookies and cannot be serialized")):(this.store.getAllCookies((err,cookies)=>{if(err){promiseCallback.callback(err);return}if(cookies==null){promiseCallback.callback(null,serialized);return}serialized.cookies=cookies.map(cookie=>{let serializedCookie=cookie.toJSON();return delete serializedCookie.creationIndex,serializedCookie}),promiseCallback.callback(null,serialized)}),promiseCallback.promise)}serializeSync(){return this.callSync(callback=>{this.serialize(callback)})}toJSON(){return this.serializeSync()}_importCookies(serialized,callback){let cookies;if(serialized&&typeof serialized=="object"&&(0,utils_1.inOperator)("cookies",serialized)&&Array.isArray(serialized.cookies)&&(cookies=serialized.cookies),!cookies){callback(new Error("serialized jar has no cookies array"),void 0);return}cookies=cookies.slice();let putNext=err=>{if(err){callback(err,void 0);return}if(Array.isArray(cookies)){if(!cookies.length){callback(err,this);return}let cookie;try{cookie=cookie_1.Cookie.fromJSON(cookies.shift())}catch(e){callback(e instanceof Error?e:new Error,void 0);return}if(cookie===void 0){putNext(null);return}this.store.putCookie(cookie,putNext)}};putNext(null)}_importCookiesSync(serialized){this.callSync(this._importCookies.bind(this,serialized))}clone(newStore,callback){typeof newStore=="function"&&(callback=newStore,newStore=void 0);let promiseCallback=(0,utils_1.createPromiseCallback)(callback),cb=promiseCallback.callback;return this.serialize((err,serialized)=>err?promiseCallback.reject(err):_CookieJar.deserialize(serialized??"",newStore,cb)),promiseCallback.promise}_cloneSync(newStore){let cloneFn=newStore&&typeof newStore!="function"?this.clone.bind(this,newStore):this.clone.bind(this);return this.callSync(callback=>{cloneFn(callback)})}cloneSync(newStore){if(!newStore)return this._cloneSync();if(!newStore.synchronous)throw new Error("CookieJar clone destination store is not synchronous; use async API instead.");return this._cloneSync(newStore)}removeAllCookies(callback){let promiseCallback=(0,utils_1.createPromiseCallback)(callback),cb=promiseCallback.callback,store=this.store;return typeof store.removeAllCookies=="function"&&store.removeAllCookies!==store_1.Store.prototype.removeAllCookies?(store.removeAllCookies(cb),promiseCallback.promise):(store.getAllCookies((err,cookies)=>{if(err){cb(err);return}if(cookies||(cookies=[]),cookies.length===0){cb(null,void 0);return}let completedCount=0,removeErrors=[],removeCookieCb=function(removeErr){if(removeErr&&removeErrors.push(removeErr),completedCount++,completedCount===cookies.length){removeErrors[0]?cb(removeErrors[0]):cb(null,void 0);return}};cookies.forEach(cookie=>{store.removeCookie(cookie.domain,cookie.path,cookie.key,removeCookieCb)})}),promiseCallback.promise)}removeAllCookiesSync(){this.callSync(callback=>{this.removeAllCookies(callback)})}static deserialize(strOrObj,store,callback){typeof store=="function"&&(callback=store,store=void 0);let promiseCallback=(0,utils_1.createPromiseCallback)(callback),serialized;if(typeof strOrObj=="string")try{serialized=JSON.parse(strOrObj)}catch(e){return promiseCallback.reject(e instanceof Error?e:new Error)}else serialized=strOrObj;let readSerializedProperty=property=>serialized&&typeof serialized=="object"&&(0,utils_1.inOperator)(property,serialized)?serialized[property]:void 0,readSerializedBoolean=property=>{let value=readSerializedProperty(property);return typeof value=="boolean"?value:void 0},readSerializedString=property=>{let value=readSerializedProperty(property);return typeof value=="string"?value:void 0},jar=new _CookieJar(store,{rejectPublicSuffixes:readSerializedBoolean("rejectPublicSuffixes"),looseMode:readSerializedBoolean("enableLooseMode"),allowSpecialUseDomain:readSerializedBoolean("allowSpecialUseDomain"),prefixSecurity:getNormalizedPrefixSecurity(readSerializedString("prefixSecurity")??"silent")});return jar._importCookies(serialized,err=>{if(err){promiseCallback.callback(err);return}promiseCallback.callback(null,jar)}),promiseCallback.promise}static deserializeSync(strOrObj,store){let serialized=typeof strOrObj=="string"?JSON.parse(strOrObj):strOrObj,readSerializedProperty=property=>serialized&&typeof serialized=="object"&&(0,utils_1.inOperator)(property,serialized)?serialized[property]:void 0,readSerializedBoolean=property=>{let value=readSerializedProperty(property);return typeof value=="boolean"?value:void 0},readSerializedString=property=>{let value=readSerializedProperty(property);return typeof value=="string"?value:void 0},jar=new _CookieJar(store,{rejectPublicSuffixes:readSerializedBoolean("rejectPublicSuffixes"),looseMode:readSerializedBoolean("enableLooseMode"),allowSpecialUseDomain:readSerializedBoolean("allowSpecialUseDomain"),prefixSecurity:getNormalizedPrefixSecurity(readSerializedString("prefixSecurity")??"silent")});if(!jar.store.synchronous)throw new Error("CookieJar store is not synchronous; use async API instead.");return jar._importCookiesSync(serialized),jar}static fromJSON(jsonString,store){return _CookieJar.deserializeSync(jsonString,store)}};exports2.CookieJar=CookieJar}});var require_permutePath=__commonJS({"node_modules/tough-cookie/dist/cookie/permutePath.js"(exports2){"use strict";Object.defineProperty(exports2,"__esModule",{value:!0});exports2.permutePath=permutePath;function permutePath(path){if(path==="/")return["/"];let permutations=[path];for(;path.length>1;){let lindex=path.lastIndexOf("/");if(lindex===0)break;path=path.slice(0,lindex),permutations.push(path)}return permutations.push("/"),permutations}}});var require_cookie3=__commonJS({"node_modules/tough-cookie/dist/cookie/index.js"(exports2){"use strict";Object.defineProperty(exports2,"__esModule",{value:!0});exports2.permutePath=exports2.parseDate=exports2.formatDate=exports2.domainMatch=exports2.defaultPath=exports2.CookieJar=exports2.cookieCompare=exports2.Cookie=exports2.PrefixSecurityEnum=exports2.canonicalDomain=exports2.version=exports2.ParameterError=exports2.Store=exports2.getPublicSuffix=exports2.permuteDomain=exports2.pathMatch=exports2.MemoryCookieStore=void 0;exports2.parse=parse;exports2.fromJSON=fromJSON;var memstore_1=require_memstore();Object.defineProperty(exports2,"MemoryCookieStore",{enumerable:!0,get:function(){return memstore_1.MemoryCookieStore}});var pathMatch_1=require_pathMatch();Object.defineProperty(exports2,"pathMatch",{enumerable:!0,get:function(){return pathMatch_1.pathMatch}});var permuteDomain_1=require_permuteDomain();Object.defineProperty(exports2,"permuteDomain",{enumerable:!0,get:function(){return permuteDomain_1.permuteDomain}});var getPublicSuffix_1=require_getPublicSuffix();Object.defineProperty(exports2,"getPublicSuffix",{enumerable:!0,get:function(){return getPublicSuffix_1.getPublicSuffix}});var store_1=require_store();Object.defineProperty(exports2,"Store",{enumerable:!0,get:function(){return store_1.Store}});var validators_1=require_validators();Object.defineProperty(exports2,"ParameterError",{enumerable:!0,get:function(){return validators_1.ParameterError}});var version_1=require_version();Object.defineProperty(exports2,"version",{enumerable:!0,get:function(){return version_1.version}});var canonicalDomain_1=require_canonicalDomain();Object.defineProperty(exports2,"canonicalDomain",{enumerable:!0,get:function(){return canonicalDomain_1.canonicalDomain}});var constants_1=require_constants();Object.defineProperty(exports2,"PrefixSecurityEnum",{enumerable:!0,get:function(){return constants_1.PrefixSecurityEnum}});var cookie_1=require_cookie2();Object.defineProperty(exports2,"Cookie",{enumerable:!0,get:function(){return cookie_1.Cookie}});var cookieCompare_1=require_cookieCompare();Object.defineProperty(exports2,"cookieCompare",{enumerable:!0,get:function(){return cookieCompare_1.cookieCompare}});var cookieJar_1=require_cookieJar();Object.defineProperty(exports2,"CookieJar",{enumerable:!0,get:function(){return cookieJar_1.CookieJar}});var defaultPath_1=require_defaultPath();Object.defineProperty(exports2,"defaultPath",{enumerable:!0,get:function(){return defaultPath_1.defaultPath}});var domainMatch_1=require_domainMatch();Object.defineProperty(exports2,"domainMatch",{enumerable:!0,get:function(){return domainMatch_1.domainMatch}});var formatDate_1=require_formatDate();Object.defineProperty(exports2,"formatDate",{enumerable:!0,get:function(){return formatDate_1.formatDate}});var parseDate_1=require_parseDate();Object.defineProperty(exports2,"parseDate",{enumerable:!0,get:function(){return parseDate_1.parseDate}});var permutePath_1=require_permutePath();Object.defineProperty(exports2,"permutePath",{enumerable:!0,get:function(){return permutePath_1.permutePath}});var cookie_2=require_cookie2();function parse(str,options){return cookie_2.Cookie.parse(str,options)}function fromJSON(str){return cookie_2.Cookie.fromJSON(str)}}});var require_model=__commonJS({"src/lib/apiClient/model.js"(exports2,module2){var crypto=require("crypto"),METHODS=["GET","POST","PUT","PATCH","DELETE","HEAD","OPTIONS"],LIMITS={request:20*1024*1024,response:50*1024*1024,preview:1024*1024,disk:256*1024*1024},sensitive=/authorization|cookie|password|token|secret|api[-_]?key/i;function fail(message,status=400){let error=new Error(message);return error.status=status,error}function check(value,message,status=400){if(!value)throw fail(message,status)}function safeObject(value,depth=0){if(check(depth<60,"\u6570\u636E\u5D4C\u5957\u8FC7\u6DF1"),!(!value||typeof value!="object"))for(let key of Object.keys(value))check(!["__proto__","prototype","constructor"].includes(key),"\u4E0D\u5141\u8BB8\u7684\u5BF9\u8C61\u5B57\u6BB5"),safeObject(value[key],depth+1)}function entries(value=[]){return check(Array.isArray(value)&&value.length<=2e3,"\u53C2\u6570\u5FC5\u987B\u662F\u5217\u8868\uFF08\u6700\u591A 2000 \u9879\uFF09"),value.map(row=>(check(row&&typeof row.key=="string"&&typeof row.value=="string","\u53C2\u6570\u9700\u8981\u5B57\u7B26\u4E32 key/value"),{...row,enabled:row.enabled!==!1}))}function request(value){check(value&&typeof value=="object","\u8BF7\u6C42\u4E0D\u80FD\u4E3A\u7A7A"),safeObject(value),check(METHODS.includes(value.method),"\u4E0D\u652F\u6301\u7684 HTTP \u65B9\u6CD5"),check(typeof value.url=="string"&&value.url.length<=32768,"URL \u65E0\u6548\u6216\u8FC7\u957F");let body=value.body||{type:"none"};check(["none","json","text","xml","form","multipart","binary"].includes(body.type),"\u4E0D\u652F\u6301\u7684\u6B63\u6587\u7C7B\u578B");let settings={timeout:3e4,redirects:!0,verifyTls:!0,cookies:!0,...value.settings};check(Number.isInteger(settings.timeout)&&settings.timeout>=1e3&&settings.timeout<=3e5,"\u8D85\u65F6\u5FC5\u987B\u4E3A 1000\u2013300000 \u6BEB\u79D2");for(let key of["redirects","verifyTls","cookies"])check(typeof settings[key]=="boolean",`\u8BBE\u7F6E ${key} \u5FC5\u987B\u662F\u5E03\u5C14\u503C`);let auth=value.auth||{type:"inherit"};check(["inherit","none","basic","bearer","apiKey"].includes(auth.type),"\u4E0D\u652F\u6301\u7684\u8BA4\u8BC1\u65B9\u5F0F"),auth.type==="apiKey"&&check(auth.in===void 0||["header","query"].includes(auth.in),"API Key \u4F4D\u7F6E\u65E0\u6548");for(let key of["username","password","token","key","value"])check(auth[key]===void 0||typeof auth[key]=="string",`\u8BA4\u8BC1 ${key} \u5FC5\u987B\u662F\u5B57\u7B26\u4E32`);(body.type==="form"||body.type==="multipart")&&entries(body.fields||[]),body.text!==void 0&&check(typeof body.text=="string","\u6B63\u6587\u5FC5\u987B\u662F\u5B57\u7B26\u4E32");for(let key of["assertions","extractors"])check(value[key]===void 0||Array.isArray(value[key])&&value[key].length<=100,`${key} \u6700\u591A 100 \u9879`);for(let rule of value.assertions||[])check(rule&&typeof rule=="object"&&["status","header","json","time"].includes(rule.source),"\u65AD\u8A00\u6765\u6E90\u65E0\u6548"),check(["exists","equals","contains","type","lessThan"].includes(rule.op),"\u65AD\u8A00\u64CD\u4F5C\u65E0\u6548");for(let rule of value.extractors||[])check(rule&&typeof rule.name=="string"&&rule.name&&["json","header"].includes(rule.source),"\u53D8\u91CF\u63D0\u53D6\u89C4\u5219\u65E0\u6548");return{...value,id:value.id||crypto.randomUUID(),name:String(value.name||"\u65B0\u8BF7\u6C42").slice(0,200),headers:entries(value.headers),query:entries(value.query),body,auth,settings,assertions:value.assertions||[],extractors:value.extractors||[]}}function resource(kind,value){safeObject(value),check(value&&typeof value.name=="string"&&value.name.trim(),"\u540D\u79F0\u4E0D\u80FD\u4E3A\u7A7A"),check(value.schemaVersion===void 0||value.schemaVersion===1,"\u4E0D\u652F\u6301\u7684 schemaVersion");let result={...value,schemaVersion:1,variables:entries(value.variables)};if(kind==="collections"){value.auth&&(result.auth=request({method:"GET",url:"",auth:value.auth}).auth);let count=0,ids=new Set,visit=(items,depth=0)=>(check(Array.isArray(items)&&depth<=20,"\u96C6\u5408\u76EE\u5F55\u65E0\u6548\u6216\u8FC7\u6DF1"),items.map(item=>{check(++count<=1e4,"\u96C6\u5408\u6700\u591A 10000 \u4E2A\u6761\u76EE");let id=item.id||crypto.randomUUID();return check(typeof id=="string"&&!ids.has(id),"\u6761\u76EE ID \u5FC5\u987B\u552F\u4E00"),ids.add(id),item.type==="folder"?{id,type:"folder",name:String(item.name||"\u76EE\u5F55"),items:visit(item.items||[],depth+1)}:request({...item,id})}));result.items=visit(value.items||[])}return result}function variables(...groups){let result=Object.create(null);for(let group of groups)if(Array.isArray(group))for(let row of group)row.enabled!==!1&&(result[row.key]=row.value);else group&&typeof group=="object"&&Object.assign(result,group);return result}function interpolate(value,vars,seen=[]){return typeof value=="string"?value.replace(/\{\{\s*([^{}]+?)\s*\}\}/g,(_,key)=>(check(Object.hasOwn(vars,key)&&vars[key]!==void 0,`\u672A\u5B9A\u4E49\u53D8\u91CF: ${key}`),check(!seen.includes(key)&&seen.length<20,`\u53D8\u91CF\u5FAA\u73AF\u5F15\u7528: ${key}`),interpolate(String(vars[key]),vars,[...seen,key]))):Array.isArray(value)?value.map(row=>interpolate(row,vars,seen)):value&&typeof value=="object"?value.enabled===!1?value:Object.fromEntries(Object.entries(value).map(([key,item])=>[key,interpolate(item,vars,seen)])):value}function pointer(value,path){if(path==="")return value;check(typeof path=="string"&&path.startsWith("/"),"JSON Pointer \u5FC5\u987B\u4EE5 / \u5F00\u59CB");for(let key of path.slice(1).split("/").map(part=>part.replace(/~1/g,"/").replace(/~0/g,"~"))){if(value===null||typeof value!="object"||!Object.hasOwn(value,key))return;value=value[key]}return value}function evaluate(rules,result,json){let select=rule=>{if(rule.source==="status")return result.status;if(rule.source==="time")return result.duration;if(rule.source==="header")return result.headers.find(row=>row.key.toLowerCase()===String(rule.path).toLowerCase())?.value;if(rule.source==="json")return pointer(json,rule.path);throw fail("\u4E0D\u652F\u6301\u7684\u65AD\u8A00\u6765\u6E90")},assertions=(rules.assertions||[]).map(rule=>{try{let actual=select(rule),passed;switch(rule.op){case"exists":passed=actual!==void 0;break;case"equals":passed=JSON.stringify(actual)===JSON.stringify(rule.value);break;case"contains":passed=(typeof actual=="string"||Array.isArray(actual))&&actual.includes(rule.value);break;case"type":passed=(Array.isArray(actual)?"array":actual===null?"null":typeof actual)===rule.value;break;case"lessThan":passed=typeof actual=="number"&&actual<Number(rule.value);break;default:throw fail("\u4E0D\u652F\u6301\u7684\u65AD\u8A00\u64CD\u4F5C")}return{name:rule.name||`${rule.source} ${rule.path||""} ${rule.op}`,passed,actual}}catch(error){return{name:rule.name||"\u65AD\u8A00",passed:!1,error:error.message}}}),extracted=Object.create(null),errors=[];for(let rule of rules.extractors||[])try{check(typeof rule.name=="string"&&rule.name&&!["__proto__","constructor","prototype"].includes(rule.name),"\u63D0\u53D6\u53D8\u91CF\u540D\u65E0\u6548"),check(["header","json"].includes(rule.source),"\u63D0\u53D6\u4EC5\u652F\u6301 header/json");let value=select(rule);check(value!==void 0,`\u63D0\u53D6\u5931\u8D25: ${rule.name}`),extracted[rule.name]=typeof value=="object"?JSON.stringify(value):String(value)}catch(error){errors.push(error.message)}return{assertions,extracted,extractionErrors:errors}}function redact(value){if(Array.isArray(value))return value.map(redact);if(!value||typeof value!="object")return value;let output={};for(let[key,item]of Object.entries(value)){if(["uploadId","revision"].includes(key))continue;if(key==="url"&&typeof item=="string"){output[key]=item.replace(/([?&])([^=&]+)=([^&#]*)/g,(whole,separator,name,val)=>{try{return sensitive.test(decodeURIComponent(name))&&!/\{\{[^{}]+\}\}/.test(decodeURIComponent(val))?`${separator}${name}=`:whole}catch{return whole}});continue}let isSecret=key==="value"&&(value.secret||sensitive.test(value.key||""))||["password","token","username"].includes(key)||key==="value"&&value.type==="apiKey";output[key]=isSecret&&typeof item=="string"&&!/\{\{[^{}]+\}\}/.test(item)?"":redact(item)}return output}function flatten(items){return items.flatMap(item=>item.type==="folder"?flatten(item.items):[item])}module2.exports={METHODS,LIMITS,sensitive,fail,check,safeObject,entries,request,resource,variables,interpolate,pointer,evaluate,redact,flatten}}});var require_store2=__commonJS({"src/lib/apiClient/store.js"(exports2,module2){var fs=require("fs/promises"),{constants}=require("fs"),path=require("path"),crypto=require("crypto"),{check,fail,resource,redact}=require_model(),hash=data=>crypto.createHash("sha256").update(data).digest("hex"),uuid=/^[a-f0-9]{8}-[a-f0-9]{4}-[a-f0-9]{4}-[a-f0-9]{4}-[a-f0-9]{12}$/i,Workspace=class{constructor(root){this.root=path.resolve(root),this.id=hash(this.root)}async directory(kind,create=!1){check(["collections","environments"].includes(kind),"\u8D44\u6E90\u7C7B\u578B\u65E0\u6548"),create&&await fs.mkdir(this.root,{recursive:!0});let rootStat=await fs.lstat(this.root);check(rootStat.isDirectory()&&!rootStat.isSymbolicLink(),"\u5DE5\u4F5C\u533A\u4E0D\u80FD\u662F\u7B26\u53F7\u94FE\u63A5",403);try{let file=path.join(this.root,"workspace.json"),metadata=await fs.lstat(file);check(metadata.isFile()&&!metadata.isSymbolicLink()&&metadata.size<65536,"\u5DE5\u4F5C\u533A\u5143\u6570\u636E\u65E0\u6548"),check(JSON.parse(await fs.readFile(file,"utf8")).schemaVersion===1,"\u4E0D\u652F\u6301\u7684\u5DE5\u4F5C\u533A schemaVersion")}catch(error){if(error.code!=="ENOENT")throw error}let dir=path.join(this.root,kind);create&&await fs.mkdir(dir,{recursive:!0});let stat=await fs.lstat(dir);return check(stat.isDirectory()&&!stat.isSymbolicLink(),"\u5DE5\u4F5C\u533A\u5B50\u76EE\u5F55\u4E0D\u80FD\u662F\u7B26\u53F7\u94FE\u63A5"),dir}async read(kind,id){check(uuid.test(id),"\u8D44\u6E90 ID \u65E0\u6548");let dir=await this.directory(kind),file=path.join(dir,`${id}.json`),stat=await fs.lstat(file);check(stat.isFile()&&!stat.isSymbolicLink()&&stat.size<=20*1024*1024,"\u5DE5\u4F5C\u533A\u6587\u4EF6\u65E0\u6548\u6216\u8FC7\u5927");let handle=await fs.open(file,constants.O_RDONLY|(constants.O_NOFOLLOW||0)),text;try{check((await handle.stat()).size<=20*1024*1024,"\u5DE5\u4F5C\u533A\u6587\u4EF6\u8FC7\u5927"),text=await handle.readFile("utf8")}finally{await handle.close()}return{...resource(kind,JSON.parse(text)),id,revision:hash(text)}}async list(kind){let dir;try{dir=await this.directory(kind)}catch(error){if(error.code==="ENOENT")return[];throw error}let names=await fs.readdir(dir),rows=[];for(let name of names.filter(name2=>uuid.test(name2.slice(0,-5))&&name2.endsWith(".json")))rows.push(await this.read(kind,name.slice(0,-5)));return rows.sort((a,b)=>a.name.localeCompare(b.name))}async write(kind,id,value,revision,remove=!1){check(uuid.test(id),"\u8D44\u6E90 ID \u65E0\u6548");let data=remove?null:{...redact(resource(kind,value)),id},dir=await this.directory(kind,!0),lock=path.join(this.root,".write-lock");try{await fs.mkdir(lock)}catch(error){throw error.code==="EEXIST"?fail("\u5DE5\u4F5C\u533A\u6B63\u5728\u5199\u5165\uFF1B\u8BF7\u7A0D\u540E\u91CD\u8BD5\uFF08\u5F02\u5E38\u9000\u51FA\u540E\u53EF\u624B\u52A8\u79FB\u9664 .write-lock\uFF09",409):error}let temp=path.join(dir,`.${crypto.randomUUID()}.tmp`);try{let current=null;try{current=await this.read(kind,id)}catch(error){if(error.code!=="ENOENT")throw error}check((current?.revision||null)===(revision||null),"\u6587\u4EF6\u5DF2\u88AB\u5176\u4ED6\u7A97\u53E3\u6216\u5916\u90E8\u5DE5\u5177\u4FEE\u6539\uFF0C\u8BF7\u91CD\u65B0\u52A0\u8F7D\u540E\u4FDD\u5B58");let file=path.join(dir,`${id}.json`);if(remove)return check(current,"\u8D44\u6E90\u4E0D\u5B58\u5728"),await fs.unlink(file),{id};let text=`${JSON.stringify(data,null,2)}
|
|
76
76
|
`;check(Buffer.byteLength(text)<=20*1024*1024,"\u96C6\u5408\u6587\u4EF6\u8D85\u8FC7 20 MiB"),await fs.writeFile(temp,text,{flag:"wx",mode:384}),await fs.rename(temp,file);let metadata=path.join(this.root,"workspace.json");try{await fs.writeFile(metadata,JSON.stringify({schemaVersion:1},null,2)+`
|
|
77
|
-
`,{flag:"wx",mode:384})}catch(error){if(error.code!=="EEXIST")throw error}return{...data,revision:hash(text)}}catch(error){throw error.message.startsWith("\u6587\u4EF6\u5DF2\u88AB")&&(error.status=409),error}finally{await fs.rm(temp,{force:!0}),await fs.rmdir(lock)}}};module2.exports={Workspace}}});var require_download=__commonJS({"src/lib/apiClient/download.js"(exports2,module2){var contentDisposition=require_content_disposition(),mime=require_mime_types();function responseFilename(headers){let name;try{name=contentDisposition.parse(headers["content-disposition"]).parameters.filename}catch{}if(typeof name=="string"&&(name=name.split(/[/\\]/).pop().replace(/[\u0000-\u001f\u007f-\u009f<>:"|?*\u202a-\u202e\u2066-\u2069]/g,"_").replace(/^[. ]+|[. ]+$/g,""),name&&name.length<=180))return/^(con|prn|aux|nul|com[1-9]|lpt[1-9])(?:\.|$)/i.test(name)&&(name=`_${name}`),name;let type=String(headers["content-type"]||"").split(";")[0].trim().toLowerCase();return`response.${(type.endsWith("+json")?"json":type.endsWith("+xml")?"xml":mime.extension(type))||"bin"}`}module2.exports={responseFilename}}});var require_engine=__commonJS({"src/lib/apiClient/engine.js"(exports2,module2){var http=require("http"),https=require("https"),fs=require("fs"),fsp=require("fs/promises"),os=require("os"),path=require("path"),crypto=require("crypto"),zlib=require("zlib"),{Transform}=require("stream"),{pipeline}=require("stream/promises"),{Worker}=require("worker_threads"),{CookieJar}=require_cookie3(),{responseFilename}=require_download(),{LIMITS,fail,check,request,interpolate,variables,redact,sensitive}=require_model(),TemporaryFiles=class{constructor(){this.files=new Map,this.bytes=0,this.ready=fsp.mkdtemp(path.join(os.tmpdir(),"mock-api-client-")).then(dir=>(this.dir=dir,dir))}async create(owner){await this.ready,check(this.files.size<500,"\u4E34\u65F6\u6587\u4EF6\u6570\u91CF\u5DF2\u8FBE\u4E0A\u9650");let id=crypto.randomUUID(),file={id,owner,path:path.join(this.dir,id),size:0,time:Date.now()};return this.files.set(id,file),file}add(file,size){if(this.bytes+size>LIMITS.disk)throw fail("\u4E34\u65F6\u5B58\u50A8\u8D85\u8FC7 256 MiB\uFF0C\u8BF7\u6E05\u7406\u7ED3\u679C\u540E\u91CD\u8BD5",413);file.size+=size,this.bytes+=size}get(id,owner){let file=this.files.get(id);if(!file||file.owner!==owner)throw fail("\u4E34\u65F6\u6587\u4EF6\u4E0D\u5B58\u5728\u6216\u5DF2\u8FC7\u671F",404);return file}async remove(id){let file=this.files.get(id);file&&(this.files.delete(id),this.bytes-=file.size,await fsp.rm(file.path,{force:!0}))}async close(){await this.ready,await fsp.rm(this.dir,{recursive:!0,force:!0}),this.files.clear(),this.bytes=0}};function target(value){let url;try{url=new URL(value)}catch{throw fail("\u8BF7\u8F93\u5165\u5B8C\u6574\u7684 HTTP/HTTPS URL")}return check(["http:","https:"].includes(url.protocol)&&!url.username&&!url.password,"\u4EC5\u652F\u6301 HTTP/HTTPS\uFF1B\u8BF7\u5728\u8BA4\u8BC1\u9762\u677F\u8BBE\u7F6E\u51ED\u636E"),url.hash="",url}function headerRows(raw){let result=[];for(let i=0;i<raw.length;i+=2)result.push({key:raw[i],value:raw[i+1]});return result}function outgoingHeaders(rows){let headers=Object.create(null);for(let row of rows.filter(row2=>row2.enabled!==!1)){try{http.validateHeaderName(row.key),http.validateHeaderValue(row.key,row.value)}catch{throw fail("\u8BF7\u6C42\u5934\u540D\u79F0\u6216\u503C\u65E0\u6548\uFF0C\u8BF7\u68C0\u67E5 Headers")}let key=row.key.toLowerCase();check(!
|
|
77
|
+
`,{flag:"wx",mode:384})}catch(error){if(error.code!=="EEXIST")throw error}return{...data,revision:hash(text)}}catch(error){throw error.message.startsWith("\u6587\u4EF6\u5DF2\u88AB")&&(error.status=409),error}finally{await fs.rm(temp,{force:!0}),await fs.rmdir(lock)}}};module2.exports={Workspace}}});var require_download=__commonJS({"src/lib/apiClient/download.js"(exports2,module2){var contentDisposition=require_content_disposition(),mime=require_mime_types();function responseFilename(headers){let name;try{name=contentDisposition.parse(headers["content-disposition"]).parameters.filename}catch{}if(typeof name=="string"&&(name=name.split(/[/\\]/).pop().replace(/[\u0000-\u001f\u007f-\u009f<>:"|?*\u202a-\u202e\u2066-\u2069]/g,"_").replace(/^[. ]+|[. ]+$/g,""),name&&name.length<=180))return/^(con|prn|aux|nul|com[1-9]|lpt[1-9])(?:\.|$)/i.test(name)&&(name=`_${name}`),name;let type=String(headers["content-type"]||"").split(";")[0].trim().toLowerCase();return`response.${(type.endsWith("+json")?"json":type.endsWith("+xml")?"xml":mime.extension(type))||"bin"}`}module2.exports={responseFilename}}});var require_headers=__commonJS({"src/lib/apiClient/headers.js"(exports2,module2){var managedHeaders=new Set(["host","content-length","connection","transfer-encoding","upgrade","proxy-authorization","proxy-connection","trailer","te"]),isManagedHeader=name=>managedHeaders.has(name.toLowerCase());module2.exports={isManagedHeader}}});var require_engine=__commonJS({"src/lib/apiClient/engine.js"(exports2,module2){var http=require("http"),https=require("https"),fs=require("fs"),fsp=require("fs/promises"),os=require("os"),path=require("path"),crypto=require("crypto"),zlib=require("zlib"),{Transform}=require("stream"),{pipeline}=require("stream/promises"),{Worker}=require("worker_threads"),{CookieJar}=require_cookie3(),{responseFilename}=require_download(),{isManagedHeader}=require_headers(),{LIMITS,fail,check,request,interpolate,variables,redact,sensitive}=require_model(),TemporaryFiles=class{constructor(){this.files=new Map,this.bytes=0,this.ready=fsp.mkdtemp(path.join(os.tmpdir(),"mock-api-client-")).then(dir=>(this.dir=dir,dir))}async create(owner){await this.ready,check(this.files.size<500,"\u4E34\u65F6\u6587\u4EF6\u6570\u91CF\u5DF2\u8FBE\u4E0A\u9650");let id=crypto.randomUUID(),file={id,owner,path:path.join(this.dir,id),size:0,time:Date.now()};return this.files.set(id,file),file}add(file,size){if(this.bytes+size>LIMITS.disk)throw fail("\u4E34\u65F6\u5B58\u50A8\u8D85\u8FC7 256 MiB\uFF0C\u8BF7\u6E05\u7406\u7ED3\u679C\u540E\u91CD\u8BD5",413);file.size+=size,this.bytes+=size}get(id,owner){let file=this.files.get(id);if(!file||file.owner!==owner)throw fail("\u4E34\u65F6\u6587\u4EF6\u4E0D\u5B58\u5728\u6216\u5DF2\u8FC7\u671F",404);return file}async remove(id){let file=this.files.get(id);file&&(this.files.delete(id),this.bytes-=file.size,await fsp.rm(file.path,{force:!0}))}async close(){await this.ready,await fsp.rm(this.dir,{recursive:!0,force:!0}),this.files.clear(),this.bytes=0}};function target(value){let url;try{url=new URL(value)}catch{throw fail("\u8BF7\u8F93\u5165\u5B8C\u6574\u7684 HTTP/HTTPS URL")}return check(["http:","https:"].includes(url.protocol)&&!url.username&&!url.password,"\u4EC5\u652F\u6301 HTTP/HTTPS\uFF1B\u8BF7\u5728\u8BA4\u8BC1\u9762\u677F\u8BBE\u7F6E\u51ED\u636E"),url.hash="",url}function headerRows(raw){let result=[];for(let i=0;i<raw.length;i+=2)result.push({key:raw[i],value:raw[i+1]});return result}function outgoingHeaders(rows){let headers=Object.create(null);for(let row of rows.filter(row2=>row2.enabled!==!1)){try{http.validateHeaderName(row.key),http.validateHeaderValue(row.key,row.value)}catch{throw fail("\u8BF7\u6C42\u5934\u540D\u79F0\u6216\u503C\u65E0\u6548\uFF0C\u8BF7\u68C0\u67E5 Headers")}let key=row.key.toLowerCase();check(!isManagedHeader(key),`\u8BF7\u6C42\u5934 ${row.key} \u7531\u5BA2\u6237\u7AEF\u7BA1\u7406`),headers[key]?headers[key]=[].concat(headers[key],row.value):headers[key]=row.value}return headers}async function bodyBuffer(body,headers,files,owner){let setType=value=>{headers["content-type"]||(headers["content-type"]=value)};if(body.type==="none")return null;if(body.type==="binary")return fsp.readFile(files.get(body.uploadId,owner).path);if(body.type==="multipart"){let boundary=`----MockClient${crypto.randomBytes(16).toString("hex")}`;headers["content-type"]=`multipart/form-data; boundary=${boundary}`;let chunks=[],size=0,append=chunk=>{let data=Buffer.isBuffer(chunk)?chunk:Buffer.from(chunk);size+=data.length,check(size<=LIMITS.request,"\u8BF7\u6C42\u6B63\u6587\u8D85\u8FC7 20 MiB"),chunks.push(data)};for(let row of(body.fields||[]).filter(row2=>row2.enabled!==!1)){if(check(!/[\r\n"]/.test(row.key),"\u8868\u5355\u5B57\u6BB5\u540D\u65E0\u6548"),append(`--${boundary}\r
|
|
78
78
|
Content-Disposition: form-data; name="${row.key}"`),row.uploadId||row.file){let file=files.get(row.uploadId,owner);append(`; filename="${String(file.name||"file").replace(/[\r\n"\\]/g,"_")}"\r
|
|
79
79
|
Content-Type: application/octet-stream\r
|
|
80
80
|
\r
|
|
@@ -218,8 +218,8 @@ ${end.comment}`:end.comment}this.doc.range[2]=end.offset;break}default:this.erro
|
|
|
218
218
|
`)+1;for(;nl!==0;)this.onNewLine(this.offset+nl),nl=this.source.indexOf(`
|
|
219
219
|
`,nl)+1}yield*this.pop();break;default:yield*this.pop(),yield*this.step()}}*blockMap(map){let it=map.items[map.items.length-1];switch(this.type){case"newline":if(this.onKeyLine=!1,it.value){let end="end"in it.value?it.value.end:void 0;(Array.isArray(end)?end[end.length-1]:void 0)?.type==="comment"?end?.push(this.sourceToken):map.items.push({start:[this.sourceToken]})}else it.sep?it.sep.push(this.sourceToken):it.start.push(this.sourceToken);return;case"space":case"comment":if(it.value)map.items.push({start:[this.sourceToken]});else if(it.sep)it.sep.push(this.sourceToken);else{if(this.atIndentedComment(it.start,map.indent)){let end=map.items[map.items.length-2]?.value?.end;if(Array.isArray(end)){arrayPushArray(end,it.start),end.push(this.sourceToken),map.items.pop();return}}it.start.push(this.sourceToken)}return}if(this.indent>=map.indent){let atMapIndent=!this.onKeyLine&&this.indent===map.indent,atNextItem=atMapIndent&&(it.sep||it.explicitKey)&&this.type!=="seq-item-ind",start=[];if(atNextItem&&it.sep&&!it.value){let nl=[];for(let i=0;i<it.sep.length;++i){let st=it.sep[i];switch(st.type){case"newline":nl.push(i);break;case"space":break;case"comment":st.indent>map.indent&&(nl.length=0);break;default:nl.length=0}}nl.length>=2&&(start=it.sep.splice(nl[1]))}switch(this.type){case"anchor":case"tag":atNextItem||it.value?(start.push(this.sourceToken),map.items.push({start}),this.onKeyLine=!0):it.sep?it.sep.push(this.sourceToken):it.start.push(this.sourceToken);return;case"explicit-key-ind":!it.sep&&!it.explicitKey?(it.start.push(this.sourceToken),it.explicitKey=!0):atNextItem||it.value?(start.push(this.sourceToken),map.items.push({start,explicitKey:!0})):this.stack.push({type:"block-map",offset:this.offset,indent:this.indent,items:[{start:[this.sourceToken],explicitKey:!0}]}),this.onKeyLine=!0;return;case"map-value-ind":if(it.explicitKey)if(it.sep)if(it.value)map.items.push({start:[],key:null,sep:[this.sourceToken]});else if(includesToken(it.sep,"map-value-ind"))this.stack.push({type:"block-map",offset:this.offset,indent:this.indent,items:[{start,key:null,sep:[this.sourceToken]}]});else if(isFlowToken(it.key)&&!includesToken(it.sep,"newline")){let start2=getFirstKeyStartProps(it.start),key=it.key,sep=it.sep;sep.push(this.sourceToken),delete it.key,delete it.sep,this.stack.push({type:"block-map",offset:this.offset,indent:this.indent,items:[{start:start2,key,sep}]})}else start.length>0?it.sep=it.sep.concat(start,this.sourceToken):it.sep.push(this.sourceToken);else if(includesToken(it.start,"newline"))Object.assign(it,{key:null,sep:[this.sourceToken]});else{let start2=getFirstKeyStartProps(it.start);this.stack.push({type:"block-map",offset:this.offset,indent:this.indent,items:[{start:start2,key:null,sep:[this.sourceToken]}]})}else it.sep?it.value||atNextItem?map.items.push({start,key:null,sep:[this.sourceToken]}):includesToken(it.sep,"map-value-ind")?this.stack.push({type:"block-map",offset:this.offset,indent:this.indent,items:[{start:[],key:null,sep:[this.sourceToken]}]}):it.sep.push(this.sourceToken):Object.assign(it,{key:null,sep:[this.sourceToken]});this.onKeyLine=!0;return;case"alias":case"scalar":case"single-quoted-scalar":case"double-quoted-scalar":{let fs=this.flowScalar(this.type);atNextItem||it.value?(map.items.push({start,key:fs,sep:[]}),this.onKeyLine=!0):it.sep?this.stack.push(fs):(Object.assign(it,{key:fs,sep:[]}),this.onKeyLine=!0);return}default:{let bv=this.startBlockValue(map);if(bv){if(bv.type==="block-seq"){if(!it.explicitKey&&it.sep&&!includesToken(it.sep,"newline")){yield*this.pop({type:"error",offset:this.offset,message:"Unexpected block-seq-ind on same line with key",source:this.source});return}}else atMapIndent&&map.items.push({start});this.stack.push(bv);return}}}}yield*this.pop(),yield*this.step()}*blockSequence(seq){let it=seq.items[seq.items.length-1];switch(this.type){case"newline":if(it.value){let end="end"in it.value?it.value.end:void 0;(Array.isArray(end)?end[end.length-1]:void 0)?.type==="comment"?end?.push(this.sourceToken):seq.items.push({start:[this.sourceToken]})}else it.start.push(this.sourceToken);return;case"space":case"comment":if(it.value)seq.items.push({start:[this.sourceToken]});else{if(this.atIndentedComment(it.start,seq.indent)){let end=seq.items[seq.items.length-2]?.value?.end;if(Array.isArray(end)){arrayPushArray(end,it.start),end.push(this.sourceToken),seq.items.pop();return}}it.start.push(this.sourceToken)}return;case"anchor":case"tag":if(it.value||this.indent<=seq.indent)break;it.start.push(this.sourceToken);return;case"seq-item-ind":if(this.indent!==seq.indent)break;it.value||includesToken(it.start,"seq-item-ind")?seq.items.push({start:[this.sourceToken]}):it.start.push(this.sourceToken);return}if(this.indent>seq.indent){let bv=this.startBlockValue(seq);if(bv){this.stack.push(bv);return}}yield*this.pop(),yield*this.step()}*flowCollection(fc){let it=fc.items[fc.items.length-1];if(this.type==="flow-error-end"){let top;do yield*this.pop(),top=this.peek(1);while(top?.type==="flow-collection")}else if(fc.end.length===0){switch(this.type){case"comma":case"explicit-key-ind":!it||it.sep?fc.items.push({start:[this.sourceToken]}):it.start.push(this.sourceToken);return;case"map-value-ind":!it||it.value?fc.items.push({start:[],key:null,sep:[this.sourceToken]}):it.sep?it.sep.push(this.sourceToken):Object.assign(it,{key:null,sep:[this.sourceToken]});return;case"space":case"comment":case"newline":case"anchor":case"tag":!it||it.value?fc.items.push({start:[this.sourceToken]}):it.sep?it.sep.push(this.sourceToken):it.start.push(this.sourceToken);return;case"alias":case"scalar":case"single-quoted-scalar":case"double-quoted-scalar":{let fs=this.flowScalar(this.type);!it||it.value?fc.items.push({start:[],key:fs,sep:[]}):it.sep?this.stack.push(fs):Object.assign(it,{key:fs,sep:[]});return}case"flow-map-end":case"flow-seq-end":fc.end.push(this.sourceToken);return}let bv=this.startBlockValue(fc);bv?this.stack.push(bv):(yield*this.pop(),yield*this.step())}else{let parent=this.peek(2);if(parent.type==="block-map"&&(this.type==="map-value-ind"&&parent.indent===fc.indent||this.type==="newline"&&!parent.items[parent.items.length-1].sep))yield*this.pop(),yield*this.step();else if(this.type==="map-value-ind"&&parent.type!=="flow-collection"){let prev=getPrevProps(parent),start=getFirstKeyStartProps(prev);fixFlowSeqItems(fc);let sep=fc.end.splice(1,fc.end.length);sep.push(this.sourceToken);let map={type:"block-map",offset:fc.offset,indent:fc.indent,items:[{start,key:fc,sep}]};this.onKeyLine=!0,this.stack[this.stack.length-1]=map}else yield*this.lineEnd(fc)}}flowScalar(type){if(this.onNewLine){let nl=this.source.indexOf(`
|
|
220
220
|
`)+1;for(;nl!==0;)this.onNewLine(this.offset+nl),nl=this.source.indexOf(`
|
|
221
|
-
`,nl)+1}return{type,offset:this.offset,indent:this.indent,source:this.source}}startBlockValue(parent){switch(this.type){case"alias":case"scalar":case"single-quoted-scalar":case"double-quoted-scalar":return this.flowScalar(this.type);case"block-scalar-header":return{type:"block-scalar",offset:this.offset,indent:this.indent,props:[this.sourceToken],source:""};case"flow-map-start":case"flow-seq-start":return{type:"flow-collection",offset:this.offset,indent:this.indent,start:this.sourceToken,items:[],end:[]};case"seq-item-ind":return{type:"block-seq",offset:this.offset,indent:this.indent,items:[{start:[this.sourceToken]}]};case"explicit-key-ind":{this.onKeyLine=!0;let prev=getPrevProps(parent),start=getFirstKeyStartProps(prev);return start.push(this.sourceToken),{type:"block-map",offset:this.offset,indent:this.indent,items:[{start,explicitKey:!0}]}}case"map-value-ind":{this.onKeyLine=!0;let prev=getPrevProps(parent),start=getFirstKeyStartProps(prev);return{type:"block-map",offset:this.offset,indent:this.indent,items:[{start,key:null,sep:[this.sourceToken]}]}}}return null}atIndentedComment(start,indent){return this.type!=="comment"||this.indent<=indent?!1:start.every(st=>st.type==="newline"||st.type==="space")}*documentEnd(docEnd){this.type!=="doc-mode"&&(docEnd.end?docEnd.end.push(this.sourceToken):docEnd.end=[this.sourceToken],this.type==="newline"&&(yield*this.pop()))}*lineEnd(token){switch(this.type){case"comma":case"doc-start":case"doc-end":case"flow-seq-end":case"flow-map-end":case"map-value-ind":yield*this.pop(),yield*this.step();break;case"newline":this.onKeyLine=!1;default:token.end?token.end.push(this.sourceToken):token.end=[this.sourceToken],this.type==="newline"&&(yield*this.pop())}}};exports2.Parser=Parser}});var require_public_api=__commonJS({"node_modules/yaml/dist/public-api.js"(exports2){"use strict";var composer=require_composer(),Document=require_Document(),errors=require_errors(),log=require_log(),identity=require_identity(),lineCounter=require_line_counter(),parser=require_parser();function parseOptions(options){let prettyErrors=options.prettyErrors!==!1;return{lineCounter:options.lineCounter||prettyErrors&&new lineCounter.LineCounter||null,prettyErrors}}function parseAllDocuments(source,options={}){let{lineCounter:lineCounter2,prettyErrors}=parseOptions(options),parser$1=new parser.Parser(lineCounter2?.addNewLine),composer$1=new composer.Composer(options),docs=Array.from(composer$1.compose(parser$1.parse(source)));if(prettyErrors&&lineCounter2)for(let doc of docs)doc.errors.forEach(errors.prettifyError(source,lineCounter2)),doc.warnings.forEach(errors.prettifyError(source,lineCounter2));return docs.length>0?docs:Object.assign([],{empty:!0},composer$1.streamInfo())}function parseDocument(source,options={}){let{lineCounter:lineCounter2,prettyErrors}=parseOptions(options),parser$1=new parser.Parser(lineCounter2?.addNewLine),composer$1=new composer.Composer(options),doc=null;for(let _doc of composer$1.compose(parser$1.parse(source),!0,source.length))if(!doc)doc=_doc;else if(doc.options.logLevel!=="silent"){doc.errors.push(new errors.YAMLParseError(_doc.range.slice(0,2),"MULTIPLE_DOCS","Source contains multiple documents; please use YAML.parseAllDocuments()"));break}return prettyErrors&&lineCounter2&&(doc.errors.forEach(errors.prettifyError(source,lineCounter2)),doc.warnings.forEach(errors.prettifyError(source,lineCounter2))),doc}function parse(src,reviver,options){let _reviver;typeof reviver=="function"?_reviver=reviver:options===void 0&&reviver&&typeof reviver=="object"&&(options=reviver);let doc=parseDocument(src,options);if(!doc)return null;if(doc.warnings.forEach(warning=>log.warn(doc.options.logLevel,warning)),doc.errors.length>0){if(doc.options.logLevel!=="silent")throw doc.errors[0];doc.errors=[]}return doc.toJS(Object.assign({reviver:_reviver},options))}function stringify(value,replacer,options){let _replacer=null;if(typeof replacer=="function"||Array.isArray(replacer)?_replacer=replacer:options===void 0&&replacer&&(options=replacer),typeof options=="string"&&(options=options.length),typeof options=="number"){let indent=Math.round(options);options=indent<1?void 0:indent>8?{indent:8}:{indent}}if(value===void 0){let{keepUndefined}=options??replacer??{};if(!keepUndefined)return}return identity.isDocument(value)&&!_replacer?value.toString(options):new Document.Document(value,_replacer,options).toString(options)}exports2.parse=parse;exports2.parseAllDocuments=parseAllDocuments;exports2.parseDocument=parseDocument;exports2.stringify=stringify}});var require_dist=__commonJS({"node_modules/yaml/dist/index.js"(exports2){"use strict";var composer=require_composer(),Document=require_Document(),Schema=require_Schema(),errors=require_errors(),Alias=require_Alias(),identity=require_identity(),Pair=require_Pair(),Scalar=require_Scalar(),YAMLMap=require_YAMLMap(),YAMLSeq=require_YAMLSeq(),cst=require_cst(),lexer=require_lexer(),lineCounter=require_line_counter(),parser=require_parser(),publicApi=require_public_api(),visit=require_visit();exports2.Composer=composer.Composer;exports2.Document=Document.Document;exports2.Schema=Schema.Schema;exports2.YAMLError=errors.YAMLError;exports2.YAMLParseError=errors.YAMLParseError;exports2.YAMLWarning=errors.YAMLWarning;exports2.Alias=Alias.Alias;exports2.isAlias=identity.isAlias;exports2.isCollection=identity.isCollection;exports2.isDocument=identity.isDocument;exports2.isMap=identity.isMap;exports2.isNode=identity.isNode;exports2.isPair=identity.isPair;exports2.isScalar=identity.isScalar;exports2.isSeq=identity.isSeq;exports2.Pair=Pair.Pair;exports2.Scalar=Scalar.Scalar;exports2.YAMLMap=YAMLMap.YAMLMap;exports2.YAMLSeq=YAMLSeq.YAMLSeq;exports2.CST=cst;exports2.Lexer=lexer.Lexer;exports2.LineCounter=lineCounter.LineCounter;exports2.Parser=parser.Parser;exports2.parse=publicApi.parse;exports2.parseAllDocuments=publicApi.parseAllDocuments;exports2.parseDocument=publicApi.parseDocument;exports2.stringify=publicApi.stringify;exports2.visit=visit.visit;exports2.visitAsync=visit.visitAsync}});var require_importers=__commonJS({"src/lib/apiClient/importers.js"(exports2,module2){var crypto=require("crypto"),YAML=require_dist(),{check,fail,safeObject,request,resource,redact,pointer,flatten}=require_model(),id=()=>crypto.randomUUID(),pair=(key,value,extra={})=>({key:String(key),value:String(value??""),enabled:!0,...extra});function shellTokens(text){let tokens=[],token="",quote="",started=!1;text=text.replace(/\\\r?\n/g,"");for(let i=0;i<text.length;i++){let char=text[i];if(char==="\\"&"e!=="'"){check(i+1<text.length,"cURL \u8F6C\u4E49\u4E0D\u5B8C\u6574"),token+=text[++i],started=!0;continue}if(quote){char===quote?quote="":token+=char,started=!0;continue}if(char==="'"||char==='"'){quote=char,started=!0;continue}if(/\s/.test(char)){started&&tokens.push(token),token="",started=!1;continue}check(!/[;|<>`]/.test(char)&&!(char==="$"&&text[i+1]==="("),"\u4EC5\u5141\u8BB8\u5355\u6761 cURL\uFF0C\u4E0D\u652F\u6301 shell \u547D\u4EE4"),token+=char,started=!0}return check(!quote,"cURL \u5F15\u53F7\u672A\u95ED\u5408"),started&&tokens.push(token),check(tokens.shift()?.toLowerCase()==="curl","\u8BF7\u8F93\u5165\u4EE5 curl \u5F00\u59CB\u7684\u547D\u4EE4"),tokens}function curl(text,warnings){let tokens=shellTokens(text),item={id:id(),name:"\u5BFC\u5165\u7684 cURL",method:"GET",url:"",headers:[],query:[],body:{type:"none"},auth:{type:"none"}},explicitMethod=!1;for(let i=0;i<tokens.length;i++){let flag=tokens[i],attached;if(flag.startsWith("--")&&flag.includes("=")){let index=flag.indexOf("=");attached=flag.slice(index+1),flag=flag.slice(0,index)}else/^-[XHduF].+/.test(flag)&&(attached=flag.slice(2),flag=flag.slice(0,2));let value=()=>{let result=attached??tokens[++i];return check(result!==void 0,`${flag} \u7F3A\u5C11\u53C2\u6570`),result};if(["-X","--request"].includes(flag))item.method=value().toUpperCase(),explicitMethod=!0;else if(["-H","--header"].includes(flag)){let line=value(),colon=line.indexOf(":");check(colon>0,"\u8BF7\u6C42\u5934\u683C\u5F0F\u4E3A Name: Value"),item.headers.push(pair(line.slice(0,colon),line.slice(colon+1).trim()))}else if(["-d","--data","--data-raw","--data-binary","--data-urlencode"].includes(flag)){let data=value();if(explicitMethod||(item.method="POST"),data.startsWith("@")&&flag!=="--data-raw")item.body={type:"binary"},warnings.push("cURL \u6587\u4EF6\u5F15\u7528\u9700\u8981\u91CD\u65B0\u9009\u62E9\u6587\u4EF6");else if(flag==="--data-urlencode"){let index=data.indexOf("=");item.body={type:"form",fields:[...item.body.fields||[],pair(index<0?data:data.slice(0,index),index<0?"":data.slice(index+1))]}}else item.body={type:"text",text:item.body.text?`${item.body.text}&${data}`:data}}else if(["-F","--form"].includes(flag)){let data=value(),index=data.indexOf("=");check(index>0,"\u8868\u5355\u683C\u5F0F\u4E3A key=value");let val=data.slice(index+1);item.body={type:"multipart",fields:[...item.body.fields||[],pair(data.slice(0,index),val.startsWith("@")?"":val,{file:val.startsWith("@")})]},val.startsWith("@")&&warnings.push("multipart \u6587\u4EF6\u9700\u8981\u91CD\u65B0\u9009\u62E9"),explicitMethod||(item.method="POST")}else if(["-u","--user"].includes(flag)){let data=value(),index=data.indexOf(":");item.auth={type:"basic",username:index<0?data:data.slice(0,index),password:index<0?"":data.slice(index+1)}}else if(["-b","--cookie"].includes(flag)){let val=value();val.includes("=")?item.headers.push(pair("Cookie",val)):warnings.push("\u4E0D\u8BFB\u53D6 cURL Cookie \u6587\u4EF6")}else if(flag==="--url")item.url=value();else if(["-I","--head"].includes(flag))item.method="HEAD",explicitMethod=!0;else if(["-k","--insecure"].includes(flag))item.settings={...item.settings,verifyTls:!1},warnings.push("\u6B64\u8BF7\u6C42\u5DF2\u5173\u95ED TLS \u9A8C\u8BC1");else if(["-L","--location"].includes(flag))item.settings={...item.settings,redirects:!0};else if(["--compressed","-s","--silent","-S","--show-error","-v","--verbose"].includes(flag))warnings.push(`\u5FFD\u7565 cURL \u9009\u9879 ${flag}`);else{if(flag.startsWith("-"))throw fail(`\u4E0D\u652F\u6301\u7684 cURL \u9009\u9879: ${flag}`);check(!item.url,"\u4EC5\u652F\u6301\u4E00\u4E2A URL"),item.url=flag}}check(item.url,"cURL \u7F3A\u5C11 URL");let type=item.headers.find(row=>row.key.toLowerCase()==="content-type")?.value||"";return item.body.type==="text"&&type.includes("json")&&(item.body.type="json"),{id:id(),name:"cURL \u5BFC\u5165",variables:[],items:[request(item)]}}function postman(data,warnings){check(data.info?.schema?.includes("/v2.1.0/"),"\u4EC5\u652F\u6301 Postman Collection v2.1");let vars=rows=>(rows||[]).map(row=>pair(row.key,row.value,{secret:row.type==="secret",enabled:!row.disabled})),auth=source=>{if(!source)return{type:"inherit"};let values=Object.fromEntries((source[source.type]||[]).map(row=>[row.key,row.value]));return source.type==="noauth"?{type:"none"}:source.type==="basic"?{type:"basic",username:values.username||"",password:values.password||""}:source.type==="bearer"?{type:"bearer",token:values.token||""}:source.type==="apikey"?{type:"apiKey",key:values.key||"",value:values.value||"",in:values.in||"header"}:(warnings.push(`\u4E0D\u652F\u6301 Postman \u8BA4\u8BC1 ${source.type}`),{type:"none"})},visit=(items,inheritedAuth)=>(items||[]).map(item=>{if(item.event?.length&&warnings.push(`${item.name}: \u811A\u672C\u672A\u5BFC\u5165`),item.variable?.length&&warnings.push(`${item.name}: \u6587\u4EF6\u5939/\u8BF7\u6C42\u5C40\u90E8\u53D8\u91CF\u8BF7\u79FB\u81F3\u96C6\u5408\u6216\u73AF\u5883`),item.response?.length&&warnings.push(`${item.name}: \u5DF2\u4FDD\u5B58\u7684\u54CD\u5E94\u793A\u4F8B\u672A\u5BFC\u5165`),item.item)return{id:id(),name:item.name,type:"folder",items:visit(item.item,item.auth?auth(item.auth):inheritedAuth)};let source=typeof item.request=="string"?{url:item.request}:item.request;check(source,"Postman \u8BF7\u6C42\u7F3A\u5931");let inputUrl=source.url,url=typeof inputUrl=="string"?inputUrl:inputUrl?.raw||"",query=typeof inputUrl=="object"&&inputUrl.query?vars(inputUrl.query):[];query.length&&(url=url.split("?")[0]);let variables=typeof inputUrl=="object"?inputUrl.variable||[]:[];for(let row of variables)url=url.replace(`:${row.key}`,row.value||`{{${row.key}}}`);let body={type:"none"};return source.body?.mode==="raw"?Object.assign(body,{type:source.body.options?.raw?.language==="json"?"json":"text",text:source.body.raw||""}):source.body?.mode==="urlencoded"?Object.assign(body,{type:"form",fields:vars(source.body.urlencoded)}):source.body?.mode==="formdata"?(Object.assign(body,{type:"multipart",fields:(source.body.formdata||[]).map(row=>pair(row.key,row.type==="file"?"":row.value,{file:row.type==="file",enabled:!row.disabled}))}),body.fields.some(row=>row.file)&&warnings.push(`${item.name}: \u6587\u4EF6\u9700\u8981\u91CD\u65B0\u9009\u62E9`)):source.body?.mode==="file"?(body.type="binary",warnings.push(`${item.name}: \u6587\u4EF6\u9700\u8981\u91CD\u65B0\u9009\u62E9`)):source.body?.mode&&warnings.push(`${item.name}: \u4E0D\u652F\u6301 Body ${source.body.mode}`),source.body?.options?.raw?.language&&!["json","text","xml","html"].includes(source.body.options.raw.language)&&warnings.push(`${item.name}: Body \u8BED\u8A00\u5DF2\u4F5C\u4E3A\u7EAF\u6587\u672C\u5BFC\u5165`),source.event?.length&&warnings.push(`${item.name}: \u8BF7\u6C42\u811A\u672C\u672A\u5BFC\u5165`),(source.protocolProfileBehavior||item.protocolProfileBehavior)&&warnings.push(`${item.name}: \u534F\u8BAE\u6269\u5C55\u8BBE\u7F6E\u672A\u5BFC\u5165`),request({id:id(),name:item.name,method:source.method||"GET",url,query,headers:vars(source.header),body,auth:source.auth?auth(source.auth):inheritedAuth})});return data.event?.length&&warnings.push("\u96C6\u5408\u811A\u672C\u672A\u5BFC\u5165"),/\{\{\$/.test(JSON.stringify(data))&&warnings.push("Postman \u52A8\u6001\u53D8\u91CF\u4E0D\u6267\u884C\uFF0C\u8BF7\u66FF\u6362\u4E3A\u73AF\u5883\u53D8\u91CF"),{id:id(),name:data.info.name||"Postman \u5BFC\u5165",variables:vars(data.variable),auth:auth(data.auth),items:visit(data.item,auth(data.auth))}}function openapi(data,warnings){check(/^3\.[01]\./.test(data.openapi||""),"\u4EC5\u652F\u6301 OpenAPI 3.0/3.1");let ref=(value,visited=new Set)=>{if(!value?.$ref)return value||{};if(!value.$ref.startsWith("#/"))return warnings.push(`\u5916\u90E8\u5F15\u7528\u672A\u89E3\u6790: ${value.$ref}`),{};if(visited.has(value.$ref))return warnings.push(`\u5FAA\u73AF\u5F15\u7528\u672A\u5C55\u5F00: ${value.$ref}`),{};visited.add(value.$ref);let found=pointer(data,value.$ref.slice(1));return found||warnings.push(`\u5F15\u7528\u4E0D\u5B58\u5728: ${value.$ref}`),ref(found,visited)},example=(input,seen=new Set,depth=0)=>{if(depth>8||input?.$ref&&seen.has(input.$ref))return null;input?.$ref&&(seen=new Set(seen),seen.add(input.$ref));let schema=ref(input);return schema.example!==void 0?schema.example:schema.default!==void 0?schema.default:schema.enum?.length?schema.enum[0]:schema.type==="object"||schema.properties?Object.fromEntries(Object.entries(schema.properties||{}).map(([key,val])=>[key,example(val,seen,depth+1)])):schema.type==="array"?[example(schema.items,seen,depth+1)]:schema.type==="boolean"?!1:["integer","number"].includes(schema.type)?0:""},folders=new Map,result={id:id(),name:data.info?.title||"OpenAPI \u5BFC\u5165",variables:[],items:[]};for(let[route,pathValue]of Object.entries(data.paths||{})){let pathItem=ref(pathValue);for(let method of["get","post","put","patch","delete","head","options"]){if(!pathItem[method])continue;let op=ref(pathItem[method]),server=(op.servers||pathItem.servers||data.servers||[{url:"{{baseUrl}}"}])[0],base=server.url;for(let[key,val]of Object.entries(server.variables||{}))base=base.replace(`{${key}}`,val.default??`{{${key}}}`);!/^https?:\/\//.test(base)&&!base.startsWith("{{")&&(warnings.push("\u76F8\u5BF9 server URL \u9700\u8981\u8BBE\u7F6E baseUrl"),base=`{{baseUrl}}${base}`);let url=base.replace(/\/$/,"")+route,query=[],headers=[],params=new Map;for(let raw of[...pathItem.parameters||[],...op.parameters||[]]){let p=ref(raw);params.set(`${p.in}:${p.name}`,p)}for(let p of params.values()){let val=p.example??example(p.schema);if(p.style&&!["form","simple"].includes(p.style)&&warnings.push(`${op.operationId||route}: \u53C2\u6570 ${p.name} \u7684 ${p.style} \u5E8F\u5217\u5316\u9700\u624B\u52A8\u914D\u7F6E`),p.in==="path")url=url.replace(`{${p.name}}`,val===""?`{{${p.name}}}`:encodeURIComponent(String(val)));else if(p.in==="query"){val&&typeof val=="object"&&!Array.isArray(val)&&warnings.push(`${route}: \u5BF9\u8C61\u53C2\u6570 ${p.name} \u7684\u5E8F\u5217\u5316\u9700\u624B\u52A8\u786E\u8BA4`);let values=Array.isArray(val)?p.explode===!1?[val.join(",")]:val:[val];for(let v of values)query.push(pair(p.name,typeof v=="object"?JSON.stringify(v):v))}else p.in==="header"?headers.push(pair(p.name,val)):p.in==="cookie"&&warnings.push(`${route}: Cookie \u53C2\u6570\u8BF7\u5728 Cookie \u9762\u677F\u914D\u7F6E`)}let content=ref(op.requestBody).content||{},contentType=Object.keys(content).find(key=>key.includes("json"))||Object.keys(content)[0],body={type:"none"};if(contentType){let media=ref(content[contentType]),val=media.example??Object.values(media.examples||{}).map(ref)[0]?.value??example(media.schema);contentType.includes("json")?body={type:"json",text:JSON.stringify(val,null,2)}:["multipart/form-data","application/x-www-form-urlencoded"].includes(contentType)?(body={type:contentType.startsWith("multipart")?"multipart":"form",fields:Object.entries(val||{}).map(([key,value])=>pair(key,value,{file:ref(media.schema).properties?.[key]?.format==="binary"}))},body.fields.some(row=>row.file)&&warnings.push(`${route}: \u6587\u4EF6\u9700\u8981\u91CD\u65B0\u9009\u62E9`)):body={type:"text",text:typeof val=="string"?val:JSON.stringify(val)},body.type!=="multipart"&&headers.push(pair("Content-Type",contentType)),Object.keys(content).length>1&&warnings.push(`${route}: \u5DF2\u9009\u62E9 ${contentType}\uFF0C\u5176\u4ED6\u6B63\u6587\u7C7B\u578B\u672A\u5BFC\u5165`)}let auth={type:"none"},security=op.security??data.security??[];if(security.length){let names=Object.keys(security[0]),scheme=ref(data.components?.securitySchemes?.[names[0]]);(security.length>1||names.length>1)&&warnings.push(`${route}: \u591A\u79CD\u8BA4\u8BC1\u8981\u6C42\u9700\u624B\u52A8\u786E\u8BA4`),scheme.type==="http"&&scheme.scheme==="basic"?auth={type:"basic",username:"{{username}}",password:"{{password}}"}:scheme.type==="http"&&scheme.scheme==="bearer"||scheme.type==="oauth2"?auth={type:"bearer",token:"{{token}}"}:scheme.type==="apiKey"&&scheme.in!=="cookie"?auth={type:"apiKey",key:scheme.name,in:scheme.in,value:"{{apiKey}}"}:warnings.push(`${route}: \u8BA4\u8BC1 ${scheme.type||names[0]} \u9700\u624B\u52A8\u914D\u7F6E`),scheme.type==="oauth2"&&warnings.push(`${route}: OAuth Token \u9700\u624B\u52A8\u63D0\u4F9B`)}let tag=op.tags?.[0]||"\u9ED8\u8BA4";if(!folders.has(tag)){let folder={id:id(),type:"folder",name:tag,items:[]};folders.set(tag,folder),result.items.push(folder)}folders.get(tag).items.push(request({id:id(),name:op.summary||op.operationId||`${method.toUpperCase()} ${route}`,method:method.toUpperCase(),url,query,headers,body,auth})),(op.callbacks||op.links)&&warnings.push(`${route}: callbacks/links \u672A\u5BFC\u5165`)}}return data.webhooks&&warnings.push("OpenAPI webhooks \u672A\u5BFC\u5165"),result}function preview(format,text){check(typeof text=="string"&&Buffer.byteLength(text)<=20*1024*1024,"\u5BFC\u5165\u5185\u5BB9\u8D85\u8FC7 20 MiB");let warnings=[],value;if(format==="curl")value=curl(text,warnings);else{let data;try{data=YAML.parse(text,{maxAliasCount:30,uniqueKeys:!0})}catch{throw fail("JSON/YAML \u683C\u5F0F\u65E0\u6548")}if(safeObject(data),format==="postman")value=postman(data,warnings);else if(format==="openapi")value=openapi(data,warnings);else if(format==="native")check(data.schemaVersion===1,"\u539F\u751F\u683C\u5F0F\u9700\u8981 schemaVersion: 1"),value={...data,id:id()};else throw fail("\u4E0D\u652F\u6301\u7684\u5BFC\u5165\u683C\u5F0F")}let clean=redact(resource("collections",value));return JSON.stringify(clean)!==JSON.stringify(resource("collections",value))&&warnings.push("\u660E\u6587\u8BA4\u8BC1\u4E0E\u654F\u611F\u5B57\u6BB5\u5DF2\u6E05\u7A7A\uFF0C\u8BF7\u4F7F\u7528\u4F1A\u8BDD Secret \u53D8\u91CF\u91CD\u65B0\u586B\u5199"),{collection:clean,count:flatten(clean.items).length,warnings:[...new Set(warnings)]}}function exportCurl(input){let value=redact(request(input)),quote=text=>"'"+String(text).replace(/'/g,"'\\''")+"'",url=value.url,params=value.query.filter(row=>row.enabled!==!1).map(row=>`${encodeURIComponent(row.key)}=${encodeURIComponent(row.value).replace(/%7B/gi,"{").replace(/%7D/gi,"}")}`).join("&");params&&(url+=(url.includes("?")?"&":"?")+params);let parts=["curl","-X",value.method,quote(url)];for(let row of value.headers.filter(row2=>row2.enabled!==!1))parts.push("-H",quote(`${row.key}: ${row.value}`));if(value.auth.type==="bearer"&&parts.push("-H",quote(`Authorization: Bearer ${value.auth.token||"{{token}}"}`)),value.auth.type==="basic"&&parts.push("-u",quote(`${value.auth.username||"{{username}}"}:${value.auth.password||"{{password}}"}`)),value.auth.type==="apiKey")if(value.auth.in==="query"){let separator=url.includes("?")?"&":"?";parts[3]=quote(`${url}${separator}${encodeURIComponent(value.auth.key)}=${value.auth.value||"{{apiKey}}"}`)}else parts.push("-H",quote(`${value.auth.key}: ${value.auth.value||"{{apiKey}}"}`));if(["json","text","xml"].includes(value.body.type)&&(value.headers.some(row=>row.key.toLowerCase()==="content-type")||parts.push("-H",quote(`Content-Type: ${value.body.type==="json"?"application/json":value.body.type==="xml"?"application/xml":"text/plain"}`)),parts.push("--data-raw",quote(value.body.text||""))),value.body.type==="form")for(let row of(value.body.fields||[]).filter(row2=>row2.enabled!==!1))parts.push("--data-urlencode",quote(`${row.key}=${row.value}`));if(value.body.type==="multipart")for(let row of(value.body.fields||[]).filter(row2=>row2.enabled!==!1))parts.push("-F",quote(`${row.key}=${row.file?"@SELECT_FILE":row.value}`));return value.body.type==="binary"&&parts.push("--data-binary",quote("@SELECT_FILE")),value.settings.verifyTls||parts.push("--insecure"),parts.join(" ")}module2.exports={preview,exportCurl,shellTokens}}});var require_styles=__commonJS({"node_modules/colors/lib/styles.js"(exports2,module2){var styles={};module2.exports=styles;var codes={reset:[0,0],bold:[1,22],dim:[2,22],italic:[3,23],underline:[4,24],inverse:[7,27],hidden:[8,28],strikethrough:[9,29],black:[30,39],red:[31,39],green:[32,39],yellow:[33,39],blue:[34,39],magenta:[35,39],cyan:[36,39],white:[37,39],gray:[90,39],grey:[90,39],brightRed:[91,39],brightGreen:[92,39],brightYellow:[93,39],brightBlue:[94,39],brightMagenta:[95,39],brightCyan:[96,39],brightWhite:[97,39],bgBlack:[40,49],bgRed:[41,49],bgGreen:[42,49],bgYellow:[43,49],bgBlue:[44,49],bgMagenta:[45,49],bgCyan:[46,49],bgWhite:[47,49],bgGray:[100,49],bgGrey:[100,49],bgBrightRed:[101,49],bgBrightGreen:[102,49],bgBrightYellow:[103,49],bgBrightBlue:[104,49],bgBrightMagenta:[105,49],bgBrightCyan:[106,49],bgBrightWhite:[107,49],blackBG:[40,49],redBG:[41,49],greenBG:[42,49],yellowBG:[43,49],blueBG:[44,49],magentaBG:[45,49],cyanBG:[46,49],whiteBG:[47,49]};Object.keys(codes).forEach(function(key){var val=codes[key],style=styles[key]=[];style.open="\x1B["+val[0]+"m",style.close="\x1B["+val[1]+"m"})}});var require_has_flag=__commonJS({"node_modules/colors/lib/system/has-flag.js"(exports2,module2){"use strict";module2.exports=function(flag,argv){argv=argv||process.argv;var terminatorPos=argv.indexOf("--"),prefix=/^-{1,2}/.test(flag)?"":"--",pos=argv.indexOf(prefix+flag);return pos!==-1&&(terminatorPos===-1?!0:pos<terminatorPos)}}});var require_supports_colors=__commonJS({"node_modules/colors/lib/system/supports-colors.js"(exports2,module2){"use strict";var os=require("os"),hasFlag=require_has_flag(),env=process.env,forceColor=void 0;hasFlag("no-color")||hasFlag("no-colors")||hasFlag("color=false")?forceColor=!1:(hasFlag("color")||hasFlag("colors")||hasFlag("color=true")||hasFlag("color=always"))&&(forceColor=!0);"FORCE_COLOR"in env&&(forceColor=env.FORCE_COLOR.length===0||parseInt(env.FORCE_COLOR,10)!==0);function translateLevel(level){return level===0?!1:{level,hasBasic:!0,has256:level>=2,has16m:level>=3}}function supportsColor(stream){if(forceColor===!1)return 0;if(hasFlag("color=16m")||hasFlag("color=full")||hasFlag("color=truecolor"))return 3;if(hasFlag("color=256"))return 2;if(stream&&!stream.isTTY&&forceColor!==!0)return 0;var min=forceColor?1:0;if(process.platform==="win32"){var osRelease=os.release().split(".");return Number(process.versions.node.split(".")[0])>=8&&Number(osRelease[0])>=10&&Number(osRelease[2])>=10586?Number(osRelease[2])>=14931?3:2:1}if("CI"in env)return["TRAVIS","CIRCLECI","APPVEYOR","GITLAB_CI"].some(function(sign){return sign in env})||env.CI_NAME==="codeship"?1:min;if("TEAMCITY_VERSION"in env)return/^(9\.(0*[1-9]\d*)\.|\d{2,}\.)/.test(env.TEAMCITY_VERSION)?1:0;if("TERM_PROGRAM"in env){var version=parseInt((env.TERM_PROGRAM_VERSION||"").split(".")[0],10);switch(env.TERM_PROGRAM){case"iTerm.app":return version>=3?3:2;case"Hyper":return 3;case"Apple_Terminal":return 2}}return/-256(color)?$/i.test(env.TERM)?2:/^screen|^xterm|^vt100|^rxvt|color|ansi|cygwin|linux/i.test(env.TERM)||"COLORTERM"in env?1:(env.TERM==="dumb",min)}function getSupportLevel(stream){var level=supportsColor(stream);return translateLevel(level)}module2.exports={supportsColor:getSupportLevel,stdout:getSupportLevel(process.stdout),stderr:getSupportLevel(process.stderr)}}});var require_trap=__commonJS({"node_modules/colors/lib/custom/trap.js"(exports2,module2){module2.exports=function(text,options){var result="";text=text||"Run the trap, drop the bass",text=text.split("");var trap={a:["@","\u0104","\u023A","\u0245","\u0394","\u039B","\u0414"],b:["\xDF","\u0181","\u0243","\u026E","\u03B2","\u0E3F"],c:["\xA9","\u023B","\u03FE"],d:["\xD0","\u018A","\u0500","\u0501","\u0502","\u0503"],e:["\xCB","\u0115","\u018E","\u0258","\u03A3","\u03BE","\u04BC","\u0A6C"],f:["\u04FA"],g:["\u0262"],h:["\u0126","\u0195","\u04A2","\u04BA","\u04C7","\u050A"],i:["\u0F0F"],j:["\u0134"],k:["\u0138","\u04A0","\u04C3","\u051E"],l:["\u0139"],m:["\u028D","\u04CD","\u04CE","\u0520","\u0521","\u0D69"],n:["\xD1","\u014B","\u019D","\u0376","\u03A0","\u048A"],o:["\xD8","\xF5","\xF8","\u01FE","\u0298","\u047A","\u05DD","\u06DD","\u0E4F"],p:["\u01F7","\u048E"],q:["\u09CD"],r:["\xAE","\u01A6","\u0210","\u024C","\u0280","\u042F"],s:["\xA7","\u03DE","\u03DF","\u03E8"],t:["\u0141","\u0166","\u0373"],u:["\u01B1","\u054D"],v:["\u05D8"],w:["\u0428","\u0460","\u047C","\u0D70"],x:["\u04B2","\u04FE","\u04FC","\u04FD"],y:["\xA5","\u04B0","\u04CB"],z:["\u01B5","\u0240"]};return text.forEach(function(c){c=c.toLowerCase();var chars=trap[c]||[" "],rand=Math.floor(Math.random()*chars.length);typeof trap[c]<"u"?result+=trap[c][rand]:result+=c}),result}}});var require_zalgo=__commonJS({"node_modules/colors/lib/custom/zalgo.js"(exports2,module2){module2.exports=function(text,options){text=text||" he is here ";var soul={up:["\u030D","\u030E","\u0304","\u0305","\u033F","\u0311","\u0306","\u0310","\u0352","\u0357","\u0351","\u0307","\u0308","\u030A","\u0342","\u0313","\u0308","\u034A","\u034B","\u034C","\u0303","\u0302","\u030C","\u0350","\u0300","\u0301","\u030B","\u030F","\u0312","\u0313","\u0314","\u033D","\u0309","\u0363","\u0364","\u0365","\u0366","\u0367","\u0368","\u0369","\u036A","\u036B","\u036C","\u036D","\u036E","\u036F","\u033E","\u035B","\u0346","\u031A"],down:["\u0316","\u0317","\u0318","\u0319","\u031C","\u031D","\u031E","\u031F","\u0320","\u0324","\u0325","\u0326","\u0329","\u032A","\u032B","\u032C","\u032D","\u032E","\u032F","\u0330","\u0331","\u0332","\u0333","\u0339","\u033A","\u033B","\u033C","\u0345","\u0347","\u0348","\u0349","\u034D","\u034E","\u0353","\u0354","\u0355","\u0356","\u0359","\u035A","\u0323"],mid:["\u0315","\u031B","\u0300","\u0301","\u0358","\u0321","\u0322","\u0327","\u0328","\u0334","\u0335","\u0336","\u035C","\u035D","\u035E","\u035F","\u0360","\u0362","\u0338","\u0337","\u0361"," \u0489"]},all=[].concat(soul.up,soul.down,soul.mid);function randomNumber(range){var r=Math.floor(Math.random()*range);return r}function isChar(character){var bool=!1;return all.filter(function(i){bool=i===character}),bool}function heComes(text2,options2){var result="",counts,l;options2=options2||{},options2.up=typeof options2.up<"u"?options2.up:!0,options2.mid=typeof options2.mid<"u"?options2.mid:!0,options2.down=typeof options2.down<"u"?options2.down:!0,options2.size=typeof options2.size<"u"?options2.size:"maxi",text2=text2.split("");for(l in text2)if(!isChar(l)){switch(result=result+text2[l],counts={up:0,down:0,mid:0},options2.size){case"mini":counts.up=randomNumber(8),counts.mid=randomNumber(2),counts.down=randomNumber(8);break;case"maxi":counts.up=randomNumber(16)+3,counts.mid=randomNumber(4)+1,counts.down=randomNumber(64)+3;break;default:counts.up=randomNumber(8)+1,counts.mid=randomNumber(6)/2,counts.down=randomNumber(8)+1;break}var arr=["up","mid","down"];for(var d in arr)for(var index=arr[d],i=0;i<=counts[index];i++)options2[index]&&(result=result+soul[index][randomNumber(soul[index].length)])}return result}return heComes(text,options)}}});var require_america=__commonJS({"node_modules/colors/lib/maps/america.js"(exports2,module2){module2.exports=function(colors){return function(letter,i,exploded){if(letter===" ")return letter;switch(i%3){case 0:return colors.red(letter);case 1:return colors.white(letter);case 2:return colors.blue(letter)}}}}});var require_zebra=__commonJS({"node_modules/colors/lib/maps/zebra.js"(exports2,module2){module2.exports=function(colors){return function(letter,i,exploded){return i%2===0?letter:colors.inverse(letter)}}}});var require_rainbow=__commonJS({"node_modules/colors/lib/maps/rainbow.js"(exports2,module2){module2.exports=function(colors){var rainbowColors=["red","yellow","green","blue","magenta"];return function(letter,i,exploded){return letter===" "?letter:colors[rainbowColors[i++%rainbowColors.length]](letter)}}}});var require_random=__commonJS({"node_modules/colors/lib/maps/random.js"(exports2,module2){module2.exports=function(colors){var available=["underline","inverse","grey","yellow","red","green","blue","white","cyan","magenta","brightYellow","brightRed","brightGreen","brightBlue","brightWhite","brightCyan","brightMagenta"];return function(letter,i,exploded){return letter===" "?letter:colors[available[Math.round(Math.random()*(available.length-2))]](letter)}}}});var require_colors=__commonJS({"node_modules/colors/lib/colors.js"(exports2,module2){var colors={};module2.exports=colors;colors.themes={};var util=require("util"),ansiStyles=colors.styles=require_styles(),defineProps=Object.defineProperties,newLineRegex=new RegExp(/[\r\n]+/g);colors.supportsColor=require_supports_colors().supportsColor;typeof colors.enabled>"u"&&(colors.enabled=colors.supportsColor()!==!1);colors.enable=function(){colors.enabled=!0};colors.disable=function(){colors.enabled=!1};colors.stripColors=colors.strip=function(str){return(""+str).replace(/\x1B\[\d+m/g,"")};var stylize=colors.stylize=function(str,style){if(!colors.enabled)return str+"";var styleMap=ansiStyles[style];return!styleMap&&style in colors?colors[style](str):styleMap.open+str+styleMap.close},matchOperatorsRe=/[|\\{}()[\]^$+*?.]/g,escapeStringRegexp=function(str){if(typeof str!="string")throw new TypeError("Expected a string");return str.replace(matchOperatorsRe,"\\$&")};function build(_styles){var builder=function builder2(){return applyStyle.apply(builder2,arguments)};return builder._styles=_styles,builder.__proto__=proto,builder}var styles=(function(){var ret={};return ansiStyles.grey=ansiStyles.gray,Object.keys(ansiStyles).forEach(function(key){ansiStyles[key].closeRe=new RegExp(escapeStringRegexp(ansiStyles[key].close),"g"),ret[key]={get:function(){return build(this._styles.concat(key))}}}),ret})(),proto=defineProps(function(){},styles);function applyStyle(){var args=Array.prototype.slice.call(arguments),str=args.map(function(arg){return arg!=null&&arg.constructor===String?arg:util.inspect(arg)}).join(" ");if(!colors.enabled||!str)return str;for(var newLinesPresent=str.indexOf(`
|
|
222
|
-
`)!=-1,nestedStyles=this._styles,i=nestedStyles.length;i--;){var code=ansiStyles[nestedStyles[i]];str=code.open+str.replace(code.closeRe,code.open)+code.close,newLinesPresent&&(str=str.replace(newLineRegex,function(match){return code.close+match+code.open}))}return str}colors.setTheme=function(theme){if(typeof theme=="string"){console.log("colors.setTheme now only accepts an object, not a string. If you are trying to set a theme from a file, it is now your (the caller's) responsibility to require the file. The old syntax looked like colors.setTheme(__dirname + '/../themes/generic-logging.js'); The new syntax looks like colors.setTheme(require(__dirname + '/../themes/generic-logging.js'));");return}for(var style in theme)(function(style2){colors[style2]=function(str){if(typeof theme[style2]=="object"){var out=str;for(var i in theme[style2])out=colors[theme[style2][i]](out);return out}return colors[theme[style2]](str)}})(style)};function init(){var ret={};return Object.keys(styles).forEach(function(name){ret[name]={get:function(){return build([name])}}}),ret}var sequencer=function(map2,str){var exploded=str.split("");return exploded=exploded.map(map2),exploded.join("")};colors.trap=require_trap();colors.zalgo=require_zalgo();colors.maps={};colors.maps.america=require_america()(colors);colors.maps.zebra=require_zebra()(colors);colors.maps.rainbow=require_rainbow()(colors);colors.maps.random=require_random()(colors);for(map in colors.maps)(function(map2){colors[map2]=function(str){return sequencer(colors.maps[map2],str)}})(map);var map;defineProps(colors,init())}});var require_safe=__commonJS({"node_modules/colors/safe.js"(exports2,module2){var colors=require_colors();module2.exports=colors}});var require_utils4=__commonJS({"src/lib/utils.js"(exports2,module2){var fs=require("fs"),colors=require_safe(),path=require("path"),os=require("os"),net=require("net"),{spawnSync,spawn,execFile}=require("child_process"),getLogger=function(logFileDirPath){let options={flags:"a",encoding:"utf8"},output=fs.createWriteStream(path.resolve(logFileDirPath||path.resolve(process.cwd()),"./stdout.log"),options),errorOutput=fs.createWriteStream(path.resolve(logFileDirPath||path.resolve(process.cwd()),"./stderr.log"),options),logger2=new console.Console(output,errorOutput);return{log:(...args)=>logger2.log.call(null,`[${dateFormat("YYYY-mm-dd HH:MM:SS:fff")}] - `,...args),error:(...args)=>logger2.error.call(null,`[${dateFormat("YYYY-mm-dd HH:MM:SS:fff")}] - `,...args)}};function dateFormat(fmt,date=new Date){let ret,opt={"Y+":date.getFullYear().toString(),"m+":(date.getMonth()+1).toString(),"d+":date.getDate().toString(),"H+":date.getHours().toString(),"M+":date.getMinutes().toString(),"S+":date.getSeconds().toString(),"f+":date.getMilliseconds().toString()};for(let k in opt)ret=new RegExp("("+k+")").exec(fmt),ret&&(fmt=fmt.replace(ret[1],ret[1].length===1?opt[k]:opt[k].padStart(ret[1].length,"0")));return fmt}function logger(isSilent=!1){let logObj=null;return isSilent?logObj={info:function(){},assert:function(){}}:logObj={info:console.log,assert:console.assert},logObj}function parseAttribHidden(stdout){let line=String(stdout||"").split(/\r?\n/)[0]||"",pathStart=line.search(/[A-Za-z]:[\\/]|\\\\/);return(pathStart===-1?line:line.slice(0,pathStart)).toUpperCase().includes("H")}function isWindowsHiddenByAttrib(filePath){let result;try{result=spawnSync("attrib",[filePath],{encoding:"utf8",windowsHide:!0,timeout:5e3})}catch{return!1}return result.error||result.status!==0?!1:parseAttribHidden(result.stdout)}var WINDOWS_ATTRIB_CACHE_TTL=5e3,windowsAttribCache=new Map,windowsAttribInFlight=new Map;function isWindowsHiddenByAttribAsync(filePath,options){let cache=options.cache!==!1;if(cache){let cached=windowsAttribCache.get(filePath);if(cached&&cached.expires>Date.now())return Promise.resolve(cached.hidden);let inFlight=windowsAttribInFlight.get(filePath);if(inFlight)return inFlight}let execFileFn=options.attribExecFile||execFile,promise=new Promise(resolve=>{execFileFn("attrib",[filePath],{encoding:"utf8",windowsHide:!0,timeout:5e3},(error,stdout)=>resolve(!error&&parseAttribHidden(stdout)))}).then(hidden=>(cache&&windowsAttribCache.set(filePath,{hidden,expires:Date.now()+WINDOWS_ATTRIB_CACHE_TTL}),hidden));return promise.finally(()=>{windowsAttribInFlight.delete(filePath)}),cache&&windowsAttribInFlight.set(filePath,promise),promise}function isHiddenByNaming(filePath,platform){let name=path.basename(filePath);return name.startsWith(".")&&name!=="."&&name!==".."?!0:platform!=="win32"&&/(^|[\\/])\.[^\\/.]/.test(filePath)}function isHiddenPath(filePath){return typeof filePath!="string"||!filePath?!1:isHiddenByNaming(filePath,process.platform)?!0:process.platform==="win32"?isWindowsHiddenByAttrib(filePath):!1}var WINDOWS_HIDDEN_BULK_MIN=8,WINDOWS_HIDDEN_CACHE_TTL=5e3,windowsHiddenInFlight=new Map,windowsHiddenCache=new Map;function buildHiddenListingCommand(directory){return`[Console]::OutputEncoding=[System.Text.Encoding]::UTF8;$d='${String(directory).replace(/'/g,"''")}';Get-ChildItem -LiteralPath $d -Force | ForEach-Object { $_.Name + [char]9 + [int](($_.Attributes -band [System.IO.FileAttributes]::Hidden) -ne 0) }`}function parseHiddenListingOutput(output){let hidden=new Set;for(let line of String(output||"").split(/\r?\n/)){if(!line)continue;let separator=line.indexOf(" ");separator<=0||line.slice(separator+1)==="1"&&hidden.add(line.slice(0,separator))}return hidden}function runWindowsHiddenListing(directory,execFileFn){return new Promise((resolve,reject)=>{execFileFn("powershell.exe",["-NoProfile","-NonInteractive","-Command",buildHiddenListingCommand(directory)],{encoding:"utf8",windowsHide:!0,timeout:15e3,maxBuffer:64*1024*1024},(error,stdout)=>error?reject(error):resolve(String(stdout||"")))})}async function getWindowsOsHiddenNames(directory,options){let cache=options.cache!==!1;if(cache){let cached=windowsHiddenCache.get(directory);if(cached&&cached.expires>Date.now())return cached.names;let inFlight=windowsHiddenInFlight.get(directory);if(inFlight)return inFlight}let execFileFn=options.execFile||execFile,promise=runWindowsHiddenListing(directory,execFileFn).then(output=>{let names=parseHiddenListingOutput(output);return cache&&windowsHiddenCache.set(directory,{names,expires:Date.now()+WINDOWS_HIDDEN_CACHE_TTL}),names}).finally(()=>{windowsHiddenInFlight.delete(directory)});return cache&&windowsHiddenInFlight.set(directory,promise),promise}async function getDirectoryHiddenNames(directory,names,options={}){let platform=options.platform||process.platform,hidden=new Set,candidates=[];for(let name of names){if(typeof name!="string"||!name)continue;let childPath=path.join(directory,name);isHiddenByNaming(childPath,platform)?hidden.add(name):candidates.push({name,childPath})}if(candidates.length===0||platform!=="win32"||options.osHidden===!1)return hidden;if(candidates.length<=WINDOWS_HIDDEN_BULK_MIN)return(await Promise.all(candidates.map(({childPath})=>isWindowsHiddenByAttribAsync(childPath,options)))).forEach((isHidden,index)=>{isHidden&&hidden.add(candidates[index].name)}),hidden;let osHidden;try{osHidden=await getWindowsOsHiddenNames(directory,options)}catch{osHidden=null}return osHidden?(osHidden.forEach(name=>hidden.add(name)),hidden):((await Promise.all(candidates.map(({childPath})=>isWindowsHiddenByAttribAsync(childPath,options)))).forEach((isHidden,index)=>{isHidden&&hidden.add(candidates[index].name)}),hidden)}function openPathInFileManager(fullPath,options={}){let platform=options.platform||process.platform,spawnFn=options.spawn||spawn,command,args;switch(platform){case"darwin":command="open",args=[fullPath];break;case"win32":command="explorer.exe",args=[fullPath];break;case"linux":command="xdg-open",args=[fullPath];break;default:return Promise.resolve({ok:!1,unsupported:!0,error:new Error("Unsupported platform")})}return new Promise(resolve=>{let child=spawnFn(command,args,{detached:!0,stdio:"ignore"}),settled=!1,done=result=>{settled||(settled=!0,resolve(result))};child.once("error",error=>done({ok:!1,unsupported:!1,error})),child.once("spawn",()=>{child.unref(),done({ok:!0,command,args})})})}var SupportMethods=["GET","POST","PUT","DELETE","HEAD","PATCH","OPTIONS","COPY","LINK","UNLINK","PURGE"],DefaultHeaders="Authorization,Content-Type,Accept,Origin,User-Agent,DNT,Cache-Control,X-Mx-ReqToken,X-Data-Type,X-Requested-With,X-Data-Type,X-Auth-Token,Token",isValidMethod=function(m){return SupportMethods.includes(String(m).toLocaleUpperCase())},getFileLatestContent=function(filePath){try{return delete require.cache[require.resolve(filePath)],require(path.resolve(process.cwd(),filePath))}catch(error){return console.error(colors.red("[error]:"),error),"getFileLatestContent_ERROR"}},filePath2ApiUrl=function(filePath){return filePath.split(path.sep).join("/")},getDataType=function(data){return Object.prototype.toString.call(data).slice(8,-1).toLowerCase()},isEmptyObj=function(obj){return getDataType(obj)==="object"&&Object.keys(obj).length===0},writeStream=function(filePath,data){return new Promise((resolve,reject)=>{let writerStream=fs.createWriteStream(filePath);writerStream.write(data,"utf-8"),writerStream.end(),writerStream.on("finish",()=>{}),writerStream.on("close",()=>{setTimeout(()=>{resolve(data)})}),writerStream.on("error",err=>{getLogger(path.resolve(process.cwd())).error(filePath,require.cache[require.resolve(filePath)],err),reject(err)})})},readStream=function(filePath){let data="";return new Promise((resovle,reject)=>{let readerStream=fs.createReadStream(filePath);readerStream.setEncoding("UTF8"),readerStream.on("data",function(chunk){data+=chunk}),readerStream.on("end",function(){resovle(data)}),readerStream.on("error",function(err){reject(err),console.log(err.stack)})})},debounce=(func,wait)=>{let timeout,canceled=!1,f=function(...args){canceled||(clearTimeout(timeout),timeout=setTimeout(()=>{func.call(this,...args)},wait))};return f.cancel=()=>{clearTimeout(timeout),canceled=!0},f},throttle=(func,wait,immediate)=>{let timeout,canceled=!1,lastCalledTime=0,f=function(...args){if(canceled)return;let now=Date.now(),call=()=>{lastCalledTime=now,func.call(this,...args)};if(lastCalledTime===0){if(immediate)return call();lastCalledTime=now;return}lastCalledTime+wait-now>0?(clearTimeout(timeout),timeout=setTimeout(()=>call(),wait)):call()};return f.cancel=()=>{clearTimeout(timeout),canceled=!0},f};function getServerHost(){return process.env.SERVER_HOST==="0.0.0.0"?"0.0.0.0":"127.0.0.1"}function normalizeRemoteAddress(address){let value=String(address||"").trim().replace(/^\[|\]$/g,"");return value.toLowerCase().startsWith("::ffff:")?value.slice(7):value}function ipToBigInt(address){let version=net.isIP(address);if(version===4)return address.split(".").reduce((value,part)=>(value<<8n)+BigInt(Number(part)),0n);if(version!==6)return null;let[head="",tail=""]=address.toLowerCase().split("::"),headParts=head?head.split(":"):[],tailParts=tail?tail.split(":"):[];return[...headParts,...Array(Math.max(0,8-headParts.length-tailParts.length)).fill("0"),...tailParts].reduce((value,part)=>(value<<16n)+BigInt(parseInt(part||"0",16)),0n)}function parseAllowlistRule(value){let[address,prefixValue]=value.split("/"),normalizedAddress=normalizeRemoteAddress(address),version=net.isIP(normalizedAddress),maxPrefix=version===4?32:128,prefix=prefixValue===void 0?maxPrefix:Number(prefixValue);return!version||!Number.isInteger(prefix)||prefix<0||prefix>maxPrefix?null:{address:normalizedAddress,version,prefix,value:ipToBigInt(normalizedAddress)}}function parseHostAllowlist(filePath){let content=fs.readFileSync(filePath,"utf8"),rules=[];if(content.split(/\r?\n/).forEach((rawLine,index)=>{let line=rawLine.trim();if(!line||line.startsWith("#"))return;let rule=parseAllowlistRule(line);if(!rule)throw new Error(`Invalid IP allowlist rule at line ${index+1}: ${rawLine}`);rules.push(rule)}),rules.length===0)throw new Error("IP allowlist must contain at least one valid IP or CIDR rule");return rules}function isLoopbackAddress(address){let normalized=normalizeRemoteAddress(address);return normalized==="127.0.0.1"||normalized==="::1"}function isAddressAllowed(address,rules=[]){let normalized=normalizeRemoteAddress(address);if(isLoopbackAddress(normalized))return!0;let version=net.isIP(normalized),value=ipToBigInt(normalized);return!version||value===null?!1:rules.some(rule=>{if(rule.version!==version)return!1;let remainingBits=BigInt((rule.version===4?32:128)-rule.prefix);return value>>remainingBits===rule.value>>remainingBits})}function getHostAllowlist(){if(!process.env.HOST_ALLOWLIST)return[];try{return JSON.parse(process.env.HOST_ALLOWLIST).map(rule=>typeof rule=="string"?parseAllowlistRule(rule):rule).filter(Boolean)}catch{return[]}}function hostAllowlistMiddleware(){let rules=getHostAllowlist();return rules.length===0?(req,res,next)=>next():(req,res,next)=>{if(!isAddressAllowed(req.socket&&req.socket.remoteAddress,rules))return res.status(403).send("Access denied by host allowlist");next()}}function getServerUrls(port,pathname=""){let normalizedPath=pathname&&pathname!=="/"?pathname:"",urls=[`http://localhost:${port}${normalizedPath}`,`http://127.0.0.1:${port}${normalizedPath}`];if(getServerHost()!=="0.0.0.0"||getHostAllowlist().length>0)return urls;let addresses=new Set(urls);return Object.values(os.networkInterfaces()).forEach(networkInterface=>{(networkInterface||[]).forEach(details=>{details.family==="IPv4"&&!details.internal&&addresses.add(`http://${details.address}:${port}${normalizedPath}`)})}),Array.from(addresses)}module2.exports={getLogger,dateFormat,logger,SupportMethods,DefaultHeaders,isValidMethod,getFileLatestContent,filePath2ApiUrl,getDataType,isEmptyObj,writeStream,readStream,debounce,throttle,getServerHost,getServerUrls,normalizeRemoteAddress,parseHostAllowlist,isAddressAllowed,getHostAllowlist,hostAllowlistMiddleware,isHiddenPath,getDirectoryHiddenNames,openPathInFileManager}}});var require_server=__commonJS({"src/lib/apiClient/server.js"(exports2,module2){var express=require_express2(),http=require("http"),fs=require("fs"),path=require("path"),os=require("os"),crypto=require("crypto"),{pipeline}=require("stream/promises"),{Transform}=require("stream"),{CookieJar}=require_cookie3(),{Workspace}=require_store2(),{Engine}=require_engine(),{preview,exportCurl}=require_importers(),{LIMITS,fail,check,safeObject}=require_model(),{getServerHost,hostAllowlistMiddleware,getServerUrls,openPathInFileManager}=require_utils4(),API="/__api-client/api",route=handler=>(req,res,next)=>Promise.resolve().then(()=>handler(req,res)).catch(next);function createClientServer(options={}){let app=express(),workspace=new Workspace(options.root||process.env.API_CLIENT_DIRECTORY||".mock-service-client"),password=options.password??process.env.API_CLIENT_AUTH??"",host=options.host||getServerHost(),engine=new Engine,sessions=new Map,attempts=new Map,cookieName=`msc_${crypto.randomBytes(8).toString("hex")}`,assets=fs.existsSync(path.join(__dirname,"api-client"))?path.join(__dirname,"api-client"):path.join(__dirname,"browser"),addresses=new Set(["localhost","127.0.0.1"]);if(host==="0.0.0.0")for(let list of Object.values(os.networkInterfaces()))for(let info of list||[])info.family==="IPv4"&&addresses.add(info.address);let server=http.createServer(app);server.requestTimeout=6e4,server.headersTimeout=1e4;function newSession(res){if(sessions.size>=100)throw fail("\u4F1A\u8BDD\u6570\u91CF\u5DF2\u8FBE\u4E0A\u9650",429);let session={id:crypto.randomBytes(32).toString("hex"),token:crypto.randomBytes(32).toString("hex"),jar:new CookieJar,time:Date.now()};return sessions.set(session.id,session),res.set("Set-Cookie",`${cookieName}=${session.id}; HttpOnly; SameSite=Strict; Path=/`),session}app.disable("x-powered-by"),app.use(hostAllowlistMiddleware()),app.use((req,res,next)=>{let incoming;try{incoming=new URL(`http://${req.headers.host}`)}catch{return res.status(403).json({error:"Host \u65E0\u6548"})}if(!addresses.has(incoming.hostname)||Number(incoming.port||80)!==server.address()?.port||req.headers.host!==incoming.host)return res.status(403).json({error:"Host \u4E0D\u53D7\u4FE1\u4EFB"});if(req.headers.origin&&req.headers.origin!==incoming.origin||req.headers["sec-fetch-site"]==="cross-site")return res.status(403).json({error:"\u4E0D\u5141\u8BB8\u8DE8\u7AD9\u8BBF\u95EE"});res.set({"Cache-Control":"no-store","X-Content-Type-Options":"nosniff","Referrer-Policy":"no-referrer","X-Frame-Options":"DENY","Content-Security-Policy":"default-src 'self'; script-src 'self'; style-src 'self' 'unsafe-inline'; img-src 'self' data:; connect-src 'self'; worker-src 'self'; frame-ancestors 'none'; object-src 'none'; base-uri 'none'; form-action 'self'"});let sessionId=(req.headers.cookie||"").split(";").map(part=>part.trim()).find(part=>part.startsWith(`${cookieName}=`))?.slice(cookieName.length+1);req.clientSession=sessions.get(sessionId),req.clientSession&&(req.clientSession.time=Date.now()),next()}),app.get("/login",(req,res)=>res.sendFile(path.join(assets,"login.html"))),app.get("/login.js",(req,res)=>res.sendFile(path.join(assets,"login.js"))),app.get("/client.css",(req,res)=>res.sendFile(path.join(assets,"client.css"))),app.post(`${API}/session`,express.json({limit:"16kb"}),route((req,res)=>{check(req.headers.origin===`http://${req.headers.host}`,"\u767B\u5F55\u9700\u8981\u540C\u6E90 Origin");let remote=req.socket.remoteAddress,now=Date.now(),attempt=attempts.get(remote)||{time:now,count:0};if(now-attempt.time>6e4&&(attempt.time=now,attempt.count=0),++attempt.count>10)throw fail("\u5C1D\u8BD5\u8FC7\u4E8E\u9891\u7E41\uFF0C\u8BF7\u7A0D\u540E\u518D\u8BD5",429);(attempts.size<1e3||attempts.has(remote))&&attempts.set(remote,attempt);let supplied=Buffer.from(String(req.body.password||"")),expected=Buffer.from(password);if(password&&(supplied.length!==expected.length||!crypto.timingSafeEqual(supplied,expected)))throw fail("\u5BC6\u7801\u9519\u8BEF",401);let session=req.clientSession||newSession(res);attempts.delete(remote),res.json({token:session.token})})),app.get("/",route((req,res)=>{if(!req.clientSession&&password)return res.redirect("/login");req.clientSession||newSession(res),res.sendFile(path.join(assets,"index.html"))})),app.use((req,res,next)=>{if(!req.clientSession)return res.status(401).json({error:"\u8BF7\u5148\u767B\u5F55\u5DE5\u4F5C\u53F0"});next()}),app.get(`${API}/config`,(req,res)=>res.json({schemaVersion:1,workspaceId:workspace.id,workspaceName:path.basename(workspace.root),token:req.clientSession.token,limits:LIMITS,authEnabled:!!password})),app.get("/client.js",(req,res)=>res.sendFile(path.join(assets,"client.js"))),app.get("/worker.js",(req,res)=>res.sendFile(path.join(assets,"worker.js"))),app.get("/editor.js",(req,res)=>{let file=path.join(assets,"editor.js"),bundled=path.resolve(__dirname,"../../../dist/api-client/editor.js");res.sendFile(fs.existsSync(path.join(assets,"index.html"))&&assets.endsWith("api-client")?file:bundled)}),app.use(API,(req,res,next)=>{if(req.get("X-Api-Client-Token")!==req.clientSession.token)return res.status(403).json({error:"\u4F1A\u8BDD\u4EE4\u724C\u65E0\u6548"});next()}),app.post(`${API}/uploads`,route(async(req,res)=>{check(req.is("application/octet-stream"),"\u4E0A\u4F20\u9700\u8981 application/octet-stream");let file=await engine.files.create(req.clientSession.id);file.upload=!0,file.name=String(req.get("X-File-Name")||"file").slice(0,200);try{file.name=decodeURIComponent(file.name)}catch{}let size=0,count=new Transform({transform(chunk,encoding,callback){try{size+=chunk.length,check(size<=LIMITS.request,"\u4E0A\u4F20\u8D85\u8FC7 20 MiB"),engine.files.add(file,chunk.length),callback(null,chunk)}catch(error){callback(error)}}});try{await pipeline(req,count,fs.createWriteStream(file.path,{flags:"wx",mode:384})),res.status(201).json({uploadId:file.id,name:file.name,size:file.size})}catch(error){throw await engine.files.remove(file.id),error}})),app.use(API,express.json({limit:"21mb"})),app.use(API,(req,res,next)=>{try{safeObject(req.body),next()}catch(error){next(error)}}),app.delete(`${API}/session`,route(async(req,res)=>{await removeSession(req.clientSession),res.set("Set-Cookie",`${cookieName}=; HttpOnly; SameSite=Strict; Path=/; Max-Age=0`).json({success:!0})}));for(let kind of["collections","environments"])app.get(`${API}/${kind}`,route(async(req,res)=>res.json(await workspace.list(kind)))),app.put(`${API}/${kind}/:id`,route(async(req,res)=>res.json(await workspace.write(kind,req.params.id,req.body,req.get("If-Match"))))),app.delete(`${API}/${kind}/:id`,route(async(req,res)=>res.json(await workspace.write(kind,req.params.id,null,req.get("If-Match"),!0))));app.post(`${API}/imports/preview`,route((req,res)=>res.json(preview(req.body.format,req.body.text)))),app.post(`${API}/exports/curl`,route((req,res)=>res.json({text:exportCurl(req.body)}))),app.post(`${API}/executions`,route((req,res)=>{let job=engine.submit(req.clientSession.id,req.body,req.clientSession.jar);res.status(202).json({executionId:job.id})})),app.get(`${API}/executions/:id`,route((req,res)=>{let after=Number(req.query.after||0);check(Number.isInteger(after)&&after>=0,"\u7ED3\u679C\u504F\u79FB\u65E0\u6548"),res.json(engine.view(engine.get(req.params.id,req.clientSession.id),after))})),app.post(`${API}/executions/:id/cancel`,route((req,res)=>{engine.cancel(engine.get(req.params.id,req.clientSession.id)),res.json({success:!0})})),app.delete(`${API}/executions/:id`,route(async(req,res)=>{await engine.remove(engine.get(req.params.id,req.clientSession.id)),res.json({success:!0})})),app.get(`${API}/executions/:id/report`,route((req,res)=>{let job=engine.get(req.params.id,req.clientSession.id),results=job.results.map(({name,iteration,status,duration,size,error,assertions,extractionErrors})=>({name,iteration,status,duration,size,error,assertions:assertions.map(({name:title,passed})=>({name:title,passed})),extractionErrors}));res.attachment("api-client-report.json").json({schemaVersion:1,state:job.state,progress:job.progress,results})})),app.get(`${API}/downloads/:id`,route((req,res)=>{let file=engine.files.get(req.params.id,req.clientSession.id);check(!file.upload,"\u4E0A\u4F20\u6587\u4EF6\u4E0D\u53EF\u4F5C\u4E3A\u7ED3\u679C\u4E0B\u8F7D"),res.attachment(file.name||"response.bin").type("application/octet-stream").sendFile(file.path)})),app.delete(`${API}/uploads/:id`,route(async(req,res)=>{let file=engine.files.get(req.params.id,req.clientSession.id);check(file.upload,"\u4E0D\u662F\u4E0A\u4F20\u6587\u4EF6"),await engine.files.remove(file.id),res.json({success:!0})})),app.get(`${API}/cookies`,route(async(req,res)=>res.json((await req.clientSession.jar.serialize()).cookies))),app.post(`${API}/cookies`,route(async(req,res)=>{check(typeof req.body.url=="string"&&/^https?:\/\//.test(req.body.url),"Cookie \u9700\u8981 HTTP/HTTPS URL");try{await req.clientSession.jar.setCookie(req.body.cookie,req.body.url)}catch{throw fail("Cookie \u683C\u5F0F\u6216\u76EE\u6807 URL \u65E0\u6548")}res.json({success:!0})})),app.delete(`${API}/cookies`,route(async(req,res)=>{await req.clientSession.jar.removeAllCookies(),res.json({success:!0})})),app.use((req,res)=>res.status(404).json({error:"\u9875\u9762\u6216 API \u4E0D\u5B58\u5728"})),app.use((error,req,res,_next)=>{if(res.headersSent||res.destroyed)return;let status=error.status||(error.code==="ENOENT"?404:500);res.status(status).json({error:status===500?"\u64CD\u4F5C\u5931\u8D25\uFF0C\u8BF7\u68C0\u67E5\u5DE5\u4F5C\u533A\u6743\u9650\u6216\u6587\u4EF6\u683C\u5F0F":error.type==="entity.too.large"?"\u8BF7\u6C42\u5185\u5BB9\u8D85\u8FC7\u9650\u5236":error.message})});async function removeSession(session){sessions.delete(session.id);for(let job of engine.jobs.values())job.owner===session.id&&await engine.remove(job);for(let file of engine.files.files.values())file.owner===session.id&&await engine.files.remove(file.id)}let sessionCleanup=setInterval(()=>{for(let session of sessions.values())Date.now()-session.time>12*36e5&&removeSession(session).catch(()=>{});for(let[key,attempt]of attempts)Date.now()-attempt.time>6e4&&attempts.delete(key)},6e4);return sessionCleanup.unref(),{app,server,engine,workspace,listen(port=0){return new Promise((resolve,reject)=>{server.once("error",reject),server.listen(port,host,()=>{server.removeListener("error",reject),resolve(server.address())})})},async close(){clearInterval(sessionCleanup);let closing=new Promise(resolve=>{if(!server.listening)return resolve();server.close(resolve),server.closeAllConnections?.()});await engine.close(),await closing,sessions.clear()}}}async function openBrowser(url){!(await openPathInFileManager(url)).ok&&!process.env.SILENT&&console.warn(`\u65E0\u6CD5\u81EA\u52A8\u6253\u5F00\u6D4F\u89C8\u5668\uFF0C\u8BF7\u8BBF\u95EE ${url}`)}async function start(){let client=createClientServer();try{let address=await client.listen(Number(process.env.PORT??8090));process.env.SILENT||(console.info("API Client available on:"),getServerUrls(address.port).forEach(url=>console.info(` ${url}`))),process.env.OPEN_API_OVERVIEW&&await openBrowser(`http://127.0.0.1:${address.port}`)}catch(error){throw await client.close(),error}let stopping=!1,stop=()=>{stopping||(stopping=!0,client.close().then(()=>process.exit(0),()=>process.exit(1)))};return process.once("SIGINT",stop),process.once("SIGTERM",stop),client}module2.exports={createClientServer,start}}});var require_apiClientServer=__commonJS({"src/lib/apiClientServer.js"(){require_server().start().catch(error=>{error.code==="EADDRINUSE"?(console.error(`API Client \u542F\u52A8\u5931\u8D25\uFF1A\u7AEF\u53E3 ${error.port} \u5DF2\u88AB\u5360\u7528\uFF08EADDRINUSE\uFF09\u3002`),console.error("\u8BF7\u4F7F\u7528 --api-client --port 0 \u81EA\u52A8\u5206\u914D\u7A7A\u95F2\u7AEF\u53E3\uFF0C\u6216\u901A\u8FC7 --port <\u7AEF\u53E3\u53F7> \u6307\u5B9A\u5176\u4ED6\u7AEF\u53E3\u3002")):error.code==="EACCES"||error.code==="EPERM"?console.error(`API Client \u542F\u52A8\u5931\u8D25\uFF1A\u6743\u9650\u4E0D\u8DB3\uFF08${error.code}\uFF09\uFF0C\u8BF7\u68C0\u67E5\u76D1\u542C\u7AEF\u53E3\u548C\u4E34\u65F6\u76EE\u5F55\u7684\u8BBF\u95EE\u6743\u9650\u3002`):console.error("API Client \u542F\u52A8\u5931\u8D25\uFF0C\u8BF7\u68C0\u67E5\u7AEF\u53E3\u3001\u5DE5\u4F5C\u533A\u548C\u8BA4\u8BC1\u914D\u7F6E"),process.exitCode=1})}});var require_async=__commonJS({"node_modules/async/dist/async.js"(exports2,module2){(function(global2,factory){typeof exports2=="object"&&typeof module2<"u"?factory(exports2):typeof define=="function"&&define.amd?define(["exports"],factory):(global2=typeof globalThis<"u"?globalThis:global2||self,factory(global2.async={}))})(exports2,(function(exports3){"use strict";function apply(fn,...args){return(...callArgs)=>fn(...args,...callArgs)}function initialParams(fn){return function(...args){var callback=args.pop();return fn.call(this,args,callback)}}var hasQueueMicrotask=typeof queueMicrotask=="function"&&queueMicrotask,hasSetImmediate=typeof setImmediate=="function"&&setImmediate,hasNextTick=typeof process=="object"&&typeof process.nextTick=="function";function fallback(fn){setTimeout(fn,0)}function wrap(defer){return(fn,...args)=>defer(()=>fn(...args))}var _defer$1;hasQueueMicrotask?_defer$1=queueMicrotask:hasSetImmediate?_defer$1=setImmediate:hasNextTick?_defer$1=process.nextTick:_defer$1=fallback;var setImmediate$1=wrap(_defer$1);function asyncify(func){return isAsync(func)?function(...args){let callback=args.pop(),promise=func.apply(this,args);return handlePromise(promise,callback)}:initialParams(function(args,callback){var result;try{result=func.apply(this,args)}catch(e){return callback(e)}if(result&&typeof result.then=="function")return handlePromise(result,callback);callback(null,result)})}function handlePromise(promise,callback){return promise.then(value=>{invokeCallback(callback,null,value)},err=>{invokeCallback(callback,err&&(err instanceof Error||err.message)?err:new Error(err))})}function invokeCallback(callback,error,value){try{callback(error,value)}catch(err){setImmediate$1(e=>{throw e},err)}}function isAsync(fn){return fn[Symbol.toStringTag]==="AsyncFunction"}function isAsyncGenerator(fn){return fn[Symbol.toStringTag]==="AsyncGenerator"}function isAsyncIterable(obj){return typeof obj[Symbol.asyncIterator]=="function"}function wrapAsync(asyncFn){if(typeof asyncFn!="function")throw new Error("expected a function");return isAsync(asyncFn)?asyncify(asyncFn):asyncFn}function awaitify(asyncFn,arity){if(arity||(arity=asyncFn.length),!arity)throw new Error("arity is undefined");function awaitable(...args){return typeof args[arity-1]=="function"?asyncFn.apply(this,args):new Promise((resolve,reject2)=>{args[arity-1]=(err,...cbArgs)=>{if(err)return reject2(err);resolve(cbArgs.length>1?cbArgs:cbArgs[0])},asyncFn.apply(this,args)})}return awaitable}function applyEach$1(eachfn){return function(fns,...callArgs){return awaitify(function(callback){var that=this;return eachfn(fns,(fn,cb)=>{wrapAsync(fn).apply(that,callArgs.concat(cb))},callback)})}}function _asyncMap(eachfn,arr,iteratee,callback){arr=arr||[];var results=[],counter=0,_iteratee=wrapAsync(iteratee);return eachfn(arr,(value,_,iterCb)=>{var index2=counter++;_iteratee(value,(err,v)=>{results[index2]=v,iterCb(err)})},err=>{callback(err,results)})}function isArrayLike(value){return value&&typeof value.length=="number"&&value.length>=0&&value.length%1===0}let breakLoop={};function once(fn){function wrapper(...args){if(fn!==null){var callFn=fn;fn=null,callFn.apply(this,args)}}return Object.assign(wrapper,fn),wrapper}function getIterator(coll){return coll[Symbol.iterator]&&coll[Symbol.iterator]()}function createArrayIterator(coll){var i=-1,len=coll.length;return function(){return++i<len?{value:coll[i],key:i}:null}}function createES2015Iterator(iterator){var i=-1;return function(){var item=iterator.next();return item.done?null:(i++,{value:item.value,key:i})}}function createObjectIterator(obj){var okeys=obj?Object.keys(obj):[],i=-1,len=okeys.length;return function next(){var key=okeys[++i];return key==="__proto__"?next():i<len?{value:obj[key],key}:null}}function createIterator(coll){if(isArrayLike(coll))return createArrayIterator(coll);var iterator=getIterator(coll);return iterator?createES2015Iterator(iterator):createObjectIterator(coll)}function onlyOnce(fn){return function(...args){if(fn===null)throw new Error("Callback was already called.");var callFn=fn;fn=null,callFn.apply(this,args)}}function asyncEachOfLimit(generator,limit,iteratee,callback){let done=!1,canceled=!1,awaiting=!1,running=0,idx=0;function replenish(){running>=limit||awaiting||done||(awaiting=!0,generator.next().then(({value,done:iterDone})=>{if(!(canceled||done)){if(awaiting=!1,iterDone){done=!0,running<=0&&callback(null);return}running++,iteratee(value,idx,iterateeCallback),idx++,replenish()}}).catch(handleError))}function iterateeCallback(err,result){if(running-=1,!canceled){if(err)return handleError(err);if(err===!1){done=!0,canceled=!0;return}if(result===breakLoop||done&&running<=0)return done=!0,callback(null);replenish()}}function handleError(err){canceled||(awaiting=!1,done=!0,callback(err))}replenish()}var eachOfLimit$2=limit=>(obj,iteratee,callback)=>{if(callback=once(callback),limit<=0)throw new RangeError("concurrency limit cannot be less than 1");if(!obj)return callback(null);if(isAsyncGenerator(obj))return asyncEachOfLimit(obj,limit,iteratee,callback);if(isAsyncIterable(obj))return asyncEachOfLimit(obj[Symbol.asyncIterator](),limit,iteratee,callback);var nextElem=createIterator(obj),done=!1,canceled=!1,running=0,looping=!1;function iterateeCallback(err,value){if(!canceled)if(running-=1,err)done=!0,callback(err);else if(err===!1)done=!0,canceled=!0;else{if(value===breakLoop||done&&running<=0)return done=!0,callback(null);looping||replenish()}}function replenish(){for(looping=!0;running<limit&&!done;){var elem=nextElem();if(elem===null){done=!0,running<=0&&callback(null);return}running+=1,iteratee(elem.value,elem.key,onlyOnce(iterateeCallback))}looping=!1}replenish()};function eachOfLimit(coll,limit,iteratee,callback){return eachOfLimit$2(limit)(coll,wrapAsync(iteratee),callback)}var eachOfLimit$1=awaitify(eachOfLimit,4);function eachOfArrayLike(coll,iteratee,callback){callback=once(callback);var index2=0,completed=0,{length}=coll,canceled=!1;length===0&&callback(null);function iteratorCallback(err,value){err===!1&&(canceled=!0),canceled!==!0&&(err?callback(err):(++completed===length||value===breakLoop)&&callback(null))}for(;index2<length;index2++)iteratee(coll[index2],index2,onlyOnce(iteratorCallback))}function eachOfGeneric(coll,iteratee,callback){return eachOfLimit$1(coll,1/0,iteratee,callback)}function eachOf(coll,iteratee,callback){var eachOfImplementation=isArrayLike(coll)?eachOfArrayLike:eachOfGeneric;return eachOfImplementation(coll,wrapAsync(iteratee),callback)}var eachOf$1=awaitify(eachOf,3);function map(coll,iteratee,callback){return _asyncMap(eachOf$1,coll,iteratee,callback)}var map$1=awaitify(map,3),applyEach=applyEach$1(map$1);function eachOfSeries(coll,iteratee,callback){return eachOfLimit$1(coll,1,iteratee,callback)}var eachOfSeries$1=awaitify(eachOfSeries,3);function mapSeries(coll,iteratee,callback){return _asyncMap(eachOfSeries$1,coll,iteratee,callback)}var mapSeries$1=awaitify(mapSeries,3),applyEachSeries=applyEach$1(mapSeries$1);let PROMISE_SYMBOL=Symbol("promiseCallback");function promiseCallback(){let resolve,reject2;function callback(err,...args){if(err)return reject2(err);resolve(args.length>1?args:args[0])}return callback[PROMISE_SYMBOL]=new Promise((res,rej)=>{resolve=res,reject2=rej}),callback}function auto(tasks,concurrency,callback){typeof concurrency!="number"&&(callback=concurrency,concurrency=null),callback=once(callback||promiseCallback());var numTasks=Object.keys(tasks).length;if(!numTasks)return callback(null);concurrency||(concurrency=numTasks);var results={},runningTasks=0,canceled=!1,hasError=!1,listeners=Object.create(null),readyTasks=[],readyToCheck=[],uncheckedDependencies={};Object.keys(tasks).forEach(key=>{var task=tasks[key];if(!Array.isArray(task)){enqueueTask(key,[task]),readyToCheck.push(key);return}var dependencies=task.slice(0,task.length-1),remainingDependencies=dependencies.length;if(remainingDependencies===0){enqueueTask(key,task),readyToCheck.push(key);return}uncheckedDependencies[key]=remainingDependencies,dependencies.forEach(dependencyName=>{if(!tasks[dependencyName])throw new Error("async.auto task `"+key+"` has a non-existent dependency `"+dependencyName+"` in "+dependencies.join(", "));addListener(dependencyName,()=>{remainingDependencies--,remainingDependencies===0&&enqueueTask(key,task)})})}),checkForDeadlocks(),processQueue();function enqueueTask(key,task){readyTasks.push(()=>runTask(key,task))}function processQueue(){if(!canceled){if(readyTasks.length===0&&runningTasks===0)return callback(null,results);for(;readyTasks.length&&runningTasks<concurrency;){var run=readyTasks.shift();run()}}}function addListener(taskName,fn){var taskListeners=listeners[taskName];taskListeners||(taskListeners=listeners[taskName]=[]),taskListeners.push(fn)}function taskComplete(taskName){var taskListeners=listeners[taskName]||[];taskListeners.forEach(fn=>fn()),processQueue()}function runTask(key,task){if(!hasError){var taskCallback=onlyOnce((err,...result)=>{if(runningTasks--,err===!1){canceled=!0;return}if(result.length<2&&([result]=result),err){var safeResults={};if(Object.keys(results).forEach(rkey=>{safeResults[rkey]=results[rkey]}),safeResults[key]=result,hasError=!0,listeners=Object.create(null),canceled)return;callback(err,safeResults)}else results[key]=result,taskComplete(key)});runningTasks++;var taskFn=wrapAsync(task[task.length-1]);task.length>1?taskFn(results,taskCallback):taskFn(taskCallback)}}function checkForDeadlocks(){for(var currentTask,counter=0;readyToCheck.length;)currentTask=readyToCheck.pop(),counter++,getDependents(currentTask).forEach(dependent=>{--uncheckedDependencies[dependent]===0&&readyToCheck.push(dependent)});if(counter!==numTasks)throw new Error("async.auto cannot execute tasks due to a recursive dependency")}function getDependents(taskName){var result=[];return Object.keys(tasks).forEach(key=>{let task=tasks[key];Array.isArray(task)&&task.indexOf(taskName)>=0&&result.push(key)}),result}return callback[PROMISE_SYMBOL]}var FN_ARGS=/^(?:async\s)?(?:function)?\s*(?:\w+\s*)?\(([^)]+)\)(?:\s*{)/,ARROW_FN_ARGS=/^(?:async\s)?\s*(?:\(\s*)?((?:[^)=\s]\s*)*)(?:\)\s*)?=>/,FN_ARG_SPLIT=/,/,FN_ARG=/(=.+)?(\s*)$/;function stripComments(string){let stripped="",index2=0,endBlockComment=string.indexOf("*/");for(;index2<string.length;)if(string[index2]==="/"&&string[index2+1]==="/"){let endIndex=string.indexOf(`
|
|
221
|
+
`,nl)+1}return{type,offset:this.offset,indent:this.indent,source:this.source}}startBlockValue(parent){switch(this.type){case"alias":case"scalar":case"single-quoted-scalar":case"double-quoted-scalar":return this.flowScalar(this.type);case"block-scalar-header":return{type:"block-scalar",offset:this.offset,indent:this.indent,props:[this.sourceToken],source:""};case"flow-map-start":case"flow-seq-start":return{type:"flow-collection",offset:this.offset,indent:this.indent,start:this.sourceToken,items:[],end:[]};case"seq-item-ind":return{type:"block-seq",offset:this.offset,indent:this.indent,items:[{start:[this.sourceToken]}]};case"explicit-key-ind":{this.onKeyLine=!0;let prev=getPrevProps(parent),start=getFirstKeyStartProps(prev);return start.push(this.sourceToken),{type:"block-map",offset:this.offset,indent:this.indent,items:[{start,explicitKey:!0}]}}case"map-value-ind":{this.onKeyLine=!0;let prev=getPrevProps(parent),start=getFirstKeyStartProps(prev);return{type:"block-map",offset:this.offset,indent:this.indent,items:[{start,key:null,sep:[this.sourceToken]}]}}}return null}atIndentedComment(start,indent){return this.type!=="comment"||this.indent<=indent?!1:start.every(st=>st.type==="newline"||st.type==="space")}*documentEnd(docEnd){this.type!=="doc-mode"&&(docEnd.end?docEnd.end.push(this.sourceToken):docEnd.end=[this.sourceToken],this.type==="newline"&&(yield*this.pop()))}*lineEnd(token){switch(this.type){case"comma":case"doc-start":case"doc-end":case"flow-seq-end":case"flow-map-end":case"map-value-ind":yield*this.pop(),yield*this.step();break;case"newline":this.onKeyLine=!1;default:token.end?token.end.push(this.sourceToken):token.end=[this.sourceToken],this.type==="newline"&&(yield*this.pop())}}};exports2.Parser=Parser}});var require_public_api=__commonJS({"node_modules/yaml/dist/public-api.js"(exports2){"use strict";var composer=require_composer(),Document=require_Document(),errors=require_errors(),log=require_log(),identity=require_identity(),lineCounter=require_line_counter(),parser=require_parser();function parseOptions(options){let prettyErrors=options.prettyErrors!==!1;return{lineCounter:options.lineCounter||prettyErrors&&new lineCounter.LineCounter||null,prettyErrors}}function parseAllDocuments(source,options={}){let{lineCounter:lineCounter2,prettyErrors}=parseOptions(options),parser$1=new parser.Parser(lineCounter2?.addNewLine),composer$1=new composer.Composer(options),docs=Array.from(composer$1.compose(parser$1.parse(source)));if(prettyErrors&&lineCounter2)for(let doc of docs)doc.errors.forEach(errors.prettifyError(source,lineCounter2)),doc.warnings.forEach(errors.prettifyError(source,lineCounter2));return docs.length>0?docs:Object.assign([],{empty:!0},composer$1.streamInfo())}function parseDocument(source,options={}){let{lineCounter:lineCounter2,prettyErrors}=parseOptions(options),parser$1=new parser.Parser(lineCounter2?.addNewLine),composer$1=new composer.Composer(options),doc=null;for(let _doc of composer$1.compose(parser$1.parse(source),!0,source.length))if(!doc)doc=_doc;else if(doc.options.logLevel!=="silent"){doc.errors.push(new errors.YAMLParseError(_doc.range.slice(0,2),"MULTIPLE_DOCS","Source contains multiple documents; please use YAML.parseAllDocuments()"));break}return prettyErrors&&lineCounter2&&(doc.errors.forEach(errors.prettifyError(source,lineCounter2)),doc.warnings.forEach(errors.prettifyError(source,lineCounter2))),doc}function parse(src,reviver,options){let _reviver;typeof reviver=="function"?_reviver=reviver:options===void 0&&reviver&&typeof reviver=="object"&&(options=reviver);let doc=parseDocument(src,options);if(!doc)return null;if(doc.warnings.forEach(warning=>log.warn(doc.options.logLevel,warning)),doc.errors.length>0){if(doc.options.logLevel!=="silent")throw doc.errors[0];doc.errors=[]}return doc.toJS(Object.assign({reviver:_reviver},options))}function stringify(value,replacer,options){let _replacer=null;if(typeof replacer=="function"||Array.isArray(replacer)?_replacer=replacer:options===void 0&&replacer&&(options=replacer),typeof options=="string"&&(options=options.length),typeof options=="number"){let indent=Math.round(options);options=indent<1?void 0:indent>8?{indent:8}:{indent}}if(value===void 0){let{keepUndefined}=options??replacer??{};if(!keepUndefined)return}return identity.isDocument(value)&&!_replacer?value.toString(options):new Document.Document(value,_replacer,options).toString(options)}exports2.parse=parse;exports2.parseAllDocuments=parseAllDocuments;exports2.parseDocument=parseDocument;exports2.stringify=stringify}});var require_dist=__commonJS({"node_modules/yaml/dist/index.js"(exports2){"use strict";var composer=require_composer(),Document=require_Document(),Schema=require_Schema(),errors=require_errors(),Alias=require_Alias(),identity=require_identity(),Pair=require_Pair(),Scalar=require_Scalar(),YAMLMap=require_YAMLMap(),YAMLSeq=require_YAMLSeq(),cst=require_cst(),lexer=require_lexer(),lineCounter=require_line_counter(),parser=require_parser(),publicApi=require_public_api(),visit=require_visit();exports2.Composer=composer.Composer;exports2.Document=Document.Document;exports2.Schema=Schema.Schema;exports2.YAMLError=errors.YAMLError;exports2.YAMLParseError=errors.YAMLParseError;exports2.YAMLWarning=errors.YAMLWarning;exports2.Alias=Alias.Alias;exports2.isAlias=identity.isAlias;exports2.isCollection=identity.isCollection;exports2.isDocument=identity.isDocument;exports2.isMap=identity.isMap;exports2.isNode=identity.isNode;exports2.isPair=identity.isPair;exports2.isScalar=identity.isScalar;exports2.isSeq=identity.isSeq;exports2.Pair=Pair.Pair;exports2.Scalar=Scalar.Scalar;exports2.YAMLMap=YAMLMap.YAMLMap;exports2.YAMLSeq=YAMLSeq.YAMLSeq;exports2.CST=cst;exports2.Lexer=lexer.Lexer;exports2.LineCounter=lineCounter.LineCounter;exports2.Parser=parser.Parser;exports2.parse=publicApi.parse;exports2.parseAllDocuments=publicApi.parseAllDocuments;exports2.parseDocument=publicApi.parseDocument;exports2.stringify=publicApi.stringify;exports2.visit=visit.visit;exports2.visitAsync=visit.visitAsync}});var require_importers=__commonJS({"src/lib/apiClient/importers.js"(exports2,module2){var crypto=require("crypto"),YAML=require_dist(),{isManagedHeader}=require_headers(),{check,fail,safeObject,request,resource,redact,pointer,flatten}=require_model(),id=()=>crypto.randomUUID(),pair=(key,value,extra={})=>({key:String(key),value:String(value??""),enabled:!0,...extra});function shellTokens(text){let tokens=[],token="",quote="",started=!1;text=text.replace(/\\\r?\n/g,"");for(let i=0;i<text.length;i++){let char=text[i];if(char==="\\"&"e!=="'"){check(i+1<text.length,"cURL \u8F6C\u4E49\u4E0D\u5B8C\u6574"),token+=text[++i],started=!0;continue}if(quote){char===quote?quote="":token+=char,started=!0;continue}if(char==="'"||char==='"'){quote=char,started=!0;continue}if(/\s/.test(char)){started&&tokens.push(token),token="",started=!1;continue}check(!/[;|<>`]/.test(char)&&!(char==="$"&&text[i+1]==="("),"\u4EC5\u5141\u8BB8\u5355\u6761 cURL\uFF0C\u4E0D\u652F\u6301 shell \u547D\u4EE4"),token+=char,started=!0}return check(!quote,"cURL \u5F15\u53F7\u672A\u95ED\u5408"),started&&tokens.push(token),check(tokens.shift()?.toLowerCase()==="curl","\u8BF7\u8F93\u5165\u4EE5 curl \u5F00\u59CB\u7684\u547D\u4EE4"),tokens}function curl(text,warnings){let tokens=shellTokens(text),item={id:id(),name:"\u5BFC\u5165\u7684 cURL",method:"GET",url:"",headers:[],query:[],body:{type:"none"},auth:{type:"none"}},explicitMethod=!1;for(let i=0;i<tokens.length;i++){let flag=tokens[i],attached;if(flag.startsWith("--")&&flag.includes("=")){let index=flag.indexOf("=");attached=flag.slice(index+1),flag=flag.slice(0,index)}else/^-[XHduF].+/.test(flag)&&(attached=flag.slice(2),flag=flag.slice(0,2));let value=()=>{let result=attached??tokens[++i];return check(result!==void 0,`${flag} \u7F3A\u5C11\u53C2\u6570`),result};if(["-X","--request"].includes(flag))item.method=value().toUpperCase(),explicitMethod=!0;else if(["-H","--header"].includes(flag)){let line=value(),colon=line.indexOf(":");check(colon>0,"\u8BF7\u6C42\u5934\u683C\u5F0F\u4E3A Name: Value");let key=line.slice(0,colon).trim(),managed=isManagedHeader(key);item.headers.push(pair(key,line.slice(colon+1).trim(),{enabled:!managed})),managed&&warnings.push(`\u8BF7\u6C42\u5934 ${key} \u7531\u5BA2\u6237\u7AEF\u7BA1\u7406\uFF0C\u5DF2\u4FDD\u7559\u4F46\u505C\u7528\uFF0C\u65E0\u9700\u624B\u52A8\u8BBE\u7F6E`)}else if(["-d","--data","--data-raw","--data-binary","--data-urlencode"].includes(flag)){let data=value();if(explicitMethod||(item.method="POST"),data.startsWith("@")&&flag!=="--data-raw")item.body={type:"binary"},warnings.push("cURL \u6587\u4EF6\u5F15\u7528\u9700\u8981\u91CD\u65B0\u9009\u62E9\u6587\u4EF6");else if(flag==="--data-urlencode"){let index=data.indexOf("=");item.body={type:"form",fields:[...item.body.fields||[],pair(index<0?data:data.slice(0,index),index<0?"":data.slice(index+1))]}}else item.body={type:"text",text:item.body.text?`${item.body.text}&${data}`:data}}else if(["-F","--form"].includes(flag)){let data=value(),index=data.indexOf("=");check(index>0,"\u8868\u5355\u683C\u5F0F\u4E3A key=value");let val=data.slice(index+1);item.body={type:"multipart",fields:[...item.body.fields||[],pair(data.slice(0,index),val.startsWith("@")?"":val,{file:val.startsWith("@")})]},val.startsWith("@")&&warnings.push("multipart \u6587\u4EF6\u9700\u8981\u91CD\u65B0\u9009\u62E9"),explicitMethod||(item.method="POST")}else if(["-u","--user"].includes(flag)){let data=value(),index=data.indexOf(":");item.auth={type:"basic",username:index<0?data:data.slice(0,index),password:index<0?"":data.slice(index+1)}}else if(["-b","--cookie"].includes(flag)){let val=value();val.includes("=")?item.headers.push(pair("Cookie",val)):warnings.push("\u4E0D\u8BFB\u53D6 cURL Cookie \u6587\u4EF6")}else if(flag==="--url")item.url=value();else if(["-I","--head"].includes(flag))item.method="HEAD",explicitMethod=!0;else if(["-k","--insecure"].includes(flag))item.settings={...item.settings,verifyTls:!1},warnings.push("\u6B64\u8BF7\u6C42\u5DF2\u5173\u95ED TLS \u9A8C\u8BC1");else if(["-L","--location"].includes(flag))item.settings={...item.settings,redirects:!0};else if(["--compressed","-s","--silent","-S","--show-error","-v","--verbose"].includes(flag))warnings.push(`\u5FFD\u7565 cURL \u9009\u9879 ${flag}`);else{if(flag.startsWith("-"))throw fail(`\u4E0D\u652F\u6301\u7684 cURL \u9009\u9879: ${flag}`);check(!item.url,"\u4EC5\u652F\u6301\u4E00\u4E2A URL"),item.url=flag}}check(item.url,"cURL \u7F3A\u5C11 URL");let type=item.headers.find(row=>row.key.toLowerCase()==="content-type")?.value||"";return item.body.type==="text"&&type.includes("json")&&(item.body.type="json"),{id:id(),name:"cURL \u5BFC\u5165",variables:[],items:[request(item)]}}function postman(data,warnings){check(data.info?.schema?.includes("/v2.1.0/"),"\u4EC5\u652F\u6301 Postman Collection v2.1");let vars=rows=>(rows||[]).map(row=>pair(row.key,row.value,{secret:row.type==="secret",enabled:!row.disabled})),auth=source=>{if(!source)return{type:"inherit"};let values=Object.fromEntries((source[source.type]||[]).map(row=>[row.key,row.value]));return source.type==="noauth"?{type:"none"}:source.type==="basic"?{type:"basic",username:values.username||"",password:values.password||""}:source.type==="bearer"?{type:"bearer",token:values.token||""}:source.type==="apikey"?{type:"apiKey",key:values.key||"",value:values.value||"",in:values.in||"header"}:(warnings.push(`\u4E0D\u652F\u6301 Postman \u8BA4\u8BC1 ${source.type}`),{type:"none"})},visit=(items,inheritedAuth)=>(items||[]).map(item=>{if(item.event?.length&&warnings.push(`${item.name}: \u811A\u672C\u672A\u5BFC\u5165`),item.variable?.length&&warnings.push(`${item.name}: \u6587\u4EF6\u5939/\u8BF7\u6C42\u5C40\u90E8\u53D8\u91CF\u8BF7\u79FB\u81F3\u96C6\u5408\u6216\u73AF\u5883`),item.response?.length&&warnings.push(`${item.name}: \u5DF2\u4FDD\u5B58\u7684\u54CD\u5E94\u793A\u4F8B\u672A\u5BFC\u5165`),item.item)return{id:id(),name:item.name,type:"folder",items:visit(item.item,item.auth?auth(item.auth):inheritedAuth)};let source=typeof item.request=="string"?{url:item.request}:item.request;check(source,"Postman \u8BF7\u6C42\u7F3A\u5931");let inputUrl=source.url,url=typeof inputUrl=="string"?inputUrl:inputUrl?.raw||"",query=typeof inputUrl=="object"&&inputUrl.query?vars(inputUrl.query):[];query.length&&(url=url.split("?")[0]);let variables=typeof inputUrl=="object"?inputUrl.variable||[]:[];for(let row of variables)url=url.replace(`:${row.key}`,row.value||`{{${row.key}}}`);let body={type:"none"};return source.body?.mode==="raw"?Object.assign(body,{type:source.body.options?.raw?.language==="json"?"json":"text",text:source.body.raw||""}):source.body?.mode==="urlencoded"?Object.assign(body,{type:"form",fields:vars(source.body.urlencoded)}):source.body?.mode==="formdata"?(Object.assign(body,{type:"multipart",fields:(source.body.formdata||[]).map(row=>pair(row.key,row.type==="file"?"":row.value,{file:row.type==="file",enabled:!row.disabled}))}),body.fields.some(row=>row.file)&&warnings.push(`${item.name}: \u6587\u4EF6\u9700\u8981\u91CD\u65B0\u9009\u62E9`)):source.body?.mode==="file"?(body.type="binary",warnings.push(`${item.name}: \u6587\u4EF6\u9700\u8981\u91CD\u65B0\u9009\u62E9`)):source.body?.mode&&warnings.push(`${item.name}: \u4E0D\u652F\u6301 Body ${source.body.mode}`),source.body?.options?.raw?.language&&!["json","text","xml","html"].includes(source.body.options.raw.language)&&warnings.push(`${item.name}: Body \u8BED\u8A00\u5DF2\u4F5C\u4E3A\u7EAF\u6587\u672C\u5BFC\u5165`),source.event?.length&&warnings.push(`${item.name}: \u8BF7\u6C42\u811A\u672C\u672A\u5BFC\u5165`),(source.protocolProfileBehavior||item.protocolProfileBehavior)&&warnings.push(`${item.name}: \u534F\u8BAE\u6269\u5C55\u8BBE\u7F6E\u672A\u5BFC\u5165`),request({id:id(),name:item.name,method:source.method||"GET",url,query,headers:vars(source.header),body,auth:source.auth?auth(source.auth):inheritedAuth})});return data.event?.length&&warnings.push("\u96C6\u5408\u811A\u672C\u672A\u5BFC\u5165"),/\{\{\$/.test(JSON.stringify(data))&&warnings.push("Postman \u52A8\u6001\u53D8\u91CF\u4E0D\u6267\u884C\uFF0C\u8BF7\u66FF\u6362\u4E3A\u73AF\u5883\u53D8\u91CF"),{id:id(),name:data.info.name||"Postman \u5BFC\u5165",variables:vars(data.variable),auth:auth(data.auth),items:visit(data.item,auth(data.auth))}}function openapi(data,warnings){check(/^3\.[01]\./.test(data.openapi||""),"\u4EC5\u652F\u6301 OpenAPI 3.0/3.1");let ref=(value,visited=new Set)=>{if(!value?.$ref)return value||{};if(!value.$ref.startsWith("#/"))return warnings.push(`\u5916\u90E8\u5F15\u7528\u672A\u89E3\u6790: ${value.$ref}`),{};if(visited.has(value.$ref))return warnings.push(`\u5FAA\u73AF\u5F15\u7528\u672A\u5C55\u5F00: ${value.$ref}`),{};visited.add(value.$ref);let found=pointer(data,value.$ref.slice(1));return found||warnings.push(`\u5F15\u7528\u4E0D\u5B58\u5728: ${value.$ref}`),ref(found,visited)},example=(input,seen=new Set,depth=0)=>{if(depth>8||input?.$ref&&seen.has(input.$ref))return null;input?.$ref&&(seen=new Set(seen),seen.add(input.$ref));let schema=ref(input);return schema.example!==void 0?schema.example:schema.default!==void 0?schema.default:schema.enum?.length?schema.enum[0]:schema.type==="object"||schema.properties?Object.fromEntries(Object.entries(schema.properties||{}).map(([key,val])=>[key,example(val,seen,depth+1)])):schema.type==="array"?[example(schema.items,seen,depth+1)]:schema.type==="boolean"?!1:["integer","number"].includes(schema.type)?0:""},folders=new Map,result={id:id(),name:data.info?.title||"OpenAPI \u5BFC\u5165",variables:[],items:[]};for(let[route,pathValue]of Object.entries(data.paths||{})){let pathItem=ref(pathValue);for(let method of["get","post","put","patch","delete","head","options"]){if(!pathItem[method])continue;let op=ref(pathItem[method]),server=(op.servers||pathItem.servers||data.servers||[{url:"{{baseUrl}}"}])[0],base=server.url;for(let[key,val]of Object.entries(server.variables||{}))base=base.replace(`{${key}}`,val.default??`{{${key}}}`);!/^https?:\/\//.test(base)&&!base.startsWith("{{")&&(warnings.push("\u76F8\u5BF9 server URL \u9700\u8981\u8BBE\u7F6E baseUrl"),base=`{{baseUrl}}${base}`);let url=base.replace(/\/$/,"")+route,query=[],headers=[],params=new Map;for(let raw of[...pathItem.parameters||[],...op.parameters||[]]){let p=ref(raw);params.set(`${p.in}:${p.name}`,p)}for(let p of params.values()){let val=p.example??example(p.schema);if(p.style&&!["form","simple"].includes(p.style)&&warnings.push(`${op.operationId||route}: \u53C2\u6570 ${p.name} \u7684 ${p.style} \u5E8F\u5217\u5316\u9700\u624B\u52A8\u914D\u7F6E`),p.in==="path")url=url.replace(`{${p.name}}`,val===""?`{{${p.name}}}`:encodeURIComponent(String(val)));else if(p.in==="query"){val&&typeof val=="object"&&!Array.isArray(val)&&warnings.push(`${route}: \u5BF9\u8C61\u53C2\u6570 ${p.name} \u7684\u5E8F\u5217\u5316\u9700\u624B\u52A8\u786E\u8BA4`);let values=Array.isArray(val)?p.explode===!1?[val.join(",")]:val:[val];for(let v of values)query.push(pair(p.name,typeof v=="object"?JSON.stringify(v):v))}else p.in==="header"?headers.push(pair(p.name,val)):p.in==="cookie"&&warnings.push(`${route}: Cookie \u53C2\u6570\u8BF7\u5728 Cookie \u9762\u677F\u914D\u7F6E`)}let content=ref(op.requestBody).content||{},contentType=Object.keys(content).find(key=>key.includes("json"))||Object.keys(content)[0],body={type:"none"};if(contentType){let media=ref(content[contentType]),val=media.example??Object.values(media.examples||{}).map(ref)[0]?.value??example(media.schema);contentType.includes("json")?body={type:"json",text:JSON.stringify(val,null,2)}:["multipart/form-data","application/x-www-form-urlencoded"].includes(contentType)?(body={type:contentType.startsWith("multipart")?"multipart":"form",fields:Object.entries(val||{}).map(([key,value])=>pair(key,value,{file:ref(media.schema).properties?.[key]?.format==="binary"}))},body.fields.some(row=>row.file)&&warnings.push(`${route}: \u6587\u4EF6\u9700\u8981\u91CD\u65B0\u9009\u62E9`)):body={type:"text",text:typeof val=="string"?val:JSON.stringify(val)},body.type!=="multipart"&&headers.push(pair("Content-Type",contentType)),Object.keys(content).length>1&&warnings.push(`${route}: \u5DF2\u9009\u62E9 ${contentType}\uFF0C\u5176\u4ED6\u6B63\u6587\u7C7B\u578B\u672A\u5BFC\u5165`)}let auth={type:"none"},security=op.security??data.security??[];if(security.length){let names=Object.keys(security[0]),scheme=ref(data.components?.securitySchemes?.[names[0]]);(security.length>1||names.length>1)&&warnings.push(`${route}: \u591A\u79CD\u8BA4\u8BC1\u8981\u6C42\u9700\u624B\u52A8\u786E\u8BA4`),scheme.type==="http"&&scheme.scheme==="basic"?auth={type:"basic",username:"{{username}}",password:"{{password}}"}:scheme.type==="http"&&scheme.scheme==="bearer"||scheme.type==="oauth2"?auth={type:"bearer",token:"{{token}}"}:scheme.type==="apiKey"&&scheme.in!=="cookie"?auth={type:"apiKey",key:scheme.name,in:scheme.in,value:"{{apiKey}}"}:warnings.push(`${route}: \u8BA4\u8BC1 ${scheme.type||names[0]} \u9700\u624B\u52A8\u914D\u7F6E`),scheme.type==="oauth2"&&warnings.push(`${route}: OAuth Token \u9700\u624B\u52A8\u63D0\u4F9B`)}let tag=op.tags?.[0]||"\u9ED8\u8BA4";if(!folders.has(tag)){let folder={id:id(),type:"folder",name:tag,items:[]};folders.set(tag,folder),result.items.push(folder)}folders.get(tag).items.push(request({id:id(),name:op.summary||op.operationId||`${method.toUpperCase()} ${route}`,method:method.toUpperCase(),url,query,headers,body,auth})),(op.callbacks||op.links)&&warnings.push(`${route}: callbacks/links \u672A\u5BFC\u5165`)}}return data.webhooks&&warnings.push("OpenAPI webhooks \u672A\u5BFC\u5165"),result}function preview(format,text){check(typeof text=="string"&&Buffer.byteLength(text)<=20*1024*1024,"\u5BFC\u5165\u5185\u5BB9\u8D85\u8FC7 20 MiB");let warnings=[],value;if(format==="curl")value=curl(text,warnings);else{let data;try{data=YAML.parse(text,{maxAliasCount:30,uniqueKeys:!0})}catch{throw fail("JSON/YAML \u683C\u5F0F\u65E0\u6548")}if(safeObject(data),format==="postman")value=postman(data,warnings);else if(format==="openapi")value=openapi(data,warnings);else if(format==="native")check(data.schemaVersion===1,"\u539F\u751F\u683C\u5F0F\u9700\u8981 schemaVersion: 1"),value={...data,id:id()};else throw fail("\u4E0D\u652F\u6301\u7684\u5BFC\u5165\u683C\u5F0F")}let clean=redact(resource("collections",value));return JSON.stringify(clean)!==JSON.stringify(resource("collections",value))&&warnings.push("\u660E\u6587\u8BA4\u8BC1\u4E0E\u654F\u611F\u5B57\u6BB5\u5DF2\u6E05\u7A7A\uFF0C\u8BF7\u4F7F\u7528\u4F1A\u8BDD Secret \u53D8\u91CF\u91CD\u65B0\u586B\u5199"),{collection:clean,count:flatten(clean.items).length,warnings:[...new Set(warnings)]}}function exportCurl(input){let value=redact(request(input)),quote=text=>"'"+String(text).replace(/'/g,"'\\''")+"'",url=value.url,params=value.query.filter(row=>row.enabled!==!1).map(row=>`${encodeURIComponent(row.key)}=${encodeURIComponent(row.value).replace(/%7B/gi,"{").replace(/%7D/gi,"}")}`).join("&");params&&(url+=(url.includes("?")?"&":"?")+params);let parts=["curl","-X",value.method,quote(url)];for(let row of value.headers.filter(row2=>row2.enabled!==!1))parts.push("-H",quote(`${row.key}: ${row.value}`));if(value.auth.type==="bearer"&&parts.push("-H",quote(`Authorization: Bearer ${value.auth.token||"{{token}}"}`)),value.auth.type==="basic"&&parts.push("-u",quote(`${value.auth.username||"{{username}}"}:${value.auth.password||"{{password}}"}`)),value.auth.type==="apiKey")if(value.auth.in==="query"){let separator=url.includes("?")?"&":"?";parts[3]=quote(`${url}${separator}${encodeURIComponent(value.auth.key)}=${value.auth.value||"{{apiKey}}"}`)}else parts.push("-H",quote(`${value.auth.key}: ${value.auth.value||"{{apiKey}}"}`));if(["json","text","xml"].includes(value.body.type)&&(value.headers.some(row=>row.key.toLowerCase()==="content-type")||parts.push("-H",quote(`Content-Type: ${value.body.type==="json"?"application/json":value.body.type==="xml"?"application/xml":"text/plain"}`)),parts.push("--data-raw",quote(value.body.text||""))),value.body.type==="form")for(let row of(value.body.fields||[]).filter(row2=>row2.enabled!==!1))parts.push("--data-urlencode",quote(`${row.key}=${row.value}`));if(value.body.type==="multipart")for(let row of(value.body.fields||[]).filter(row2=>row2.enabled!==!1))parts.push("-F",quote(`${row.key}=${row.file?"@SELECT_FILE":row.value}`));return value.body.type==="binary"&&parts.push("--data-binary",quote("@SELECT_FILE")),value.settings.verifyTls||parts.push("--insecure"),parts.join(" ")}module2.exports={preview,exportCurl,shellTokens}}});var require_styles=__commonJS({"node_modules/colors/lib/styles.js"(exports2,module2){var styles={};module2.exports=styles;var codes={reset:[0,0],bold:[1,22],dim:[2,22],italic:[3,23],underline:[4,24],inverse:[7,27],hidden:[8,28],strikethrough:[9,29],black:[30,39],red:[31,39],green:[32,39],yellow:[33,39],blue:[34,39],magenta:[35,39],cyan:[36,39],white:[37,39],gray:[90,39],grey:[90,39],brightRed:[91,39],brightGreen:[92,39],brightYellow:[93,39],brightBlue:[94,39],brightMagenta:[95,39],brightCyan:[96,39],brightWhite:[97,39],bgBlack:[40,49],bgRed:[41,49],bgGreen:[42,49],bgYellow:[43,49],bgBlue:[44,49],bgMagenta:[45,49],bgCyan:[46,49],bgWhite:[47,49],bgGray:[100,49],bgGrey:[100,49],bgBrightRed:[101,49],bgBrightGreen:[102,49],bgBrightYellow:[103,49],bgBrightBlue:[104,49],bgBrightMagenta:[105,49],bgBrightCyan:[106,49],bgBrightWhite:[107,49],blackBG:[40,49],redBG:[41,49],greenBG:[42,49],yellowBG:[43,49],blueBG:[44,49],magentaBG:[45,49],cyanBG:[46,49],whiteBG:[47,49]};Object.keys(codes).forEach(function(key){var val=codes[key],style=styles[key]=[];style.open="\x1B["+val[0]+"m",style.close="\x1B["+val[1]+"m"})}});var require_has_flag=__commonJS({"node_modules/colors/lib/system/has-flag.js"(exports2,module2){"use strict";module2.exports=function(flag,argv){argv=argv||process.argv;var terminatorPos=argv.indexOf("--"),prefix=/^-{1,2}/.test(flag)?"":"--",pos=argv.indexOf(prefix+flag);return pos!==-1&&(terminatorPos===-1?!0:pos<terminatorPos)}}});var require_supports_colors=__commonJS({"node_modules/colors/lib/system/supports-colors.js"(exports2,module2){"use strict";var os=require("os"),hasFlag=require_has_flag(),env=process.env,forceColor=void 0;hasFlag("no-color")||hasFlag("no-colors")||hasFlag("color=false")?forceColor=!1:(hasFlag("color")||hasFlag("colors")||hasFlag("color=true")||hasFlag("color=always"))&&(forceColor=!0);"FORCE_COLOR"in env&&(forceColor=env.FORCE_COLOR.length===0||parseInt(env.FORCE_COLOR,10)!==0);function translateLevel(level){return level===0?!1:{level,hasBasic:!0,has256:level>=2,has16m:level>=3}}function supportsColor(stream){if(forceColor===!1)return 0;if(hasFlag("color=16m")||hasFlag("color=full")||hasFlag("color=truecolor"))return 3;if(hasFlag("color=256"))return 2;if(stream&&!stream.isTTY&&forceColor!==!0)return 0;var min=forceColor?1:0;if(process.platform==="win32"){var osRelease=os.release().split(".");return Number(process.versions.node.split(".")[0])>=8&&Number(osRelease[0])>=10&&Number(osRelease[2])>=10586?Number(osRelease[2])>=14931?3:2:1}if("CI"in env)return["TRAVIS","CIRCLECI","APPVEYOR","GITLAB_CI"].some(function(sign){return sign in env})||env.CI_NAME==="codeship"?1:min;if("TEAMCITY_VERSION"in env)return/^(9\.(0*[1-9]\d*)\.|\d{2,}\.)/.test(env.TEAMCITY_VERSION)?1:0;if("TERM_PROGRAM"in env){var version=parseInt((env.TERM_PROGRAM_VERSION||"").split(".")[0],10);switch(env.TERM_PROGRAM){case"iTerm.app":return version>=3?3:2;case"Hyper":return 3;case"Apple_Terminal":return 2}}return/-256(color)?$/i.test(env.TERM)?2:/^screen|^xterm|^vt100|^rxvt|color|ansi|cygwin|linux/i.test(env.TERM)||"COLORTERM"in env?1:(env.TERM==="dumb",min)}function getSupportLevel(stream){var level=supportsColor(stream);return translateLevel(level)}module2.exports={supportsColor:getSupportLevel,stdout:getSupportLevel(process.stdout),stderr:getSupportLevel(process.stderr)}}});var require_trap=__commonJS({"node_modules/colors/lib/custom/trap.js"(exports2,module2){module2.exports=function(text,options){var result="";text=text||"Run the trap, drop the bass",text=text.split("");var trap={a:["@","\u0104","\u023A","\u0245","\u0394","\u039B","\u0414"],b:["\xDF","\u0181","\u0243","\u026E","\u03B2","\u0E3F"],c:["\xA9","\u023B","\u03FE"],d:["\xD0","\u018A","\u0500","\u0501","\u0502","\u0503"],e:["\xCB","\u0115","\u018E","\u0258","\u03A3","\u03BE","\u04BC","\u0A6C"],f:["\u04FA"],g:["\u0262"],h:["\u0126","\u0195","\u04A2","\u04BA","\u04C7","\u050A"],i:["\u0F0F"],j:["\u0134"],k:["\u0138","\u04A0","\u04C3","\u051E"],l:["\u0139"],m:["\u028D","\u04CD","\u04CE","\u0520","\u0521","\u0D69"],n:["\xD1","\u014B","\u019D","\u0376","\u03A0","\u048A"],o:["\xD8","\xF5","\xF8","\u01FE","\u0298","\u047A","\u05DD","\u06DD","\u0E4F"],p:["\u01F7","\u048E"],q:["\u09CD"],r:["\xAE","\u01A6","\u0210","\u024C","\u0280","\u042F"],s:["\xA7","\u03DE","\u03DF","\u03E8"],t:["\u0141","\u0166","\u0373"],u:["\u01B1","\u054D"],v:["\u05D8"],w:["\u0428","\u0460","\u047C","\u0D70"],x:["\u04B2","\u04FE","\u04FC","\u04FD"],y:["\xA5","\u04B0","\u04CB"],z:["\u01B5","\u0240"]};return text.forEach(function(c){c=c.toLowerCase();var chars=trap[c]||[" "],rand=Math.floor(Math.random()*chars.length);typeof trap[c]<"u"?result+=trap[c][rand]:result+=c}),result}}});var require_zalgo=__commonJS({"node_modules/colors/lib/custom/zalgo.js"(exports2,module2){module2.exports=function(text,options){text=text||" he is here ";var soul={up:["\u030D","\u030E","\u0304","\u0305","\u033F","\u0311","\u0306","\u0310","\u0352","\u0357","\u0351","\u0307","\u0308","\u030A","\u0342","\u0313","\u0308","\u034A","\u034B","\u034C","\u0303","\u0302","\u030C","\u0350","\u0300","\u0301","\u030B","\u030F","\u0312","\u0313","\u0314","\u033D","\u0309","\u0363","\u0364","\u0365","\u0366","\u0367","\u0368","\u0369","\u036A","\u036B","\u036C","\u036D","\u036E","\u036F","\u033E","\u035B","\u0346","\u031A"],down:["\u0316","\u0317","\u0318","\u0319","\u031C","\u031D","\u031E","\u031F","\u0320","\u0324","\u0325","\u0326","\u0329","\u032A","\u032B","\u032C","\u032D","\u032E","\u032F","\u0330","\u0331","\u0332","\u0333","\u0339","\u033A","\u033B","\u033C","\u0345","\u0347","\u0348","\u0349","\u034D","\u034E","\u0353","\u0354","\u0355","\u0356","\u0359","\u035A","\u0323"],mid:["\u0315","\u031B","\u0300","\u0301","\u0358","\u0321","\u0322","\u0327","\u0328","\u0334","\u0335","\u0336","\u035C","\u035D","\u035E","\u035F","\u0360","\u0362","\u0338","\u0337","\u0361"," \u0489"]},all=[].concat(soul.up,soul.down,soul.mid);function randomNumber(range){var r=Math.floor(Math.random()*range);return r}function isChar(character){var bool=!1;return all.filter(function(i){bool=i===character}),bool}function heComes(text2,options2){var result="",counts,l;options2=options2||{},options2.up=typeof options2.up<"u"?options2.up:!0,options2.mid=typeof options2.mid<"u"?options2.mid:!0,options2.down=typeof options2.down<"u"?options2.down:!0,options2.size=typeof options2.size<"u"?options2.size:"maxi",text2=text2.split("");for(l in text2)if(!isChar(l)){switch(result=result+text2[l],counts={up:0,down:0,mid:0},options2.size){case"mini":counts.up=randomNumber(8),counts.mid=randomNumber(2),counts.down=randomNumber(8);break;case"maxi":counts.up=randomNumber(16)+3,counts.mid=randomNumber(4)+1,counts.down=randomNumber(64)+3;break;default:counts.up=randomNumber(8)+1,counts.mid=randomNumber(6)/2,counts.down=randomNumber(8)+1;break}var arr=["up","mid","down"];for(var d in arr)for(var index=arr[d],i=0;i<=counts[index];i++)options2[index]&&(result=result+soul[index][randomNumber(soul[index].length)])}return result}return heComes(text,options)}}});var require_america=__commonJS({"node_modules/colors/lib/maps/america.js"(exports2,module2){module2.exports=function(colors){return function(letter,i,exploded){if(letter===" ")return letter;switch(i%3){case 0:return colors.red(letter);case 1:return colors.white(letter);case 2:return colors.blue(letter)}}}}});var require_zebra=__commonJS({"node_modules/colors/lib/maps/zebra.js"(exports2,module2){module2.exports=function(colors){return function(letter,i,exploded){return i%2===0?letter:colors.inverse(letter)}}}});var require_rainbow=__commonJS({"node_modules/colors/lib/maps/rainbow.js"(exports2,module2){module2.exports=function(colors){var rainbowColors=["red","yellow","green","blue","magenta"];return function(letter,i,exploded){return letter===" "?letter:colors[rainbowColors[i++%rainbowColors.length]](letter)}}}});var require_random=__commonJS({"node_modules/colors/lib/maps/random.js"(exports2,module2){module2.exports=function(colors){var available=["underline","inverse","grey","yellow","red","green","blue","white","cyan","magenta","brightYellow","brightRed","brightGreen","brightBlue","brightWhite","brightCyan","brightMagenta"];return function(letter,i,exploded){return letter===" "?letter:colors[available[Math.round(Math.random()*(available.length-2))]](letter)}}}});var require_colors=__commonJS({"node_modules/colors/lib/colors.js"(exports2,module2){var colors={};module2.exports=colors;colors.themes={};var util=require("util"),ansiStyles=colors.styles=require_styles(),defineProps=Object.defineProperties,newLineRegex=new RegExp(/[\r\n]+/g);colors.supportsColor=require_supports_colors().supportsColor;typeof colors.enabled>"u"&&(colors.enabled=colors.supportsColor()!==!1);colors.enable=function(){colors.enabled=!0};colors.disable=function(){colors.enabled=!1};colors.stripColors=colors.strip=function(str){return(""+str).replace(/\x1B\[\d+m/g,"")};var stylize=colors.stylize=function(str,style){if(!colors.enabled)return str+"";var styleMap=ansiStyles[style];return!styleMap&&style in colors?colors[style](str):styleMap.open+str+styleMap.close},matchOperatorsRe=/[|\\{}()[\]^$+*?.]/g,escapeStringRegexp=function(str){if(typeof str!="string")throw new TypeError("Expected a string");return str.replace(matchOperatorsRe,"\\$&")};function build(_styles){var builder=function builder2(){return applyStyle.apply(builder2,arguments)};return builder._styles=_styles,builder.__proto__=proto,builder}var styles=(function(){var ret={};return ansiStyles.grey=ansiStyles.gray,Object.keys(ansiStyles).forEach(function(key){ansiStyles[key].closeRe=new RegExp(escapeStringRegexp(ansiStyles[key].close),"g"),ret[key]={get:function(){return build(this._styles.concat(key))}}}),ret})(),proto=defineProps(function(){},styles);function applyStyle(){var args=Array.prototype.slice.call(arguments),str=args.map(function(arg){return arg!=null&&arg.constructor===String?arg:util.inspect(arg)}).join(" ");if(!colors.enabled||!str)return str;for(var newLinesPresent=str.indexOf(`
|
|
222
|
+
`)!=-1,nestedStyles=this._styles,i=nestedStyles.length;i--;){var code=ansiStyles[nestedStyles[i]];str=code.open+str.replace(code.closeRe,code.open)+code.close,newLinesPresent&&(str=str.replace(newLineRegex,function(match){return code.close+match+code.open}))}return str}colors.setTheme=function(theme){if(typeof theme=="string"){console.log("colors.setTheme now only accepts an object, not a string. If you are trying to set a theme from a file, it is now your (the caller's) responsibility to require the file. The old syntax looked like colors.setTheme(__dirname + '/../themes/generic-logging.js'); The new syntax looks like colors.setTheme(require(__dirname + '/../themes/generic-logging.js'));");return}for(var style in theme)(function(style2){colors[style2]=function(str){if(typeof theme[style2]=="object"){var out=str;for(var i in theme[style2])out=colors[theme[style2][i]](out);return out}return colors[theme[style2]](str)}})(style)};function init(){var ret={};return Object.keys(styles).forEach(function(name){ret[name]={get:function(){return build([name])}}}),ret}var sequencer=function(map2,str){var exploded=str.split("");return exploded=exploded.map(map2),exploded.join("")};colors.trap=require_trap();colors.zalgo=require_zalgo();colors.maps={};colors.maps.america=require_america()(colors);colors.maps.zebra=require_zebra()(colors);colors.maps.rainbow=require_rainbow()(colors);colors.maps.random=require_random()(colors);for(map in colors.maps)(function(map2){colors[map2]=function(str){return sequencer(colors.maps[map2],str)}})(map);var map;defineProps(colors,init())}});var require_safe=__commonJS({"node_modules/colors/safe.js"(exports2,module2){var colors=require_colors();module2.exports=colors}});var require_utils4=__commonJS({"src/lib/utils.js"(exports2,module2){var fs=require("fs"),colors=require_safe(),path=require("path"),os=require("os"),net=require("net"),{spawnSync,spawn,execFile}=require("child_process"),getLogger=function(logFileDirPath){let options={flags:"a",encoding:"utf8"},output=fs.createWriteStream(path.resolve(logFileDirPath||path.resolve(process.cwd()),"./stdout.log"),options),errorOutput=fs.createWriteStream(path.resolve(logFileDirPath||path.resolve(process.cwd()),"./stderr.log"),options),logger2=new console.Console(output,errorOutput);return{log:(...args)=>logger2.log.call(null,`[${dateFormat("YYYY-mm-dd HH:MM:SS:fff")}] - `,...args),error:(...args)=>logger2.error.call(null,`[${dateFormat("YYYY-mm-dd HH:MM:SS:fff")}] - `,...args)}};function dateFormat(fmt,date=new Date){let ret,opt={"Y+":date.getFullYear().toString(),"m+":(date.getMonth()+1).toString(),"d+":date.getDate().toString(),"H+":date.getHours().toString(),"M+":date.getMinutes().toString(),"S+":date.getSeconds().toString(),"f+":date.getMilliseconds().toString()};for(let k in opt)ret=new RegExp("("+k+")").exec(fmt),ret&&(fmt=fmt.replace(ret[1],ret[1].length===1?opt[k]:opt[k].padStart(ret[1].length,"0")));return fmt}function logger(isSilent=!1){let logObj=null;return isSilent?logObj={info:function(){},assert:function(){}}:logObj={info:console.log,assert:console.assert},logObj}function parseAttribHidden(stdout){let line=String(stdout||"").split(/\r?\n/)[0]||"",pathStart=line.search(/[A-Za-z]:[\\/]|\\\\/);return(pathStart===-1?line:line.slice(0,pathStart)).toUpperCase().includes("H")}function isWindowsHiddenByAttrib(filePath){let result;try{result=spawnSync("attrib",[filePath],{encoding:"utf8",windowsHide:!0,timeout:5e3})}catch{return!1}return result.error||result.status!==0?!1:parseAttribHidden(result.stdout)}var WINDOWS_ATTRIB_CACHE_TTL=5e3,windowsAttribCache=new Map,windowsAttribInFlight=new Map;function isWindowsHiddenByAttribAsync(filePath,options){let cache=options.cache!==!1;if(cache){let cached=windowsAttribCache.get(filePath);if(cached&&cached.expires>Date.now())return Promise.resolve(cached.hidden);let inFlight=windowsAttribInFlight.get(filePath);if(inFlight)return inFlight}let execFileFn=options.attribExecFile||execFile,promise=new Promise(resolve=>{execFileFn("attrib",[filePath],{encoding:"utf8",windowsHide:!0,timeout:5e3},(error,stdout)=>resolve(!error&&parseAttribHidden(stdout)))}).then(hidden=>(cache&&windowsAttribCache.set(filePath,{hidden,expires:Date.now()+WINDOWS_ATTRIB_CACHE_TTL}),hidden));return promise.finally(()=>{windowsAttribInFlight.delete(filePath)}),cache&&windowsAttribInFlight.set(filePath,promise),promise}function isHiddenByNaming(filePath,platform){let name=path.basename(filePath);return name.startsWith(".")&&name!=="."&&name!==".."?!0:platform!=="win32"&&/(^|[\\/])\.[^\\/.]/.test(filePath)}function isHiddenPath(filePath){return typeof filePath!="string"||!filePath?!1:isHiddenByNaming(filePath,process.platform)?!0:process.platform==="win32"?isWindowsHiddenByAttrib(filePath):!1}var WINDOWS_HIDDEN_BULK_MIN=8,WINDOWS_HIDDEN_CACHE_TTL=5e3,windowsHiddenInFlight=new Map,windowsHiddenCache=new Map;function buildHiddenListingCommand(directory){return`[Console]::OutputEncoding=[System.Text.Encoding]::UTF8;$d='${String(directory).replace(/'/g,"''")}';Get-ChildItem -LiteralPath $d -Force | ForEach-Object { $_.Name + [char]9 + [int](($_.Attributes -band [System.IO.FileAttributes]::Hidden) -ne 0) }`}function parseHiddenListingOutput(output){let hidden=new Set;for(let line of String(output||"").split(/\r?\n/)){if(!line)continue;let separator=line.indexOf(" ");separator<=0||line.slice(separator+1)==="1"&&hidden.add(line.slice(0,separator))}return hidden}function runWindowsHiddenListing(directory,execFileFn){return new Promise((resolve,reject)=>{execFileFn("powershell.exe",["-NoProfile","-NonInteractive","-Command",buildHiddenListingCommand(directory)],{encoding:"utf8",windowsHide:!0,timeout:15e3,maxBuffer:64*1024*1024},(error,stdout)=>error?reject(error):resolve(String(stdout||"")))})}async function getWindowsOsHiddenNames(directory,options){let cache=options.cache!==!1;if(cache){let cached=windowsHiddenCache.get(directory);if(cached&&cached.expires>Date.now())return cached.names;let inFlight=windowsHiddenInFlight.get(directory);if(inFlight)return inFlight}let execFileFn=options.execFile||execFile,promise=runWindowsHiddenListing(directory,execFileFn).then(output=>{let names=parseHiddenListingOutput(output);return cache&&windowsHiddenCache.set(directory,{names,expires:Date.now()+WINDOWS_HIDDEN_CACHE_TTL}),names}).finally(()=>{windowsHiddenInFlight.delete(directory)});return cache&&windowsHiddenInFlight.set(directory,promise),promise}async function getDirectoryHiddenNames(directory,names,options={}){let platform=options.platform||process.platform,hidden=new Set,candidates=[];for(let name of names){if(typeof name!="string"||!name)continue;let childPath=path.join(directory,name);isHiddenByNaming(childPath,platform)?hidden.add(name):candidates.push({name,childPath})}if(candidates.length===0||platform!=="win32"||options.osHidden===!1)return hidden;if(candidates.length<=WINDOWS_HIDDEN_BULK_MIN)return(await Promise.all(candidates.map(({childPath})=>isWindowsHiddenByAttribAsync(childPath,options)))).forEach((isHidden,index)=>{isHidden&&hidden.add(candidates[index].name)}),hidden;let osHidden;try{osHidden=await getWindowsOsHiddenNames(directory,options)}catch{osHidden=null}return osHidden?(osHidden.forEach(name=>hidden.add(name)),hidden):((await Promise.all(candidates.map(({childPath})=>isWindowsHiddenByAttribAsync(childPath,options)))).forEach((isHidden,index)=>{isHidden&&hidden.add(candidates[index].name)}),hidden)}function openPathInFileManager(fullPath,options={}){let platform=options.platform||process.platform,spawnFn=options.spawn||spawn,command,args;switch(platform){case"darwin":command="open",args=[fullPath];break;case"win32":command="explorer.exe",args=[fullPath];break;case"linux":command="xdg-open",args=[fullPath];break;default:return Promise.resolve({ok:!1,unsupported:!0,error:new Error("Unsupported platform")})}return new Promise(resolve=>{let child=spawnFn(command,args,{detached:!0,stdio:"ignore"}),settled=!1,done=result=>{settled||(settled=!0,resolve(result))};child.once("error",error=>done({ok:!1,unsupported:!1,error})),child.once("spawn",()=>{child.unref(),done({ok:!0,command,args})})})}var SupportMethods=["GET","POST","PUT","DELETE","HEAD","PATCH","OPTIONS","COPY","LINK","UNLINK","PURGE"],DefaultHeaders="Authorization,Content-Type,Accept,Origin,User-Agent,DNT,Cache-Control,X-Mx-ReqToken,X-Data-Type,X-Requested-With,X-Data-Type,X-Auth-Token,Token",isValidMethod=function(m){return SupportMethods.includes(String(m).toLocaleUpperCase())},getFileLatestContent=function(filePath){try{return delete require.cache[require.resolve(filePath)],require(path.resolve(process.cwd(),filePath))}catch(error){return console.error(colors.red("[error]:"),error),"getFileLatestContent_ERROR"}},filePath2ApiUrl=function(filePath){return filePath.split(path.sep).join("/")},getDataType=function(data){return Object.prototype.toString.call(data).slice(8,-1).toLowerCase()},isEmptyObj=function(obj){return getDataType(obj)==="object"&&Object.keys(obj).length===0},writeStream=function(filePath,data){return new Promise((resolve,reject)=>{let writerStream=fs.createWriteStream(filePath);writerStream.write(data,"utf-8"),writerStream.end(),writerStream.on("finish",()=>{}),writerStream.on("close",()=>{setTimeout(()=>{resolve(data)})}),writerStream.on("error",err=>{getLogger(path.resolve(process.cwd())).error(filePath,require.cache[require.resolve(filePath)],err),reject(err)})})},readStream=function(filePath){let data="";return new Promise((resovle,reject)=>{let readerStream=fs.createReadStream(filePath);readerStream.setEncoding("UTF8"),readerStream.on("data",function(chunk){data+=chunk}),readerStream.on("end",function(){resovle(data)}),readerStream.on("error",function(err){reject(err),console.log(err.stack)})})},debounce=(func,wait)=>{let timeout,canceled=!1,f=function(...args){canceled||(clearTimeout(timeout),timeout=setTimeout(()=>{func.call(this,...args)},wait))};return f.cancel=()=>{clearTimeout(timeout),canceled=!0},f},throttle=(func,wait,immediate)=>{let timeout,canceled=!1,lastCalledTime=0,f=function(...args){if(canceled)return;let now=Date.now(),call=()=>{lastCalledTime=now,func.call(this,...args)};if(lastCalledTime===0){if(immediate)return call();lastCalledTime=now;return}lastCalledTime+wait-now>0?(clearTimeout(timeout),timeout=setTimeout(()=>call(),wait)):call()};return f.cancel=()=>{clearTimeout(timeout),canceled=!0},f};function getServerHost(){return process.env.SERVER_HOST==="0.0.0.0"?"0.0.0.0":"127.0.0.1"}function normalizeRemoteAddress(address){let value=String(address||"").trim().replace(/^\[|\]$/g,"");return value.toLowerCase().startsWith("::ffff:")?value.slice(7):value}function ipToBigInt(address){let version=net.isIP(address);if(version===4)return address.split(".").reduce((value,part)=>(value<<8n)+BigInt(Number(part)),0n);if(version!==6)return null;let[head="",tail=""]=address.toLowerCase().split("::"),headParts=head?head.split(":"):[],tailParts=tail?tail.split(":"):[];return[...headParts,...Array(Math.max(0,8-headParts.length-tailParts.length)).fill("0"),...tailParts].reduce((value,part)=>(value<<16n)+BigInt(parseInt(part||"0",16)),0n)}function parseAllowlistRule(value){let[address,prefixValue]=value.split("/"),normalizedAddress=normalizeRemoteAddress(address),version=net.isIP(normalizedAddress),maxPrefix=version===4?32:128,prefix=prefixValue===void 0?maxPrefix:Number(prefixValue);return!version||!Number.isInteger(prefix)||prefix<0||prefix>maxPrefix?null:{address:normalizedAddress,version,prefix,value:ipToBigInt(normalizedAddress)}}function parseHostAllowlist(filePath){let content=fs.readFileSync(filePath,"utf8"),rules=[];if(content.split(/\r?\n/).forEach((rawLine,index)=>{let line=rawLine.trim();if(!line||line.startsWith("#"))return;let rule=parseAllowlistRule(line);if(!rule)throw new Error(`Invalid IP allowlist rule at line ${index+1}: ${rawLine}`);rules.push(rule)}),rules.length===0)throw new Error("IP allowlist must contain at least one valid IP or CIDR rule");return rules}function isLoopbackAddress(address){let normalized=normalizeRemoteAddress(address);return normalized==="127.0.0.1"||normalized==="::1"}function isAddressAllowed(address,rules=[]){let normalized=normalizeRemoteAddress(address);if(isLoopbackAddress(normalized))return!0;let version=net.isIP(normalized),value=ipToBigInt(normalized);return!version||value===null?!1:rules.some(rule=>{if(rule.version!==version)return!1;let remainingBits=BigInt((rule.version===4?32:128)-rule.prefix);return value>>remainingBits===rule.value>>remainingBits})}function getHostAllowlist(){if(!process.env.HOST_ALLOWLIST)return[];try{return JSON.parse(process.env.HOST_ALLOWLIST).map(rule=>typeof rule=="string"?parseAllowlistRule(rule):rule).filter(Boolean)}catch{return[]}}function hostAllowlistMiddleware(){let rules=getHostAllowlist();return rules.length===0?(req,res,next)=>next():(req,res,next)=>{if(!isAddressAllowed(req.socket&&req.socket.remoteAddress,rules))return res.status(403).send("Access denied by host allowlist");next()}}function getServerUrls(port,pathname=""){let normalizedPath=pathname&&pathname!=="/"?pathname:"",urls=[`http://localhost:${port}${normalizedPath}`,`http://127.0.0.1:${port}${normalizedPath}`];if(getServerHost()!=="0.0.0.0"||getHostAllowlist().length>0)return urls;let addresses=new Set(urls);return Object.values(os.networkInterfaces()).forEach(networkInterface=>{(networkInterface||[]).forEach(details=>{details.family==="IPv4"&&!details.internal&&addresses.add(`http://${details.address}:${port}${normalizedPath}`)})}),Array.from(addresses)}function validateEntryName(name){if(typeof name!="string")return"Name must be a string";let normalizedName=name.trim();if(!normalizedName||normalizedName==="."||normalizedName==="..")return"Invalid name";if(/[/\\\0<>:"|?*]/.test(normalizedName))return"Name contains invalid characters";if(process.platform==="win32"){let upperName=normalizedName.replace(/[. ]+$/g,"").split(".")[0].toUpperCase();if(new Set(["CON","PRN","AUX","NUL","COM1","COM2","COM3","COM4","COM5","COM6","COM7","COM8","COM9","LPT1","LPT2","LPT3","LPT4","LPT5","LPT6","LPT7","LPT8","LPT9"]).has(upperName)||normalizedName.endsWith(" ")||normalizedName.endsWith("."))return"Name is not supported on Windows"}return null}var fatalUtf8Decoder,legacyFileNameDecoder;function decodeFileNameBytes(value){let buffer=Buffer.isBuffer(value)?value:Buffer.from(String(value||""),"latin1");if(!buffer.length)return"";fatalUtf8Decoder||(fatalUtf8Decoder=new TextDecoder("utf-8",{fatal:!0}));try{return fatalUtf8Decoder.decode(buffer)}catch{if(!legacyFileNameDecoder)try{legacyFileNameDecoder=new TextDecoder("gb18030")}catch{legacyFileNameDecoder=new TextDecoder("utf-8")}return legacyFileNameDecoder.decode(buffer)}}function decodeUploadFileName(value){let raw=String(value||"");if(!raw)return raw;for(let index=0;index<raw.length;index++)if(raw.charCodeAt(index)>255)return raw;return decodeFileNameBytes(Buffer.from(raw,"latin1"))}module2.exports={getLogger,dateFormat,logger,SupportMethods,DefaultHeaders,isValidMethod,getFileLatestContent,filePath2ApiUrl,getDataType,isEmptyObj,writeStream,readStream,debounce,throttle,getServerHost,getServerUrls,normalizeRemoteAddress,parseHostAllowlist,isAddressAllowed,getHostAllowlist,hostAllowlistMiddleware,isHiddenPath,getDirectoryHiddenNames,openPathInFileManager,decodeFileNameBytes,decodeUploadFileName,validateEntryName}}});var require_server=__commonJS({"src/lib/apiClient/server.js"(exports2,module2){var express=require_express2(),http=require("http"),fs=require("fs"),path=require("path"),os=require("os"),crypto=require("crypto"),{pipeline}=require("stream/promises"),{Transform}=require("stream"),{CookieJar}=require_cookie3(),{Workspace}=require_store2(),{Engine}=require_engine(),{preview,exportCurl}=require_importers(),{LIMITS,fail,check,safeObject}=require_model(),{getServerHost,hostAllowlistMiddleware,getServerUrls,openPathInFileManager}=require_utils4(),API="/__api-client/api",route=handler=>(req,res,next)=>Promise.resolve().then(()=>handler(req,res)).catch(next);function createClientServer(options={}){let app=express(),workspace=new Workspace(options.root||process.env.API_CLIENT_DIRECTORY||".mock-service-client"),password=options.password??process.env.API_CLIENT_AUTH??"",host=options.host||getServerHost(),engine=new Engine,sessions=new Map,attempts=new Map,cookieName=`msc_${crypto.randomBytes(8).toString("hex")}`,assets=fs.existsSync(path.join(__dirname,"api-client"))?path.join(__dirname,"api-client"):path.join(__dirname,"browser"),addresses=new Set(["localhost","127.0.0.1"]);if(host==="0.0.0.0")for(let list of Object.values(os.networkInterfaces()))for(let info of list||[])info.family==="IPv4"&&addresses.add(info.address);let server=http.createServer(app);server.requestTimeout=6e4,server.headersTimeout=1e4;function newSession(res){if(sessions.size>=100)throw fail("\u4F1A\u8BDD\u6570\u91CF\u5DF2\u8FBE\u4E0A\u9650",429);let session={id:crypto.randomBytes(32).toString("hex"),token:crypto.randomBytes(32).toString("hex"),jar:new CookieJar,time:Date.now()};return sessions.set(session.id,session),res.set("Set-Cookie",`${cookieName}=${session.id}; HttpOnly; SameSite=Strict; Path=/`),session}app.disable("x-powered-by"),app.use(hostAllowlistMiddleware()),app.use((req,res,next)=>{let incoming;try{incoming=new URL(`http://${req.headers.host}`)}catch{return res.status(403).json({error:"Host \u65E0\u6548"})}if(!addresses.has(incoming.hostname)||Number(incoming.port||80)!==server.address()?.port||req.headers.host!==incoming.host)return res.status(403).json({error:"Host \u4E0D\u53D7\u4FE1\u4EFB"});if(req.headers.origin&&req.headers.origin!==incoming.origin||req.headers["sec-fetch-site"]==="cross-site")return res.status(403).json({error:"\u4E0D\u5141\u8BB8\u8DE8\u7AD9\u8BBF\u95EE"});res.set({"Cache-Control":"no-store","X-Content-Type-Options":"nosniff","Referrer-Policy":"no-referrer","X-Frame-Options":"DENY","Content-Security-Policy":"default-src 'self'; script-src 'self'; style-src 'self' 'unsafe-inline'; img-src 'self' data:; connect-src 'self'; worker-src 'self'; frame-ancestors 'none'; object-src 'none'; base-uri 'none'; form-action 'self'"});let sessionId=(req.headers.cookie||"").split(";").map(part=>part.trim()).find(part=>part.startsWith(`${cookieName}=`))?.slice(cookieName.length+1);req.clientSession=sessions.get(sessionId),req.clientSession&&(req.clientSession.time=Date.now()),next()}),app.get("/login",(req,res)=>res.sendFile(path.join(assets,"login.html"))),app.get("/login.js",(req,res)=>res.sendFile(path.join(assets,"login.js"))),app.get("/client.css",(req,res)=>res.sendFile(path.join(assets,"client.css"))),app.post(`${API}/session`,express.json({limit:"16kb"}),route((req,res)=>{check(req.headers.origin===`http://${req.headers.host}`,"\u767B\u5F55\u9700\u8981\u540C\u6E90 Origin");let remote=req.socket.remoteAddress,now=Date.now(),attempt=attempts.get(remote)||{time:now,count:0};if(now-attempt.time>6e4&&(attempt.time=now,attempt.count=0),++attempt.count>10)throw fail("\u5C1D\u8BD5\u8FC7\u4E8E\u9891\u7E41\uFF0C\u8BF7\u7A0D\u540E\u518D\u8BD5",429);(attempts.size<1e3||attempts.has(remote))&&attempts.set(remote,attempt);let supplied=Buffer.from(String(req.body.password||"")),expected=Buffer.from(password);if(password&&(supplied.length!==expected.length||!crypto.timingSafeEqual(supplied,expected)))throw fail("\u5BC6\u7801\u9519\u8BEF",401);let session=req.clientSession||newSession(res);attempts.delete(remote),res.json({token:session.token})})),app.get("/",route((req,res)=>{if(!req.clientSession&&password)return res.redirect("/login");req.clientSession||newSession(res),res.sendFile(path.join(assets,"index.html"))})),app.use((req,res,next)=>{if(!req.clientSession)return res.status(401).json({error:"\u8BF7\u5148\u767B\u5F55\u5DE5\u4F5C\u53F0"});next()}),app.get(`${API}/config`,(req,res)=>res.json({schemaVersion:1,workspaceId:workspace.id,workspaceName:path.basename(workspace.root),token:req.clientSession.token,limits:LIMITS,authEnabled:!!password})),app.get("/client.js",(req,res)=>res.sendFile(path.join(assets,"client.js"))),app.get("/worker.js",(req,res)=>res.sendFile(path.join(assets,"worker.js"))),app.get("/editor.js",(req,res)=>{let file=path.join(assets,"editor.js"),bundled=path.resolve(__dirname,"../../../dist/api-client/editor.js");res.sendFile(fs.existsSync(path.join(assets,"index.html"))&&assets.endsWith("api-client")?file:bundled)}),app.use(API,(req,res,next)=>{if(req.get("X-Api-Client-Token")!==req.clientSession.token)return res.status(403).json({error:"\u4F1A\u8BDD\u4EE4\u724C\u65E0\u6548"});next()}),app.post(`${API}/uploads`,route(async(req,res)=>{check(req.is("application/octet-stream"),"\u4E0A\u4F20\u9700\u8981 application/octet-stream");let file=await engine.files.create(req.clientSession.id);file.upload=!0,file.name=String(req.get("X-File-Name")||"file").slice(0,200);try{file.name=decodeURIComponent(file.name)}catch{}let size=0,count=new Transform({transform(chunk,encoding,callback){try{size+=chunk.length,check(size<=LIMITS.request,"\u4E0A\u4F20\u8D85\u8FC7 20 MiB"),engine.files.add(file,chunk.length),callback(null,chunk)}catch(error){callback(error)}}});try{await pipeline(req,count,fs.createWriteStream(file.path,{flags:"wx",mode:384})),res.status(201).json({uploadId:file.id,name:file.name,size:file.size})}catch(error){throw await engine.files.remove(file.id),error}})),app.use(API,express.json({limit:"21mb"})),app.use(API,(req,res,next)=>{try{safeObject(req.body),next()}catch(error){next(error)}}),app.delete(`${API}/session`,route(async(req,res)=>{await removeSession(req.clientSession),res.set("Set-Cookie",`${cookieName}=; HttpOnly; SameSite=Strict; Path=/; Max-Age=0`).json({success:!0})}));for(let kind of["collections","environments"])app.get(`${API}/${kind}`,route(async(req,res)=>res.json(await workspace.list(kind)))),app.put(`${API}/${kind}/:id`,route(async(req,res)=>res.json(await workspace.write(kind,req.params.id,req.body,req.get("If-Match"))))),app.delete(`${API}/${kind}/:id`,route(async(req,res)=>res.json(await workspace.write(kind,req.params.id,null,req.get("If-Match"),!0))));app.post(`${API}/imports/preview`,route((req,res)=>res.json(preview(req.body.format,req.body.text)))),app.post(`${API}/exports/curl`,route((req,res)=>res.json({text:exportCurl(req.body)}))),app.post(`${API}/executions`,route((req,res)=>{let job=engine.submit(req.clientSession.id,req.body,req.clientSession.jar);res.status(202).json({executionId:job.id})})),app.get(`${API}/executions/:id`,route((req,res)=>{let after=Number(req.query.after||0);check(Number.isInteger(after)&&after>=0,"\u7ED3\u679C\u504F\u79FB\u65E0\u6548"),res.json(engine.view(engine.get(req.params.id,req.clientSession.id),after))})),app.post(`${API}/executions/:id/cancel`,route((req,res)=>{engine.cancel(engine.get(req.params.id,req.clientSession.id)),res.json({success:!0})})),app.delete(`${API}/executions/:id`,route(async(req,res)=>{await engine.remove(engine.get(req.params.id,req.clientSession.id)),res.json({success:!0})})),app.get(`${API}/executions/:id/report`,route((req,res)=>{let job=engine.get(req.params.id,req.clientSession.id),results=job.results.map(({name,iteration,status,duration,size,error,assertions,extractionErrors})=>({name,iteration,status,duration,size,error,assertions:assertions.map(({name:title,passed})=>({name:title,passed})),extractionErrors}));res.attachment("api-client-report.json").json({schemaVersion:1,state:job.state,progress:job.progress,results})})),app.get(`${API}/downloads/:id`,route((req,res)=>{let file=engine.files.get(req.params.id,req.clientSession.id);check(!file.upload,"\u4E0A\u4F20\u6587\u4EF6\u4E0D\u53EF\u4F5C\u4E3A\u7ED3\u679C\u4E0B\u8F7D"),res.attachment(file.name||"response.bin").type("application/octet-stream").sendFile(file.path)})),app.delete(`${API}/uploads/:id`,route(async(req,res)=>{let file=engine.files.get(req.params.id,req.clientSession.id);check(file.upload,"\u4E0D\u662F\u4E0A\u4F20\u6587\u4EF6"),await engine.files.remove(file.id),res.json({success:!0})})),app.get(`${API}/cookies`,route(async(req,res)=>res.json((await req.clientSession.jar.serialize()).cookies))),app.post(`${API}/cookies`,route(async(req,res)=>{check(typeof req.body.url=="string"&&/^https?:\/\//.test(req.body.url),"Cookie \u9700\u8981 HTTP/HTTPS URL");try{await req.clientSession.jar.setCookie(req.body.cookie,req.body.url)}catch{throw fail("Cookie \u683C\u5F0F\u6216\u76EE\u6807 URL \u65E0\u6548")}res.json({success:!0})})),app.delete(`${API}/cookies`,route(async(req,res)=>{await req.clientSession.jar.removeAllCookies(),res.json({success:!0})})),app.use((req,res)=>res.status(404).json({error:"\u9875\u9762\u6216 API \u4E0D\u5B58\u5728"})),app.use((error,req,res,_next)=>{if(res.headersSent||res.destroyed)return;let status=error.status||(error.code==="ENOENT"?404:500);res.status(status).json({error:status===500?"\u64CD\u4F5C\u5931\u8D25\uFF0C\u8BF7\u68C0\u67E5\u5DE5\u4F5C\u533A\u6743\u9650\u6216\u6587\u4EF6\u683C\u5F0F":error.type==="entity.too.large"?"\u8BF7\u6C42\u5185\u5BB9\u8D85\u8FC7\u9650\u5236":error.message})});async function removeSession(session){sessions.delete(session.id);for(let job of engine.jobs.values())job.owner===session.id&&await engine.remove(job);for(let file of engine.files.files.values())file.owner===session.id&&await engine.files.remove(file.id)}let sessionCleanup=setInterval(()=>{for(let session of sessions.values())Date.now()-session.time>12*36e5&&removeSession(session).catch(()=>{});for(let[key,attempt]of attempts)Date.now()-attempt.time>6e4&&attempts.delete(key)},6e4);return sessionCleanup.unref(),{app,server,engine,workspace,listen(port=0){return new Promise((resolve,reject)=>{server.once("error",reject),server.listen(port,host,()=>{server.removeListener("error",reject),resolve(server.address())})})},async close(){clearInterval(sessionCleanup);let closing=new Promise(resolve=>{if(!server.listening)return resolve();server.close(resolve),server.closeAllConnections?.()});await engine.close(),await closing,sessions.clear()}}}async function openBrowser(url){!(await openPathInFileManager(url)).ok&&!process.env.SILENT&&console.warn(`\u65E0\u6CD5\u81EA\u52A8\u6253\u5F00\u6D4F\u89C8\u5668\uFF0C\u8BF7\u8BBF\u95EE ${url}`)}async function start(){let client=createClientServer();try{let address=await client.listen(Number(process.env.PORT??8090));process.env.SILENT||(console.info("API Client available on:"),getServerUrls(address.port).forEach(url=>console.info(` ${url}`))),process.env.OPEN_API_OVERVIEW&&await openBrowser(`http://127.0.0.1:${address.port}`)}catch(error){throw await client.close(),error}let stopping=!1,stop=()=>{stopping||(stopping=!0,client.close().then(()=>process.exit(0),()=>process.exit(1)))};return process.once("SIGINT",stop),process.once("SIGTERM",stop),client}module2.exports={createClientServer,start}}});var require_apiClientServer=__commonJS({"src/lib/apiClientServer.js"(){require_server().start().catch(error=>{error.code==="EADDRINUSE"?(console.error(`API Client \u542F\u52A8\u5931\u8D25\uFF1A\u7AEF\u53E3 ${error.port} \u5DF2\u88AB\u5360\u7528\uFF08EADDRINUSE\uFF09\u3002`),console.error("\u8BF7\u4F7F\u7528 --api-client --port 0 \u81EA\u52A8\u5206\u914D\u7A7A\u95F2\u7AEF\u53E3\uFF0C\u6216\u901A\u8FC7 --port <\u7AEF\u53E3\u53F7> \u6307\u5B9A\u5176\u4ED6\u7AEF\u53E3\u3002")):error.code==="EACCES"||error.code==="EPERM"?console.error(`API Client \u542F\u52A8\u5931\u8D25\uFF1A\u6743\u9650\u4E0D\u8DB3\uFF08${error.code}\uFF09\uFF0C\u8BF7\u68C0\u67E5\u76D1\u542C\u7AEF\u53E3\u548C\u4E34\u65F6\u76EE\u5F55\u7684\u8BBF\u95EE\u6743\u9650\u3002`):console.error("API Client \u542F\u52A8\u5931\u8D25\uFF0C\u8BF7\u68C0\u67E5\u7AEF\u53E3\u3001\u5DE5\u4F5C\u533A\u548C\u8BA4\u8BC1\u914D\u7F6E"),process.exitCode=1})}});var require_async=__commonJS({"node_modules/async/dist/async.js"(exports2,module2){(function(global2,factory){typeof exports2=="object"&&typeof module2<"u"?factory(exports2):typeof define=="function"&&define.amd?define(["exports"],factory):(global2=typeof globalThis<"u"?globalThis:global2||self,factory(global2.async={}))})(exports2,(function(exports3){"use strict";function apply(fn,...args){return(...callArgs)=>fn(...args,...callArgs)}function initialParams(fn){return function(...args){var callback=args.pop();return fn.call(this,args,callback)}}var hasQueueMicrotask=typeof queueMicrotask=="function"&&queueMicrotask,hasSetImmediate=typeof setImmediate=="function"&&setImmediate,hasNextTick=typeof process=="object"&&typeof process.nextTick=="function";function fallback(fn){setTimeout(fn,0)}function wrap(defer){return(fn,...args)=>defer(()=>fn(...args))}var _defer$1;hasQueueMicrotask?_defer$1=queueMicrotask:hasSetImmediate?_defer$1=setImmediate:hasNextTick?_defer$1=process.nextTick:_defer$1=fallback;var setImmediate$1=wrap(_defer$1);function asyncify(func){return isAsync(func)?function(...args){let callback=args.pop(),promise=func.apply(this,args);return handlePromise(promise,callback)}:initialParams(function(args,callback){var result;try{result=func.apply(this,args)}catch(e){return callback(e)}if(result&&typeof result.then=="function")return handlePromise(result,callback);callback(null,result)})}function handlePromise(promise,callback){return promise.then(value=>{invokeCallback(callback,null,value)},err=>{invokeCallback(callback,err&&(err instanceof Error||err.message)?err:new Error(err))})}function invokeCallback(callback,error,value){try{callback(error,value)}catch(err){setImmediate$1(e=>{throw e},err)}}function isAsync(fn){return fn[Symbol.toStringTag]==="AsyncFunction"}function isAsyncGenerator(fn){return fn[Symbol.toStringTag]==="AsyncGenerator"}function isAsyncIterable(obj){return typeof obj[Symbol.asyncIterator]=="function"}function wrapAsync(asyncFn){if(typeof asyncFn!="function")throw new Error("expected a function");return isAsync(asyncFn)?asyncify(asyncFn):asyncFn}function awaitify(asyncFn,arity){if(arity||(arity=asyncFn.length),!arity)throw new Error("arity is undefined");function awaitable(...args){return typeof args[arity-1]=="function"?asyncFn.apply(this,args):new Promise((resolve,reject2)=>{args[arity-1]=(err,...cbArgs)=>{if(err)return reject2(err);resolve(cbArgs.length>1?cbArgs:cbArgs[0])},asyncFn.apply(this,args)})}return awaitable}function applyEach$1(eachfn){return function(fns,...callArgs){return awaitify(function(callback){var that=this;return eachfn(fns,(fn,cb)=>{wrapAsync(fn).apply(that,callArgs.concat(cb))},callback)})}}function _asyncMap(eachfn,arr,iteratee,callback){arr=arr||[];var results=[],counter=0,_iteratee=wrapAsync(iteratee);return eachfn(arr,(value,_,iterCb)=>{var index2=counter++;_iteratee(value,(err,v)=>{results[index2]=v,iterCb(err)})},err=>{callback(err,results)})}function isArrayLike(value){return value&&typeof value.length=="number"&&value.length>=0&&value.length%1===0}let breakLoop={};function once(fn){function wrapper(...args){if(fn!==null){var callFn=fn;fn=null,callFn.apply(this,args)}}return Object.assign(wrapper,fn),wrapper}function getIterator(coll){return coll[Symbol.iterator]&&coll[Symbol.iterator]()}function createArrayIterator(coll){var i=-1,len=coll.length;return function(){return++i<len?{value:coll[i],key:i}:null}}function createES2015Iterator(iterator){var i=-1;return function(){var item=iterator.next();return item.done?null:(i++,{value:item.value,key:i})}}function createObjectIterator(obj){var okeys=obj?Object.keys(obj):[],i=-1,len=okeys.length;return function next(){var key=okeys[++i];return key==="__proto__"?next():i<len?{value:obj[key],key}:null}}function createIterator(coll){if(isArrayLike(coll))return createArrayIterator(coll);var iterator=getIterator(coll);return iterator?createES2015Iterator(iterator):createObjectIterator(coll)}function onlyOnce(fn){return function(...args){if(fn===null)throw new Error("Callback was already called.");var callFn=fn;fn=null,callFn.apply(this,args)}}function asyncEachOfLimit(generator,limit,iteratee,callback){let done=!1,canceled=!1,awaiting=!1,running=0,idx=0;function replenish(){running>=limit||awaiting||done||(awaiting=!0,generator.next().then(({value,done:iterDone})=>{if(!(canceled||done)){if(awaiting=!1,iterDone){done=!0,running<=0&&callback(null);return}running++,iteratee(value,idx,iterateeCallback),idx++,replenish()}}).catch(handleError))}function iterateeCallback(err,result){if(running-=1,!canceled){if(err)return handleError(err);if(err===!1){done=!0,canceled=!0;return}if(result===breakLoop||done&&running<=0)return done=!0,callback(null);replenish()}}function handleError(err){canceled||(awaiting=!1,done=!0,callback(err))}replenish()}var eachOfLimit$2=limit=>(obj,iteratee,callback)=>{if(callback=once(callback),limit<=0)throw new RangeError("concurrency limit cannot be less than 1");if(!obj)return callback(null);if(isAsyncGenerator(obj))return asyncEachOfLimit(obj,limit,iteratee,callback);if(isAsyncIterable(obj))return asyncEachOfLimit(obj[Symbol.asyncIterator](),limit,iteratee,callback);var nextElem=createIterator(obj),done=!1,canceled=!1,running=0,looping=!1;function iterateeCallback(err,value){if(!canceled)if(running-=1,err)done=!0,callback(err);else if(err===!1)done=!0,canceled=!0;else{if(value===breakLoop||done&&running<=0)return done=!0,callback(null);looping||replenish()}}function replenish(){for(looping=!0;running<limit&&!done;){var elem=nextElem();if(elem===null){done=!0,running<=0&&callback(null);return}running+=1,iteratee(elem.value,elem.key,onlyOnce(iterateeCallback))}looping=!1}replenish()};function eachOfLimit(coll,limit,iteratee,callback){return eachOfLimit$2(limit)(coll,wrapAsync(iteratee),callback)}var eachOfLimit$1=awaitify(eachOfLimit,4);function eachOfArrayLike(coll,iteratee,callback){callback=once(callback);var index2=0,completed=0,{length}=coll,canceled=!1;length===0&&callback(null);function iteratorCallback(err,value){err===!1&&(canceled=!0),canceled!==!0&&(err?callback(err):(++completed===length||value===breakLoop)&&callback(null))}for(;index2<length;index2++)iteratee(coll[index2],index2,onlyOnce(iteratorCallback))}function eachOfGeneric(coll,iteratee,callback){return eachOfLimit$1(coll,1/0,iteratee,callback)}function eachOf(coll,iteratee,callback){var eachOfImplementation=isArrayLike(coll)?eachOfArrayLike:eachOfGeneric;return eachOfImplementation(coll,wrapAsync(iteratee),callback)}var eachOf$1=awaitify(eachOf,3);function map(coll,iteratee,callback){return _asyncMap(eachOf$1,coll,iteratee,callback)}var map$1=awaitify(map,3),applyEach=applyEach$1(map$1);function eachOfSeries(coll,iteratee,callback){return eachOfLimit$1(coll,1,iteratee,callback)}var eachOfSeries$1=awaitify(eachOfSeries,3);function mapSeries(coll,iteratee,callback){return _asyncMap(eachOfSeries$1,coll,iteratee,callback)}var mapSeries$1=awaitify(mapSeries,3),applyEachSeries=applyEach$1(mapSeries$1);let PROMISE_SYMBOL=Symbol("promiseCallback");function promiseCallback(){let resolve,reject2;function callback(err,...args){if(err)return reject2(err);resolve(args.length>1?args:args[0])}return callback[PROMISE_SYMBOL]=new Promise((res,rej)=>{resolve=res,reject2=rej}),callback}function auto(tasks,concurrency,callback){typeof concurrency!="number"&&(callback=concurrency,concurrency=null),callback=once(callback||promiseCallback());var numTasks=Object.keys(tasks).length;if(!numTasks)return callback(null);concurrency||(concurrency=numTasks);var results={},runningTasks=0,canceled=!1,hasError=!1,listeners=Object.create(null),readyTasks=[],readyToCheck=[],uncheckedDependencies={};Object.keys(tasks).forEach(key=>{var task=tasks[key];if(!Array.isArray(task)){enqueueTask(key,[task]),readyToCheck.push(key);return}var dependencies=task.slice(0,task.length-1),remainingDependencies=dependencies.length;if(remainingDependencies===0){enqueueTask(key,task),readyToCheck.push(key);return}uncheckedDependencies[key]=remainingDependencies,dependencies.forEach(dependencyName=>{if(!tasks[dependencyName])throw new Error("async.auto task `"+key+"` has a non-existent dependency `"+dependencyName+"` in "+dependencies.join(", "));addListener(dependencyName,()=>{remainingDependencies--,remainingDependencies===0&&enqueueTask(key,task)})})}),checkForDeadlocks(),processQueue();function enqueueTask(key,task){readyTasks.push(()=>runTask(key,task))}function processQueue(){if(!canceled){if(readyTasks.length===0&&runningTasks===0)return callback(null,results);for(;readyTasks.length&&runningTasks<concurrency;){var run=readyTasks.shift();run()}}}function addListener(taskName,fn){var taskListeners=listeners[taskName];taskListeners||(taskListeners=listeners[taskName]=[]),taskListeners.push(fn)}function taskComplete(taskName){var taskListeners=listeners[taskName]||[];taskListeners.forEach(fn=>fn()),processQueue()}function runTask(key,task){if(!hasError){var taskCallback=onlyOnce((err,...result)=>{if(runningTasks--,err===!1){canceled=!0;return}if(result.length<2&&([result]=result),err){var safeResults={};if(Object.keys(results).forEach(rkey=>{safeResults[rkey]=results[rkey]}),safeResults[key]=result,hasError=!0,listeners=Object.create(null),canceled)return;callback(err,safeResults)}else results[key]=result,taskComplete(key)});runningTasks++;var taskFn=wrapAsync(task[task.length-1]);task.length>1?taskFn(results,taskCallback):taskFn(taskCallback)}}function checkForDeadlocks(){for(var currentTask,counter=0;readyToCheck.length;)currentTask=readyToCheck.pop(),counter++,getDependents(currentTask).forEach(dependent=>{--uncheckedDependencies[dependent]===0&&readyToCheck.push(dependent)});if(counter!==numTasks)throw new Error("async.auto cannot execute tasks due to a recursive dependency")}function getDependents(taskName){var result=[];return Object.keys(tasks).forEach(key=>{let task=tasks[key];Array.isArray(task)&&task.indexOf(taskName)>=0&&result.push(key)}),result}return callback[PROMISE_SYMBOL]}var FN_ARGS=/^(?:async\s)?(?:function)?\s*(?:\w+\s*)?\(([^)]+)\)(?:\s*{)/,ARROW_FN_ARGS=/^(?:async\s)?\s*(?:\(\s*)?((?:[^)=\s]\s*)*)(?:\)\s*)?=>/,FN_ARG_SPLIT=/,/,FN_ARG=/(=.+)?(\s*)$/;function stripComments(string){let stripped="",index2=0,endBlockComment=string.indexOf("*/");for(;index2<string.length;)if(string[index2]==="/"&&string[index2+1]==="/"){let endIndex=string.indexOf(`
|
|
223
223
|
`,index2);index2=endIndex===-1?string.length:endIndex}else if(endBlockComment!==-1&&string[index2]==="/"&&string[index2+1]==="*"){let endIndex=string.indexOf("*/",index2);endIndex!==-1?(index2=endIndex+2,endBlockComment=string.indexOf("*/",index2)):(stripped+=string[index2],index2++)}else stripped+=string[index2],index2++;return stripped}function parseParams(func){let src=stripComments(func.toString()),match=src.match(FN_ARGS);if(match||(match=src.match(ARROW_FN_ARGS)),!match)throw new Error(`could not parse args in autoInject
|
|
224
224
|
Source:
|
|
225
225
|
`+src);let[,args]=match;return args.replace(/\s/g,"").split(FN_ARG_SPLIT).map(arg=>arg.replace(FN_ARG,"").trim())}function autoInject(tasks,callback){var newTasks={};return Object.keys(tasks).forEach(key=>{var taskFn=tasks[key],params,fnIsAsync=isAsync(taskFn),hasNoDeps=!fnIsAsync&&taskFn.length===1||fnIsAsync&&taskFn.length===0;if(Array.isArray(taskFn))params=[...taskFn],taskFn=params.pop(),newTasks[key]=params.concat(params.length>0?newTask:taskFn);else if(hasNoDeps)newTasks[key]=taskFn;else{if(params=parseParams(taskFn),taskFn.length===0&&!fnIsAsync&¶ms.length===0)throw new Error("autoInject task functions require explicit parameters.");fnIsAsync||params.pop(),newTasks[key]=params.concat(newTask)}function newTask(results,taskCb){var newArgs=params.map(name=>results[name]);newArgs.push(taskCb),wrapAsync(taskFn)(...newArgs)}}),auto(newTasks,callback)}class DLL{constructor(){this.head=this.tail=null,this.length=0}removeLink(node){return node.prev?node.prev.next=node.next:this.head=node.next,node.next?node.next.prev=node.prev:this.tail=node.prev,node.prev=node.next=null,this.length-=1,node}empty(){for(;this.head;)this.shift();return this}insertAfter(node,newNode){newNode.prev=node,newNode.next=node.next,node.next?node.next.prev=newNode:this.tail=newNode,node.next=newNode,this.length+=1}insertBefore(node,newNode){newNode.prev=node.prev,newNode.next=node,node.prev?node.prev.next=newNode:this.head=newNode,node.prev=newNode,this.length+=1}unshift(node){this.head?this.insertBefore(this.head,node):setInitial(this,node)}push(node){this.tail?this.insertAfter(this.tail,node):setInitial(this,node)}shift(){return this.head&&this.removeLink(this.head)}pop(){return this.tail&&this.removeLink(this.tail)}toArray(){return[...this]}*[Symbol.iterator](){for(var cur=this.head;cur;)yield cur.data,cur=cur.next}remove(testFn){for(var curr=this.head;curr;){var{next}=curr;testFn(curr)&&this.removeLink(curr),curr=next}return this}}function setInitial(dll,node){dll.length=1,dll.head=dll.tail=node}function queue$1(worker,concurrency,payload){if(concurrency==null)concurrency=1;else if(concurrency===0)throw new RangeError("Concurrency must not be zero");var _worker=wrapAsync(worker),numRunning=0,workersList=[];let events={error:[],drain:[],saturated:[],unsaturated:[],empty:[]};function on(event,handler){events[event].push(handler)}function once2(event,handler){let handleAndRemove=(...args)=>{off(event,handleAndRemove),handler(...args)};events[event].push(handleAndRemove)}function off(event,handler){if(!event)return Object.keys(events).forEach(ev=>events[ev]=[]);if(!handler)return events[event]=[];events[event]=events[event].filter(ev=>ev!==handler)}function trigger(event,...args){events[event].forEach(handler=>handler(...args))}var processingScheduled=!1;function _insert(data,insertAtFront,rejectOnError,callback){if(callback!=null&&typeof callback!="function")throw new Error("task callback must be a function");q.started=!0;var res,rej;function promiseCallback2(err,...args){if(err)return rejectOnError?rej(err):res();if(args.length<=1)return res(args[0]);res(args)}var item=q._createTaskItem(data,rejectOnError?promiseCallback2:callback||promiseCallback2);if(insertAtFront?q._tasks.unshift(item):q._tasks.push(item),processingScheduled||(processingScheduled=!0,setImmediate$1(()=>{processingScheduled=!1,q.process()})),rejectOnError||!callback)return new Promise((resolve,reject2)=>{res=resolve,rej=reject2})}function _createCB(tasks){return function(err,...args){numRunning-=1;for(var i=0,l=tasks.length;i<l;i++){var task=tasks[i],index2=workersList.indexOf(task);index2===0?workersList.shift():index2>0&&workersList.splice(index2,1),task.callback(err,...args),err!=null&&trigger("error",err,task.data)}numRunning<=q.concurrency-q.buffer&&trigger("unsaturated"),q.idle()&&trigger("drain"),q.process()}}function _maybeDrain(data){return data.length===0&&q.idle()?(setImmediate$1(()=>trigger("drain")),!0):!1}let eventMethod=name=>handler=>{if(!handler)return new Promise((resolve,reject2)=>{once2(name,(err,data)=>{if(err)return reject2(err);resolve(data)})});off(name),on(name,handler)};var isProcessing=!1,q={_tasks:new DLL,_createTaskItem(data,callback){return{data,callback}},*[Symbol.iterator](){yield*q._tasks[Symbol.iterator]()},concurrency,payload,buffer:concurrency/4,started:!1,paused:!1,push(data,callback){return Array.isArray(data)?_maybeDrain(data)?void 0:data.map(datum=>_insert(datum,!1,!1,callback)):_insert(data,!1,!1,callback)},pushAsync(data,callback){return Array.isArray(data)?_maybeDrain(data)?void 0:data.map(datum=>_insert(datum,!1,!0,callback)):_insert(data,!1,!0,callback)},kill(){off(),q._tasks.empty()},unshift(data,callback){return Array.isArray(data)?_maybeDrain(data)?void 0:data.map(datum=>_insert(datum,!0,!1,callback)):_insert(data,!0,!1,callback)},unshiftAsync(data,callback){return Array.isArray(data)?_maybeDrain(data)?void 0:data.map(datum=>_insert(datum,!0,!0,callback)):_insert(data,!0,!0,callback)},remove(testFn){q._tasks.remove(testFn)},process(){if(!isProcessing){for(isProcessing=!0;!q.paused&&numRunning<q.concurrency&&q._tasks.length;){var tasks=[],data=[],l=q._tasks.length;q.payload&&(l=Math.min(l,q.payload));for(var i=0;i<l;i++){var node=q._tasks.shift();tasks.push(node),workersList.push(node),data.push(node.data)}numRunning+=1,q._tasks.length===0&&trigger("empty"),numRunning===q.concurrency&&trigger("saturated");var cb=onlyOnce(_createCB(tasks));_worker(data,cb)}isProcessing=!1}},length(){return q._tasks.length},running(){return numRunning},workersList(){return workersList},idle(){return q._tasks.length+numRunning===0},pause(){q.paused=!0},resume(){q.paused!==!1&&(q.paused=!1,setImmediate$1(q.process))}};return Object.defineProperties(q,{saturated:{writable:!1,value:eventMethod("saturated")},unsaturated:{writable:!1,value:eventMethod("unsaturated")},empty:{writable:!1,value:eventMethod("empty")},drain:{writable:!1,value:eventMethod("drain")},error:{writable:!1,value:eventMethod("error")}}),q}function cargo$1(worker,payload){return queue$1(worker,1,payload)}function cargo(worker,concurrency,payload){return queue$1(worker,concurrency,payload)}function reduce(coll,memo,iteratee,callback){callback=once(callback);var _iteratee=wrapAsync(iteratee);return eachOfSeries$1(coll,(x,i,iterCb)=>{_iteratee(memo,x,(err,v)=>{memo=v,iterCb(err)})},err=>callback(err,memo))}var reduce$1=awaitify(reduce,4);function seq(...functions){var _functions=functions.map(wrapAsync);return function(...args){var that=this,cb=args[args.length-1];return typeof cb=="function"?args.pop():cb=promiseCallback(),reduce$1(_functions,args,(newargs,fn,iterCb)=>{fn.apply(that,newargs.concat((err,...nextargs)=>{iterCb(err,nextargs)}))},(err,results)=>cb(err,...results)),cb[PROMISE_SYMBOL]}}function compose(...args){return seq(...args.reverse())}function mapLimit(coll,limit,iteratee,callback){return _asyncMap(eachOfLimit$2(limit),coll,iteratee,callback)}var mapLimit$1=awaitify(mapLimit,4);function concatLimit(coll,limit,iteratee,callback){var _iteratee=wrapAsync(iteratee);return mapLimit$1(coll,limit,(val,iterCb)=>{_iteratee(val,(err,...args)=>err?iterCb(err):iterCb(err,args))},(err,mapResults)=>{for(var result=[],i=0;i<mapResults.length;i++)mapResults[i]&&(result=result.concat(...mapResults[i]));return callback(err,result)})}var concatLimit$1=awaitify(concatLimit,4);function concat(coll,iteratee,callback){return concatLimit$1(coll,1/0,iteratee,callback)}var concat$1=awaitify(concat,3);function concatSeries(coll,iteratee,callback){return concatLimit$1(coll,1,iteratee,callback)}var concatSeries$1=awaitify(concatSeries,3);function constant$1(...args){return function(...ignoredArgs){var callback=ignoredArgs.pop();return callback(null,...args)}}function _createTester(check,getResult){return(eachfn,arr,_iteratee,cb)=>{var testPassed=!1,testResult;let iteratee=wrapAsync(_iteratee);eachfn(arr,(value,_,callback)=>{iteratee(value,(err,result)=>{if(err||err===!1)return callback(err);if(check(result)&&!testResult)return testPassed=!0,testResult=getResult(!0,value),callback(null,breakLoop);callback()})},err=>{if(err)return cb(err);cb(null,testPassed?testResult:getResult(!1))})}}function detect(coll,iteratee,callback){return _createTester(bool=>bool,(res,item)=>item)(eachOf$1,coll,iteratee,callback)}var detect$1=awaitify(detect,3);function detectLimit(coll,limit,iteratee,callback){return _createTester(bool=>bool,(res,item)=>item)(eachOfLimit$2(limit),coll,iteratee,callback)}var detectLimit$1=awaitify(detectLimit,4);function detectSeries(coll,iteratee,callback){return _createTester(bool=>bool,(res,item)=>item)(eachOfLimit$2(1),coll,iteratee,callback)}var detectSeries$1=awaitify(detectSeries,3);function consoleFunc(name){return(fn,...args)=>wrapAsync(fn)(...args,(err,...resultArgs)=>{typeof console=="object"&&(err?console.error&&console.error(err):console[name]&&resultArgs.forEach(x=>console[name](x)))})}var dir=consoleFunc("dir");function doWhilst(iteratee,test,callback){callback=onlyOnce(callback);var _fn=wrapAsync(iteratee),_test=wrapAsync(test),results;function next(err,...args){if(err)return callback(err);err!==!1&&(results=args,_test(...args,check))}function check(err,truth){if(err)return callback(err);if(err!==!1){if(!truth)return callback(null,...results);_fn(next)}}return check(null,!0)}var doWhilst$1=awaitify(doWhilst,3);function doUntil(iteratee,test,callback){let _test=wrapAsync(test);return doWhilst$1(iteratee,(...args)=>{let cb=args.pop();_test(...args,(err,truth)=>cb(err,!truth))},callback)}function _withoutIndex(iteratee){return(value,index2,callback)=>iteratee(value,callback)}function eachLimit$2(coll,iteratee,callback){return eachOf$1(coll,_withoutIndex(wrapAsync(iteratee)),callback)}var each=awaitify(eachLimit$2,3);function eachLimit(coll,limit,iteratee,callback){return eachOfLimit$2(limit)(coll,_withoutIndex(wrapAsync(iteratee)),callback)}var eachLimit$1=awaitify(eachLimit,4);function eachSeries(coll,iteratee,callback){return eachLimit$1(coll,1,iteratee,callback)}var eachSeries$1=awaitify(eachSeries,3);function ensureAsync(fn){return isAsync(fn)?fn:function(...args){var callback=args.pop(),sync=!0;args.push((...innerArgs)=>{sync?setImmediate$1(()=>callback(...innerArgs)):callback(...innerArgs)}),fn.apply(this,args),sync=!1}}function every(coll,iteratee,callback){return _createTester(bool=>!bool,res=>!res)(eachOf$1,coll,iteratee,callback)}var every$1=awaitify(every,3);function everyLimit(coll,limit,iteratee,callback){return _createTester(bool=>!bool,res=>!res)(eachOfLimit$2(limit),coll,iteratee,callback)}var everyLimit$1=awaitify(everyLimit,4);function everySeries(coll,iteratee,callback){return _createTester(bool=>!bool,res=>!res)(eachOfSeries$1,coll,iteratee,callback)}var everySeries$1=awaitify(everySeries,3);function filterArray(eachfn,arr,iteratee,callback){var truthValues=new Array(arr.length);eachfn(arr,(x,index2,iterCb)=>{iteratee(x,(err,v)=>{truthValues[index2]=!!v,iterCb(err)})},err=>{if(err)return callback(err);for(var results=[],i=0;i<arr.length;i++)truthValues[i]&&results.push(arr[i]);callback(null,results)})}function filterGeneric(eachfn,coll,iteratee,callback){var results=[];eachfn(coll,(x,index2,iterCb)=>{iteratee(x,(err,v)=>{if(err)return iterCb(err);v&&results.push({index:index2,value:x}),iterCb(err)})},err=>{if(err)return callback(err);callback(null,results.sort((a,b)=>a.index-b.index).map(v=>v.value))})}function _filter(eachfn,coll,iteratee,callback){var filter2=isArrayLike(coll)?filterArray:filterGeneric;return filter2(eachfn,coll,wrapAsync(iteratee),callback)}function filter(coll,iteratee,callback){return _filter(eachOf$1,coll,iteratee,callback)}var filter$1=awaitify(filter,3);function filterLimit(coll,limit,iteratee,callback){return _filter(eachOfLimit$2(limit),coll,iteratee,callback)}var filterLimit$1=awaitify(filterLimit,4);function filterSeries(coll,iteratee,callback){return _filter(eachOfSeries$1,coll,iteratee,callback)}var filterSeries$1=awaitify(filterSeries,3);function forever(fn,errback){var done=onlyOnce(errback),task=wrapAsync(ensureAsync(fn));function next(err){if(err)return done(err);err!==!1&&task(next)}return next()}var forever$1=awaitify(forever,2);function groupByLimit(coll,limit,iteratee,callback){var _iteratee=wrapAsync(iteratee);return mapLimit$1(coll,limit,(val,iterCb)=>{_iteratee(val,(err,key)=>err?iterCb(err):iterCb(err,{key,val}))},(err,mapResults)=>{for(var result={},{hasOwnProperty}=Object.prototype,i=0;i<mapResults.length;i++)if(mapResults[i]){var{key}=mapResults[i],{val}=mapResults[i];hasOwnProperty.call(result,key)?result[key].push(val):result[key]=[val]}return callback(err,result)})}var groupByLimit$1=awaitify(groupByLimit,4);function groupBy(coll,iteratee,callback){return groupByLimit$1(coll,1/0,iteratee,callback)}function groupBySeries(coll,iteratee,callback){return groupByLimit$1(coll,1,iteratee,callback)}var log=consoleFunc("log");function mapValuesLimit(obj,limit,iteratee,callback){callback=once(callback);var newObj={},_iteratee=wrapAsync(iteratee);return eachOfLimit$2(limit)(obj,(val,key,next)=>{_iteratee(val,key,(err,result)=>{if(err)return next(err);newObj[key]=result,next(err)})},err=>callback(err,newObj))}var mapValuesLimit$1=awaitify(mapValuesLimit,4);function mapValues(obj,iteratee,callback){return mapValuesLimit$1(obj,1/0,iteratee,callback)}function mapValuesSeries(obj,iteratee,callback){return mapValuesLimit$1(obj,1,iteratee,callback)}function memoize(fn,hasher=v=>v){var memo=Object.create(null),queues=Object.create(null),_fn=wrapAsync(fn),memoized=initialParams((args,callback)=>{var key=hasher(...args);key in memo?setImmediate$1(()=>callback(null,...memo[key])):key in queues?queues[key].push(callback):(queues[key]=[callback],_fn(...args,(err,...resultArgs)=>{err||(memo[key]=resultArgs);var q=queues[key];delete queues[key];for(var i=0,l=q.length;i<l;i++)q[i](err,...resultArgs)}))});return memoized.memo=memo,memoized.unmemoized=fn,memoized}var _defer;hasNextTick?_defer=process.nextTick:hasSetImmediate?_defer=setImmediate:_defer=fallback;var nextTick=wrap(_defer),_parallel=awaitify((eachfn,tasks,callback)=>{var results=isArrayLike(tasks)?[]:{};eachfn(tasks,(task,key,taskCb)=>{wrapAsync(task)((err,...result)=>{result.length<2&&([result]=result),results[key]=result,taskCb(err)})},err=>callback(err,results))},3);function parallel(tasks,callback){return _parallel(eachOf$1,tasks,callback)}function parallelLimit(tasks,limit,callback){return _parallel(eachOfLimit$2(limit),tasks,callback)}function queue(worker,concurrency){var _worker=wrapAsync(worker);return queue$1((items,cb)=>{_worker(items[0],cb)},concurrency,1)}class Heap{constructor(){this.heap=[],this.pushCount=Number.MIN_SAFE_INTEGER}get length(){return this.heap.length}empty(){return this.heap=[],this}percUp(index2){let p;for(;index2>0&&smaller(this.heap[index2],this.heap[p=parent(index2)]);){let t=this.heap[index2];this.heap[index2]=this.heap[p],this.heap[p]=t,index2=p}}percDown(index2){let l;for(;(l=leftChi(index2))<this.heap.length&&(l+1<this.heap.length&&smaller(this.heap[l+1],this.heap[l])&&(l=l+1),!smaller(this.heap[index2],this.heap[l]));){let t=this.heap[index2];this.heap[index2]=this.heap[l],this.heap[l]=t,index2=l}}push(node){node.pushCount=++this.pushCount,this.heap.push(node),this.percUp(this.heap.length-1)}unshift(node){return this.heap.push(node)}shift(){let[top]=this.heap;return this.heap[0]=this.heap[this.heap.length-1],this.heap.pop(),this.percDown(0),top}toArray(){return[...this]}*[Symbol.iterator](){for(let i=0;i<this.heap.length;i++)yield this.heap[i].data}remove(testFn){let j=0;for(let i=0;i<this.heap.length;i++)testFn(this.heap[i])||(this.heap[j]=this.heap[i],j++);this.heap.splice(j);for(let i=parent(this.heap.length-1);i>=0;i--)this.percDown(i);return this}}function leftChi(i){return(i<<1)+1}function parent(i){return(i+1>>1)-1}function smaller(x,y){return x.priority!==y.priority?x.priority<y.priority:x.pushCount<y.pushCount}function priorityQueue(worker,concurrency){var q=queue(worker,concurrency),{push,pushAsync}=q;q._tasks=new Heap,q._createTaskItem=({data,priority},callback)=>({data,priority,callback});function createDataItems(tasks,priority){return Array.isArray(tasks)?tasks.map(data=>({data,priority})):{data:tasks,priority}}return q.push=function(data,priority=0,callback){return push(createDataItems(data,priority),callback)},q.pushAsync=function(data,priority=0,callback){return pushAsync(createDataItems(data,priority),callback)},delete q.unshift,delete q.unshiftAsync,q}function race(tasks,callback){if(callback=once(callback),!Array.isArray(tasks))return callback(new TypeError("First argument to race must be an array of functions"));if(!tasks.length)return callback();for(var i=0,l=tasks.length;i<l;i++)wrapAsync(tasks[i])(callback)}var race$1=awaitify(race,2);function reduceRight(array,memo,iteratee,callback){var reversed=[...array].reverse();return reduce$1(reversed,memo,iteratee,callback)}function reflect(fn){var _fn=wrapAsync(fn);return initialParams(function(args,reflectCallback){return args.push((error,...cbArgs)=>{let retVal={};if(error&&(retVal.error=error),cbArgs.length>0){var value=cbArgs;cbArgs.length<=1&&([value]=cbArgs),retVal.value=value}reflectCallback(null,retVal)}),_fn.apply(this,args)})}function reflectAll(tasks){var results;return Array.isArray(tasks)?results=tasks.map(reflect):(results={},Object.keys(tasks).forEach(key=>{results[key]=reflect.call(this,tasks[key])})),results}function reject$2(eachfn,arr,_iteratee,callback){let iteratee=wrapAsync(_iteratee);return _filter(eachfn,arr,(value,cb)=>{iteratee(value,(err,v)=>{cb(err,!v)})},callback)}function reject(coll,iteratee,callback){return reject$2(eachOf$1,coll,iteratee,callback)}var reject$1=awaitify(reject,3);function rejectLimit(coll,limit,iteratee,callback){return reject$2(eachOfLimit$2(limit),coll,iteratee,callback)}var rejectLimit$1=awaitify(rejectLimit,4);function rejectSeries(coll,iteratee,callback){return reject$2(eachOfSeries$1,coll,iteratee,callback)}var rejectSeries$1=awaitify(rejectSeries,3);function constant(value){return function(){return value}}let DEFAULT_TIMES=5,DEFAULT_INTERVAL=0;function retry(opts,task,callback){var options={times:DEFAULT_TIMES,intervalFunc:constant(DEFAULT_INTERVAL)};if(arguments.length<3&&typeof opts=="function"?(callback=task||promiseCallback(),task=opts):(parseTimes(options,opts),callback=callback||promiseCallback()),typeof task!="function")throw new Error("Invalid arguments for async.retry");var _task=wrapAsync(task),attempt=1;function retryAttempt(){_task((err,...args)=>{err!==!1&&(err&&attempt++<options.times&&(typeof options.errorFilter!="function"||options.errorFilter(err))?setTimeout(retryAttempt,options.intervalFunc(attempt-1)):callback(err,...args))})}return retryAttempt(),callback[PROMISE_SYMBOL]}function parseTimes(acc,t){if(typeof t=="object")acc.times=+t.times||DEFAULT_TIMES,acc.intervalFunc=typeof t.interval=="function"?t.interval:constant(+t.interval||DEFAULT_INTERVAL),acc.errorFilter=t.errorFilter;else if(typeof t=="number"||typeof t=="string")acc.times=+t||DEFAULT_TIMES;else throw new Error("Invalid arguments for async.retry")}function retryable(opts,task){task||(task=opts,opts=null);let arity=opts&&opts.arity||task.length;isAsync(task)&&(arity+=1);var _task=wrapAsync(task);return initialParams((args,callback)=>{(args.length<arity-1||callback==null)&&(args.push(callback),callback=promiseCallback());function taskFn(cb){_task(...args,cb)}return opts?retry(opts,taskFn,callback):retry(taskFn,callback),callback[PROMISE_SYMBOL]})}function series(tasks,callback){return _parallel(eachOfSeries$1,tasks,callback)}function some(coll,iteratee,callback){return _createTester(Boolean,res=>res)(eachOf$1,coll,iteratee,callback)}var some$1=awaitify(some,3);function someLimit(coll,limit,iteratee,callback){return _createTester(Boolean,res=>res)(eachOfLimit$2(limit),coll,iteratee,callback)}var someLimit$1=awaitify(someLimit,4);function someSeries(coll,iteratee,callback){return _createTester(Boolean,res=>res)(eachOfSeries$1,coll,iteratee,callback)}var someSeries$1=awaitify(someSeries,3);function sortBy(coll,iteratee,callback){var _iteratee=wrapAsync(iteratee);return map$1(coll,(x,iterCb)=>{_iteratee(x,(err,criteria)=>{if(err)return iterCb(err);iterCb(err,{value:x,criteria})})},(err,results)=>{if(err)return callback(err);callback(null,results.sort(comparator).map(v=>v.value))});function comparator(left,right){var a=left.criteria,b=right.criteria;return a<b?-1:a>b?1:0}}var sortBy$1=awaitify(sortBy,3);function timeout(asyncFn,milliseconds,info){var fn=wrapAsync(asyncFn);return initialParams((args,callback)=>{var timedOut=!1,timer;function timeoutCallback(){var name=asyncFn.name||"anonymous",error=new Error('Callback function "'+name+'" timed out.');error.code="ETIMEDOUT",info&&(error.info=info),timedOut=!0,callback(error)}args.push((...cbArgs)=>{timedOut||(callback(...cbArgs),clearTimeout(timer))}),timer=setTimeout(timeoutCallback,milliseconds),fn(...args)})}function range(size){for(var result=Array(size);size--;)result[size]=size;return result}function timesLimit(count,limit,iteratee,callback){var _iteratee=wrapAsync(iteratee);return mapLimit$1(range(count),limit,_iteratee,callback)}function times(n,iteratee,callback){return timesLimit(n,1/0,iteratee,callback)}function timesSeries(n,iteratee,callback){return timesLimit(n,1,iteratee,callback)}function transform(coll,accumulator,iteratee,callback){arguments.length<=3&&typeof accumulator=="function"&&(callback=iteratee,iteratee=accumulator,accumulator=Array.isArray(coll)?[]:{}),callback=once(callback||promiseCallback());var _iteratee=wrapAsync(iteratee);return eachOf$1(coll,(v,k,cb)=>{_iteratee(accumulator,v,k,cb)},err=>callback(err,accumulator)),callback[PROMISE_SYMBOL]}function tryEach(tasks,callback){var error=null,result;return eachSeries$1(tasks,(task,taskCb)=>{wrapAsync(task)((err,...args)=>{if(err===!1)return taskCb(err);args.length<2?[result]=args:result=args,error=err,taskCb(err?null:{})})},()=>callback(error,result))}var tryEach$1=awaitify(tryEach);function unmemoize(fn){return(...args)=>(fn.unmemoized||fn)(...args)}function whilst(test,iteratee,callback){callback=onlyOnce(callback);var _fn=wrapAsync(iteratee),_test=wrapAsync(test),results=[];function next(err,...rest){if(err)return callback(err);results=rest,err!==!1&&_test(check)}function check(err,truth){if(err)return callback(err);if(err!==!1){if(!truth)return callback(null,...results);_fn(next)}}return _test(check)}var whilst$1=awaitify(whilst,3);function until(test,iteratee,callback){let _test=wrapAsync(test);return whilst$1(cb=>_test((err,truth)=>cb(err,!truth)),iteratee,callback)}function waterfall(tasks,callback){if(callback=once(callback),!Array.isArray(tasks))return callback(new Error("First argument to waterfall must be an array of functions"));if(!tasks.length)return callback();var taskIndex=0;function nextTask(args){var task=wrapAsync(tasks[taskIndex++]);task(...args,onlyOnce(next))}function next(err,...args){if(err!==!1){if(err||taskIndex===tasks.length)return callback(err,...args);nextTask(args)}}nextTask([])}var waterfall$1=awaitify(waterfall),index={apply,applyEach,applyEachSeries,asyncify,auto,autoInject,cargo:cargo$1,cargoQueue:cargo,compose,concat:concat$1,concatLimit:concatLimit$1,concatSeries:concatSeries$1,constant:constant$1,detect:detect$1,detectLimit:detectLimit$1,detectSeries:detectSeries$1,dir,doUntil,doWhilst:doWhilst$1,each,eachLimit:eachLimit$1,eachOf:eachOf$1,eachOfLimit:eachOfLimit$1,eachOfSeries:eachOfSeries$1,eachSeries:eachSeries$1,ensureAsync,every:every$1,everyLimit:everyLimit$1,everySeries:everySeries$1,filter:filter$1,filterLimit:filterLimit$1,filterSeries:filterSeries$1,forever:forever$1,groupBy,groupByLimit:groupByLimit$1,groupBySeries,log,map:map$1,mapLimit:mapLimit$1,mapSeries:mapSeries$1,mapValues,mapValuesLimit:mapValuesLimit$1,mapValuesSeries,memoize,nextTick,parallel,parallelLimit,priorityQueue,queue,race:race$1,reduce:reduce$1,reduceRight,reflect,reflectAll,reject:reject$1,rejectLimit:rejectLimit$1,rejectSeries:rejectSeries$1,retry,retryable,seq,series,setImmediate:setImmediate$1,some:some$1,someLimit:someLimit$1,someSeries:someSeries$1,sortBy:sortBy$1,timeout,times,timesLimit,timesSeries,transform,tryEach:tryEach$1,unmemoize,until,waterfall:waterfall$1,whilst:whilst$1,all:every$1,allLimit:everyLimit$1,allSeries:everySeries$1,any:some$1,anyLimit:someLimit$1,anySeries:someSeries$1,find:detect$1,findLimit:detectLimit$1,findSeries:detectSeries$1,flatMap:concat$1,flatMapLimit:concatLimit$1,flatMapSeries:concatSeries$1,forEach:each,forEachSeries:eachSeries$1,forEachLimit:eachLimit$1,forEachOf:eachOf$1,forEachOfSeries:eachOfSeries$1,forEachOfLimit:eachOfLimit$1,inject:reduce$1,foldl:reduce$1,foldr:reduceRight,select:filter$1,selectLimit:filterLimit$1,selectSeries:filterSeries$1,wrapSync:asyncify,during:whilst$1,doDuring:doWhilst$1};exports3.all=every$1,exports3.allLimit=everyLimit$1,exports3.allSeries=everySeries$1,exports3.any=some$1,exports3.anyLimit=someLimit$1,exports3.anySeries=someSeries$1,exports3.apply=apply,exports3.applyEach=applyEach,exports3.applyEachSeries=applyEachSeries,exports3.asyncify=asyncify,exports3.auto=auto,exports3.autoInject=autoInject,exports3.cargo=cargo$1,exports3.cargoQueue=cargo,exports3.compose=compose,exports3.concat=concat$1,exports3.concatLimit=concatLimit$1,exports3.concatSeries=concatSeries$1,exports3.constant=constant$1,exports3.default=index,exports3.detect=detect$1,exports3.detectLimit=detectLimit$1,exports3.detectSeries=detectSeries$1,exports3.dir=dir,exports3.doDuring=doWhilst$1,exports3.doUntil=doUntil,exports3.doWhilst=doWhilst$1,exports3.during=whilst$1,exports3.each=each,exports3.eachLimit=eachLimit$1,exports3.eachOf=eachOf$1,exports3.eachOfLimit=eachOfLimit$1,exports3.eachOfSeries=eachOfSeries$1,exports3.eachSeries=eachSeries$1,exports3.ensureAsync=ensureAsync,exports3.every=every$1,exports3.everyLimit=everyLimit$1,exports3.everySeries=everySeries$1,exports3.filter=filter$1,exports3.filterLimit=filterLimit$1,exports3.filterSeries=filterSeries$1,exports3.find=detect$1,exports3.findLimit=detectLimit$1,exports3.findSeries=detectSeries$1,exports3.flatMap=concat$1,exports3.flatMapLimit=concatLimit$1,exports3.flatMapSeries=concatSeries$1,exports3.foldl=reduce$1,exports3.foldr=reduceRight,exports3.forEach=each,exports3.forEachLimit=eachLimit$1,exports3.forEachOf=eachOf$1,exports3.forEachOfLimit=eachOfLimit$1,exports3.forEachOfSeries=eachOfSeries$1,exports3.forEachSeries=eachSeries$1,exports3.forever=forever$1,exports3.groupBy=groupBy,exports3.groupByLimit=groupByLimit$1,exports3.groupBySeries=groupBySeries,exports3.inject=reduce$1,exports3.log=log,exports3.map=map$1,exports3.mapLimit=mapLimit$1,exports3.mapSeries=mapSeries$1,exports3.mapValues=mapValues,exports3.mapValuesLimit=mapValuesLimit$1,exports3.mapValuesSeries=mapValuesSeries,exports3.memoize=memoize,exports3.nextTick=nextTick,exports3.parallel=parallel,exports3.parallelLimit=parallelLimit,exports3.priorityQueue=priorityQueue,exports3.queue=queue,exports3.race=race$1,exports3.reduce=reduce$1,exports3.reduceRight=reduceRight,exports3.reflect=reflect,exports3.reflectAll=reflectAll,exports3.reject=reject$1,exports3.rejectLimit=rejectLimit$1,exports3.rejectSeries=rejectSeries$1,exports3.retry=retry,exports3.retryable=retryable,exports3.select=filter$1,exports3.selectLimit=filterLimit$1,exports3.selectSeries=filterSeries$1,exports3.seq=seq,exports3.series=series,exports3.setImmediate=setImmediate$1,exports3.some=some$1,exports3.someLimit=someLimit$1,exports3.someSeries=someSeries$1,exports3.sortBy=sortBy$1,exports3.timeout=timeout,exports3.times=times,exports3.timesLimit=timesLimit,exports3.timesSeries=timesSeries,exports3.transform=transform,exports3.tryEach=tryEach$1,exports3.unmemoize=unmemoize,exports3.until=until,exports3.waterfall=waterfall$1,exports3.whilst=whilst$1,exports3.wrapSync=asyncify,Object.defineProperty(exports3,"__esModule",{value:!0})}))}});var require_common=__commonJS({"node_modules/portfinder/node_modules/debug/src/common.js"(exports2,module2){function setup(env){createDebug.debug=createDebug,createDebug.default=createDebug,createDebug.coerce=coerce,createDebug.disable=disable,createDebug.enable=enable,createDebug.enabled=enabled,createDebug.humanize=require_ms5(),createDebug.destroy=destroy,Object.keys(env).forEach(key=>{createDebug[key]=env[key]}),createDebug.names=[],createDebug.skips=[],createDebug.formatters={};function selectColor(namespace){let hash=0;for(let i=0;i<namespace.length;i++)hash=(hash<<5)-hash+namespace.charCodeAt(i),hash|=0;return createDebug.colors[Math.abs(hash)%createDebug.colors.length]}createDebug.selectColor=selectColor;function createDebug(namespace){let prevTime,enableOverride=null,namespacesCache,enabledCache;function debug(...args){if(!debug.enabled)return;let self2=debug,curr=Number(new Date),ms=curr-(prevTime||curr);self2.diff=ms,self2.prev=prevTime,self2.curr=curr,prevTime=curr,args[0]=createDebug.coerce(args[0]),typeof args[0]!="string"&&args.unshift("%O");let index=0;args[0]=args[0].replace(/%([a-zA-Z%])/g,(match,format)=>{if(match==="%%")return"%";index++;let formatter=createDebug.formatters[format];if(typeof formatter=="function"){let val=args[index];match=formatter.call(self2,val),args.splice(index,1),index--}return match}),createDebug.formatArgs.call(self2,args),(self2.log||createDebug.log).apply(self2,args)}return debug.namespace=namespace,debug.useColors=createDebug.useColors(),debug.color=createDebug.selectColor(namespace),debug.extend=extend,debug.destroy=createDebug.destroy,Object.defineProperty(debug,"enabled",{enumerable:!0,configurable:!1,get:()=>enableOverride!==null?enableOverride:(namespacesCache!==createDebug.namespaces&&(namespacesCache=createDebug.namespaces,enabledCache=createDebug.enabled(namespace)),enabledCache),set:v=>{enableOverride=v}}),typeof createDebug.init=="function"&&createDebug.init(debug),debug}function extend(namespace,delimiter){let newDebug=createDebug(this.namespace+(typeof delimiter>"u"?":":delimiter)+namespace);return newDebug.log=this.log,newDebug}function enable(namespaces){createDebug.save(namespaces),createDebug.namespaces=namespaces,createDebug.names=[],createDebug.skips=[];let split=(typeof namespaces=="string"?namespaces:"").trim().replace(/\s+/g,",").split(",").filter(Boolean);for(let ns of split)ns[0]==="-"?createDebug.skips.push(ns.slice(1)):createDebug.names.push(ns)}function matchesTemplate(search,template){let searchIndex=0,templateIndex=0,starIndex=-1,matchIndex=0;for(;searchIndex<search.length;)if(templateIndex<template.length&&(template[templateIndex]===search[searchIndex]||template[templateIndex]==="*"))template[templateIndex]==="*"?(starIndex=templateIndex,matchIndex=searchIndex,templateIndex++):(searchIndex++,templateIndex++);else if(starIndex!==-1)templateIndex=starIndex+1,matchIndex++,searchIndex=matchIndex;else return!1;for(;templateIndex<template.length&&template[templateIndex]==="*";)templateIndex++;return templateIndex===template.length}function disable(){let namespaces=[...createDebug.names,...createDebug.skips.map(namespace=>"-"+namespace)].join(",");return createDebug.enable(""),namespaces}function enabled(name){for(let skip of createDebug.skips)if(matchesTemplate(name,skip))return!1;for(let ns of createDebug.names)if(matchesTemplate(name,ns))return!0;return!1}function coerce(val){return val instanceof Error?val.stack||val.message:val}function destroy(){console.warn("Instance method `debug.destroy()` is deprecated and no longer does anything. It will be removed in the next major version of `debug`.")}return createDebug.enable(createDebug.load()),createDebug}module2.exports=setup}});var require_browser5=__commonJS({"node_modules/portfinder/node_modules/debug/src/browser.js"(exports2,module2){exports2.formatArgs=formatArgs;exports2.save=save;exports2.load=load2;exports2.useColors=useColors;exports2.storage=localstorage();exports2.destroy=(()=>{let warned=!1;return()=>{warned||(warned=!0,console.warn("Instance method `debug.destroy()` is deprecated and no longer does anything. It will be removed in the next major version of `debug`."))}})();exports2.colors=["#0000CC","#0000FF","#0033CC","#0033FF","#0066CC","#0066FF","#0099CC","#0099FF","#00CC00","#00CC33","#00CC66","#00CC99","#00CCCC","#00CCFF","#3300CC","#3300FF","#3333CC","#3333FF","#3366CC","#3366FF","#3399CC","#3399FF","#33CC00","#33CC33","#33CC66","#33CC99","#33CCCC","#33CCFF","#6600CC","#6600FF","#6633CC","#6633FF","#66CC00","#66CC33","#9900CC","#9900FF","#9933CC","#9933FF","#99CC00","#99CC33","#CC0000","#CC0033","#CC0066","#CC0099","#CC00CC","#CC00FF","#CC3300","#CC3333","#CC3366","#CC3399","#CC33CC","#CC33FF","#CC6600","#CC6633","#CC9900","#CC9933","#CCCC00","#CCCC33","#FF0000","#FF0033","#FF0066","#FF0099","#FF00CC","#FF00FF","#FF3300","#FF3333","#FF3366","#FF3399","#FF33CC","#FF33FF","#FF6600","#FF6633","#FF9900","#FF9933","#FFCC00","#FFCC33"];function useColors(){if(typeof window<"u"&&window.process&&(window.process.type==="renderer"||window.process.__nwjs))return!0;if(typeof navigator<"u"&&navigator.userAgent&&navigator.userAgent.toLowerCase().match(/(edge|trident)\/(\d+)/))return!1;let m;return typeof document<"u"&&document.documentElement&&document.documentElement.style&&document.documentElement.style.WebkitAppearance||typeof window<"u"&&window.console&&(window.console.firebug||window.console.exception&&window.console.table)||typeof navigator<"u"&&navigator.userAgent&&(m=navigator.userAgent.toLowerCase().match(/firefox\/(\d+)/))&&parseInt(m[1],10)>=31||typeof navigator<"u"&&navigator.userAgent&&navigator.userAgent.toLowerCase().match(/applewebkit\/(\d+)/)}function formatArgs(args){if(args[0]=(this.useColors?"%c":"")+this.namespace+(this.useColors?" %c":" ")+args[0]+(this.useColors?"%c ":" ")+"+"+module2.exports.humanize(this.diff),!this.useColors)return;let c="color: "+this.color;args.splice(1,0,c,"color: inherit");let index=0,lastC=0;args[0].replace(/%[a-zA-Z%]/g,match=>{match!=="%%"&&(index++,match==="%c"&&(lastC=index))}),args.splice(lastC,0,c)}exports2.log=console.debug||console.log||(()=>{});function save(namespaces){try{namespaces?exports2.storage.setItem("debug",namespaces):exports2.storage.removeItem("debug")}catch{}}function load2(){let r;try{r=exports2.storage.getItem("debug")||exports2.storage.getItem("DEBUG")}catch{}return!r&&typeof process<"u"&&"env"in process&&(r=process.env.DEBUG),r}function localstorage(){try{return localStorage}catch{}}module2.exports=require_common()(exports2);var{formatters}=module2.exports;formatters.j=function(v){try{return JSON.stringify(v)}catch(error){return"[UnexpectedJSONParseError]: "+error.message}}}});var require_has_flag2=__commonJS({"node_modules/has-flag/index.js"(exports2,module2){"use strict";module2.exports=(flag,argv=process.argv)=>{let prefix=flag.startsWith("-")?"":flag.length===1?"-":"--",position=argv.indexOf(prefix+flag),terminatorPosition=argv.indexOf("--");return position!==-1&&(terminatorPosition===-1||position<terminatorPosition)}}});var require_supports_color=__commonJS({"node_modules/supports-color/index.js"(exports2,module2){"use strict";var os=require("os"),tty=require("tty"),hasFlag=require_has_flag2(),{env}=process,forceColor;hasFlag("no-color")||hasFlag("no-colors")||hasFlag("color=false")||hasFlag("color=never")?forceColor=0:(hasFlag("color")||hasFlag("colors")||hasFlag("color=true")||hasFlag("color=always"))&&(forceColor=1);"FORCE_COLOR"in env&&(env.FORCE_COLOR==="true"?forceColor=1:env.FORCE_COLOR==="false"?forceColor=0:forceColor=env.FORCE_COLOR.length===0?1:Math.min(parseInt(env.FORCE_COLOR,10),3));function translateLevel(level){return level===0?!1:{level,hasBasic:!0,has256:level>=2,has16m:level>=3}}function supportsColor(haveStream,streamIsTTY){if(forceColor===0)return 0;if(hasFlag("color=16m")||hasFlag("color=full")||hasFlag("color=truecolor"))return 3;if(hasFlag("color=256"))return 2;if(haveStream&&!streamIsTTY&&forceColor===void 0)return 0;let min=forceColor||0;if(env.TERM==="dumb")return min;if(process.platform==="win32"){let osRelease=os.release().split(".");return Number(osRelease[0])>=10&&Number(osRelease[2])>=10586?Number(osRelease[2])>=14931?3:2:1}if("CI"in env)return["TRAVIS","CIRCLECI","APPVEYOR","GITLAB_CI","GITHUB_ACTIONS","BUILDKITE"].some(sign=>sign in env)||env.CI_NAME==="codeship"?1:min;if("TEAMCITY_VERSION"in env)return/^(9\.(0*[1-9]\d*)\.|\d{2,}\.)/.test(env.TEAMCITY_VERSION)?1:0;if(env.COLORTERM==="truecolor")return 3;if("TERM_PROGRAM"in env){let version=parseInt((env.TERM_PROGRAM_VERSION||"").split(".")[0],10);switch(env.TERM_PROGRAM){case"iTerm.app":return version>=3?3:2;case"Apple_Terminal":return 2}}return/-256(color)?$/i.test(env.TERM)?2:/^screen|^xterm|^vt100|^vt220|^rxvt|color|ansi|cygwin|linux/i.test(env.TERM)||"COLORTERM"in env?1:min}function getSupportLevel(stream){let level=supportsColor(stream,stream&&stream.isTTY);return translateLevel(level)}module2.exports={supportsColor:getSupportLevel,stdout:translateLevel(supportsColor(!0,tty.isatty(1))),stderr:translateLevel(supportsColor(!0,tty.isatty(2)))}}});var require_node5=__commonJS({"node_modules/portfinder/node_modules/debug/src/node.js"(exports2,module2){var tty=require("tty"),util=require("util");exports2.init=init;exports2.log=log;exports2.formatArgs=formatArgs;exports2.save=save;exports2.load=load2;exports2.useColors=useColors;exports2.destroy=util.deprecate(()=>{},"Instance method `debug.destroy()` is deprecated and no longer does anything. It will be removed in the next major version of `debug`.");exports2.colors=[6,2,3,4,5,1];try{let supportsColor=require_supports_color();supportsColor&&(supportsColor.stderr||supportsColor).level>=2&&(exports2.colors=[20,21,26,27,32,33,38,39,40,41,42,43,44,45,56,57,62,63,68,69,74,75,76,77,78,79,80,81,92,93,98,99,112,113,128,129,134,135,148,149,160,161,162,163,164,165,166,167,168,169,170,171,172,173,178,179,184,185,196,197,198,199,200,201,202,203,204,205,206,207,208,209,214,215,220,221])}catch{}exports2.inspectOpts=Object.keys(process.env).filter(key=>/^debug_/i.test(key)).reduce((obj,key)=>{let prop=key.substring(6).toLowerCase().replace(/_([a-z])/g,(_,k)=>k.toUpperCase()),val=process.env[key];return/^(yes|on|true|enabled)$/i.test(val)?val=!0:/^(no|off|false|disabled)$/i.test(val)?val=!1:val==="null"?val=null:val=Number(val),obj[prop]=val,obj},{});function useColors(){return"colors"in exports2.inspectOpts?!!exports2.inspectOpts.colors:tty.isatty(process.stderr.fd)}function formatArgs(args){let{namespace:name,useColors:useColors2}=this;if(useColors2){let c=this.color,colorCode="\x1B[3"+(c<8?c:"8;5;"+c),prefix=` ${colorCode};1m${name} \x1B[0m`;args[0]=prefix+args[0].split(`
|
|
@@ -232,9 +232,12 @@ GFS4: `),console.error(m)});fs[gracefulQueue]||(queue=global[gracefulQueue]||[],
|
|
|
232
232
|
see https://github.com/jprichardson/node-fs-extra/issues/269`,"Warning","fs-extra-WARN0001");let{srcStat,destStat}=await stat.checkPaths(src,dest,"copy",opts);if(await stat.checkParentPaths(src,srcStat,dest,"copy"),!await runFilter(src,dest,opts))return;let destParent=path.dirname(dest);await pathExists(destParent)||await mkdirs(destParent),await getStatsAndPerformCopy(destStat,src,dest,opts)}async function runFilter(src,dest,opts){return opts.filter?opts.filter(src,dest):!0}async function getStatsAndPerformCopy(destStat,src,dest,opts){let srcStat=await(opts.dereference?fs.stat:fs.lstat)(src);if(srcStat.isDirectory())return onDir(srcStat,destStat,src,dest,opts);if(srcStat.isFile()||srcStat.isCharacterDevice()||srcStat.isBlockDevice())return onFile(srcStat,destStat,src,dest,opts);if(srcStat.isSymbolicLink())return onLink(destStat,src,dest,opts);throw srcStat.isSocket()?new Error(`Cannot copy a socket file: ${src}`):srcStat.isFIFO()?new Error(`Cannot copy a FIFO pipe: ${src}`):new Error(`Unknown file: ${src}`)}async function onFile(srcStat,destStat,src,dest,opts){if(!destStat)return copyFile(srcStat,src,dest,opts);if(opts.overwrite)return await fs.unlink(dest),copyFile(srcStat,src,dest,opts);if(opts.errorOnExist)throw new Error(`'${dest}' already exists`)}async function copyFile(srcStat,src,dest,opts){if(await fs.copyFile(src,dest),opts.preserveTimestamps){fileIsNotWritable(srcStat.mode)&&await makeFileWritable(dest,srcStat.mode);let updatedSrcStat=await fs.stat(src);await utimesMillis(dest,updatedSrcStat.atime,updatedSrcStat.mtime)}return fs.chmod(dest,srcStat.mode)}function fileIsNotWritable(srcMode){return(srcMode&128)===0}function makeFileWritable(dest,srcMode){return fs.chmod(dest,srcMode|128)}async function onDir(srcStat,destStat,src,dest,opts){destStat||await fs.mkdir(dest),await asyncIteratorConcurrentProcess(await fs.opendir(src),async item=>{let srcItem=path.join(src,item.name),destItem=path.join(dest,item.name);if(await runFilter(srcItem,destItem,opts)){let{destStat:destStat2}=await stat.checkPaths(srcItem,destItem,"copy",opts);await getStatsAndPerformCopy(destStat2,srcItem,destItem,opts)}}),destStat||await fs.chmod(dest,srcStat.mode)}async function onLink(destStat,src,dest,opts){let resolvedSrc=await fs.readlink(src);if(opts.dereference&&(resolvedSrc=path.resolve(process.cwd(),resolvedSrc)),!destStat)return fs.symlink(resolvedSrc,dest);let resolvedDest=null;try{resolvedDest=await fs.readlink(dest)}catch(e){if(e.code==="EINVAL"||e.code==="UNKNOWN")return fs.symlink(resolvedSrc,dest);throw e}if(opts.dereference&&(resolvedDest=path.resolve(process.cwd(),resolvedDest)),resolvedSrc!==resolvedDest){if(stat.isSrcSubdir(resolvedSrc,resolvedDest))throw new Error(`Cannot copy '${resolvedSrc}' to a subdirectory of itself, '${resolvedDest}'.`);if(stat.isSrcSubdir(resolvedDest,resolvedSrc))throw new Error(`Cannot overwrite '${resolvedDest}' with '${resolvedSrc}'.`)}return await fs.unlink(dest),fs.symlink(resolvedSrc,dest)}module2.exports=copy}});var require_copy_sync=__commonJS({"node_modules/fs-extra/lib/copy/copy-sync.js"(exports2,module2){"use strict";var fs=require_graceful_fs(),path=require("path"),mkdirsSync=require_mkdirs().mkdirsSync,utimesMillisSync=require_utimes().utimesMillisSync,stat=require_stat();function copySync(src,dest,opts){typeof opts=="function"&&(opts={filter:opts}),opts=opts||{},opts.clobber="clobber"in opts?!!opts.clobber:!0,opts.overwrite="overwrite"in opts?!!opts.overwrite:opts.clobber,opts.preserveTimestamps&&process.arch==="ia32"&&process.emitWarning(`Using the preserveTimestamps option in 32-bit node is not recommended;
|
|
233
233
|
|
|
234
234
|
see https://github.com/jprichardson/node-fs-extra/issues/269`,"Warning","fs-extra-WARN0002");let{srcStat,destStat}=stat.checkPathsSync(src,dest,"copy",opts);if(stat.checkParentPathsSync(src,srcStat,dest,"copy"),opts.filter&&!opts.filter(src,dest))return;let destParent=path.dirname(dest);return fs.existsSync(destParent)||mkdirsSync(destParent),getStats(destStat,src,dest,opts)}function getStats(destStat,src,dest,opts){let srcStat=(opts.dereference?fs.statSync:fs.lstatSync)(src);if(srcStat.isDirectory())return onDir(srcStat,destStat,src,dest,opts);if(srcStat.isFile()||srcStat.isCharacterDevice()||srcStat.isBlockDevice())return onFile(srcStat,destStat,src,dest,opts);if(srcStat.isSymbolicLink())return onLink(destStat,src,dest,opts);throw srcStat.isSocket()?new Error(`Cannot copy a socket file: ${src}`):srcStat.isFIFO()?new Error(`Cannot copy a FIFO pipe: ${src}`):new Error(`Unknown file: ${src}`)}function onFile(srcStat,destStat,src,dest,opts){return destStat?mayCopyFile(srcStat,src,dest,opts):copyFile(srcStat,src,dest,opts)}function mayCopyFile(srcStat,src,dest,opts){if(opts.overwrite)return fs.unlinkSync(dest),copyFile(srcStat,src,dest,opts);if(opts.errorOnExist)throw new Error(`'${dest}' already exists`)}function copyFile(srcStat,src,dest,opts){return fs.copyFileSync(src,dest),opts.preserveTimestamps&&handleTimestamps(srcStat.mode,src,dest),setDestMode(dest,srcStat.mode)}function handleTimestamps(srcMode,src,dest){return fileIsNotWritable(srcMode)&&makeFileWritable(dest,srcMode),setDestTimestamps(src,dest)}function fileIsNotWritable(srcMode){return(srcMode&128)===0}function makeFileWritable(dest,srcMode){return setDestMode(dest,srcMode|128)}function setDestMode(dest,srcMode){return fs.chmodSync(dest,srcMode)}function setDestTimestamps(src,dest){let updatedSrcStat=fs.statSync(src);return utimesMillisSync(dest,updatedSrcStat.atime,updatedSrcStat.mtime)}function onDir(srcStat,destStat,src,dest,opts){return destStat?copyDir(src,dest,opts):mkDirAndCopy(srcStat.mode,src,dest,opts)}function mkDirAndCopy(srcMode,src,dest,opts){return fs.mkdirSync(dest),copyDir(src,dest,opts),setDestMode(dest,srcMode)}function copyDir(src,dest,opts){let dir=fs.opendirSync(src);try{let dirent;for(;(dirent=dir.readSync())!==null;)copyDirItem(dirent.name,src,dest,opts)}finally{dir.closeSync()}}function copyDirItem(item,src,dest,opts){let srcItem=path.join(src,item),destItem=path.join(dest,item);if(opts.filter&&!opts.filter(srcItem,destItem))return;let{destStat}=stat.checkPathsSync(srcItem,destItem,"copy",opts);return getStats(destStat,srcItem,destItem,opts)}function onLink(destStat,src,dest,opts){let resolvedSrc=fs.readlinkSync(src);if(opts.dereference&&(resolvedSrc=path.resolve(process.cwd(),resolvedSrc)),destStat){let resolvedDest;try{resolvedDest=fs.readlinkSync(dest)}catch(err){if(err.code==="EINVAL"||err.code==="UNKNOWN")return fs.symlinkSync(resolvedSrc,dest);throw err}if(opts.dereference&&(resolvedDest=path.resolve(process.cwd(),resolvedDest)),resolvedSrc!==resolvedDest){if(stat.isSrcSubdir(resolvedSrc,resolvedDest))throw new Error(`Cannot copy '${resolvedSrc}' to a subdirectory of itself, '${resolvedDest}'.`);if(stat.isSrcSubdir(resolvedDest,resolvedSrc))throw new Error(`Cannot overwrite '${resolvedDest}' with '${resolvedSrc}'.`)}return copyLink(resolvedSrc,dest)}else return fs.symlinkSync(resolvedSrc,dest)}function copyLink(resolvedSrc,dest){return fs.unlinkSync(dest),fs.symlinkSync(resolvedSrc,dest)}module2.exports=copySync}});var require_copy2=__commonJS({"node_modules/fs-extra/lib/copy/index.js"(exports2,module2){"use strict";var u=require_universalify().fromPromise;module2.exports={copy:u(require_copy()),copySync:require_copy_sync()}}});var require_remove=__commonJS({"node_modules/fs-extra/lib/remove/index.js"(exports2,module2){"use strict";var fs=require_graceful_fs(),u=require_universalify().fromCallback;function remove(path,callback){fs.rm(path,{recursive:!0,force:!0},callback)}function removeSync(path){fs.rmSync(path,{recursive:!0,force:!0})}module2.exports={remove:u(remove),removeSync}}});var require_empty=__commonJS({"node_modules/fs-extra/lib/empty/index.js"(exports2,module2){"use strict";var u=require_universalify().fromPromise,fs=require_fs(),path=require("path"),mkdir=require_mkdirs(),remove=require_remove(),emptyDir=u(async function(dir){let items;try{items=await fs.readdir(dir)}catch{return mkdir.mkdirs(dir)}return Promise.all(items.map(item=>remove.remove(path.join(dir,item))))});function emptyDirSync(dir){let items;try{items=fs.readdirSync(dir)}catch{return mkdir.mkdirsSync(dir)}items.forEach(item=>{item=path.join(dir,item),remove.removeSync(item)})}module2.exports={emptyDirSync,emptydirSync:emptyDirSync,emptyDir,emptydir:emptyDir}}});var require_file=__commonJS({"node_modules/fs-extra/lib/ensure/file.js"(exports2,module2){"use strict";var u=require_universalify().fromPromise,path=require("path"),fs=require_fs(),mkdir=require_mkdirs();async function createFile(file){let stats;try{stats=await fs.stat(file)}catch{}if(stats&&stats.isFile())return;let dir=path.dirname(file),dirStats=null;try{dirStats=await fs.stat(dir)}catch(err){if(err.code==="ENOENT"){await mkdir.mkdirs(dir),await fs.writeFile(file,"");return}else throw err}dirStats.isDirectory()?await fs.writeFile(file,""):await fs.readdir(dir)}function createFileSync(file){let stats;try{stats=fs.statSync(file)}catch{}if(stats&&stats.isFile())return;let dir=path.dirname(file);try{fs.statSync(dir).isDirectory()||fs.readdirSync(dir)}catch(err){if(err&&err.code==="ENOENT")mkdir.mkdirsSync(dir);else throw err}fs.writeFileSync(file,"")}module2.exports={createFile:u(createFile),createFileSync}}});var require_link=__commonJS({"node_modules/fs-extra/lib/ensure/link.js"(exports2,module2){"use strict";var u=require_universalify().fromPromise,path=require("path"),fs=require_fs(),mkdir=require_mkdirs(),{pathExists}=require_path_exists(),{areIdentical}=require_stat();async function createLink(srcpath,dstpath){let dstStat;try{dstStat=await fs.lstat(dstpath,{bigint:!0})}catch{}let srcStat;try{srcStat=await fs.lstat(srcpath,{bigint:!0})}catch(err){throw err.message=err.message.replace("lstat","ensureLink"),err}if(dstStat&&areIdentical(srcStat,dstStat))return;let dir=path.dirname(dstpath);await pathExists(dir)||await mkdir.mkdirs(dir),await fs.link(srcpath,dstpath)}function createLinkSync(srcpath,dstpath){let dstStat;try{dstStat=fs.lstatSync(dstpath,{bigint:!0})}catch{}try{let srcStat=fs.lstatSync(srcpath,{bigint:!0});if(dstStat&&areIdentical(srcStat,dstStat))return}catch(err){throw err.message=err.message.replace("lstat","ensureLink"),err}let dir=path.dirname(dstpath);return fs.existsSync(dir)||mkdir.mkdirsSync(dir),fs.linkSync(srcpath,dstpath)}module2.exports={createLink:u(createLink),createLinkSync}}});var require_symlink_paths=__commonJS({"node_modules/fs-extra/lib/ensure/symlink-paths.js"(exports2,module2){"use strict";var path=require("path"),fs=require_fs(),{pathExists}=require_path_exists(),u=require_universalify().fromPromise;async function symlinkPaths(srcpath,dstpath){if(path.isAbsolute(srcpath)){try{await fs.lstat(srcpath)}catch(err){throw err.message=err.message.replace("lstat","ensureSymlink"),err}return{toCwd:srcpath,toDst:srcpath}}let dstdir=path.dirname(dstpath),relativeToDst=path.join(dstdir,srcpath);if(await pathExists(relativeToDst))return{toCwd:relativeToDst,toDst:srcpath};try{await fs.lstat(srcpath)}catch(err){throw err.message=err.message.replace("lstat","ensureSymlink"),err}return{toCwd:srcpath,toDst:path.relative(dstdir,srcpath)}}function symlinkPathsSync(srcpath,dstpath){if(path.isAbsolute(srcpath)){if(!fs.existsSync(srcpath))throw new Error("absolute srcpath does not exist");return{toCwd:srcpath,toDst:srcpath}}let dstdir=path.dirname(dstpath),relativeToDst=path.join(dstdir,srcpath);if(fs.existsSync(relativeToDst))return{toCwd:relativeToDst,toDst:srcpath};if(!fs.existsSync(srcpath))throw new Error("relative srcpath does not exist");return{toCwd:srcpath,toDst:path.relative(dstdir,srcpath)}}module2.exports={symlinkPaths:u(symlinkPaths),symlinkPathsSync}}});var require_symlink_type=__commonJS({"node_modules/fs-extra/lib/ensure/symlink-type.js"(exports2,module2){"use strict";var fs=require_fs(),u=require_universalify().fromPromise;async function symlinkType(srcpath,type){if(type)return type;let stats;try{stats=await fs.lstat(srcpath)}catch{return"file"}return stats&&stats.isDirectory()?"dir":"file"}function symlinkTypeSync(srcpath,type){if(type)return type;let stats;try{stats=fs.lstatSync(srcpath)}catch{return"file"}return stats&&stats.isDirectory()?"dir":"file"}module2.exports={symlinkType:u(symlinkType),symlinkTypeSync}}});var require_symlink=__commonJS({"node_modules/fs-extra/lib/ensure/symlink.js"(exports2,module2){"use strict";var u=require_universalify().fromPromise,path=require("path"),fs=require_fs(),{mkdirs,mkdirsSync}=require_mkdirs(),{symlinkPaths,symlinkPathsSync}=require_symlink_paths(),{symlinkType,symlinkTypeSync}=require_symlink_type(),{pathExists}=require_path_exists(),{areIdentical}=require_stat();async function createSymlink(srcpath,dstpath,type){let stats;try{stats=await fs.lstat(dstpath)}catch{}if(stats&&stats.isSymbolicLink()){let srcStat;if(path.isAbsolute(srcpath))srcStat=await fs.stat(srcpath,{bigint:!0});else{let dstdir=path.dirname(dstpath),relativeToDst=path.join(dstdir,srcpath);try{srcStat=await fs.stat(relativeToDst,{bigint:!0})}catch{srcStat=await fs.stat(srcpath,{bigint:!0})}}let dstStat=await fs.stat(dstpath,{bigint:!0});if(areIdentical(srcStat,dstStat))return}let relative=await symlinkPaths(srcpath,dstpath);srcpath=relative.toDst;let toType=await symlinkType(relative.toCwd,type),dir=path.dirname(dstpath);return await pathExists(dir)||await mkdirs(dir),fs.symlink(srcpath,dstpath,toType)}function createSymlinkSync(srcpath,dstpath,type){let stats;try{stats=fs.lstatSync(dstpath)}catch{}if(stats&&stats.isSymbolicLink()){let srcStat;if(path.isAbsolute(srcpath))srcStat=fs.statSync(srcpath,{bigint:!0});else{let dstdir=path.dirname(dstpath),relativeToDst=path.join(dstdir,srcpath);try{srcStat=fs.statSync(relativeToDst,{bigint:!0})}catch{srcStat=fs.statSync(srcpath,{bigint:!0})}}let dstStat=fs.statSync(dstpath,{bigint:!0});if(areIdentical(srcStat,dstStat))return}let relative=symlinkPathsSync(srcpath,dstpath);srcpath=relative.toDst,type=symlinkTypeSync(relative.toCwd,type);let dir=path.dirname(dstpath);return fs.existsSync(dir)||mkdirsSync(dir),fs.symlinkSync(srcpath,dstpath,type)}module2.exports={createSymlink:u(createSymlink),createSymlinkSync}}});var require_ensure=__commonJS({"node_modules/fs-extra/lib/ensure/index.js"(exports2,module2){"use strict";var{createFile,createFileSync}=require_file(),{createLink,createLinkSync}=require_link(),{createSymlink,createSymlinkSync}=require_symlink();module2.exports={createFile,createFileSync,ensureFile:createFile,ensureFileSync:createFileSync,createLink,createLinkSync,ensureLink:createLink,ensureLinkSync:createLinkSync,createSymlink,createSymlinkSync,ensureSymlink:createSymlink,ensureSymlinkSync:createSymlinkSync}}});var require_utils6=__commonJS({"node_modules/jsonfile/utils.js"(exports2,module2){function stringify(obj,{EOL=`
|
|
235
|
-
`,finalEOL=!0,replacer=null,spaces}={}){let EOF=finalEOL?EOL:"";return JSON.stringify(obj,replacer,spaces).replace(/\n/g,EOL)+EOF}function stripBom(content){return Buffer.isBuffer(content)&&(content=content.toString("utf8")),content.replace(/^\uFEFF/,"")}module2.exports={stringify,stripBom}}});var require_jsonfile=__commonJS({"node_modules/jsonfile/index.js"(exports2,module2){var _fs;try{_fs=require_graceful_fs()}catch{_fs=require("fs")}var universalify=require_universalify(),{stringify,stripBom}=require_utils6();async function _readFile(file,options={}){typeof options=="string"&&(options={encoding:options});let fs=options.fs||_fs,shouldThrow="throws"in options?options.throws:!0,data=await universalify.fromCallback(fs.readFile)(file,options);data=stripBom(data);let obj;try{obj=JSON.parse(data,options?options.reviver:null)}catch(err){if(shouldThrow)throw err.message=`${file}: ${err.message}`,err;return null}return obj}var readFile=universalify.fromPromise(_readFile);function readFileSync(file,options={}){typeof options=="string"&&(options={encoding:options});let fs=options.fs||_fs,shouldThrow="throws"in options?options.throws:!0;try{let content=fs.readFileSync(file,options);return content=stripBom(content),JSON.parse(content,options.reviver)}catch(err){if(shouldThrow)throw err.message=`${file}: ${err.message}`,err;return null}}async function _writeFile(file,obj,options={}){let fs=options.fs||_fs,str=stringify(obj,options);await universalify.fromCallback(fs.writeFile)(file,str,options)}var writeFile=universalify.fromPromise(_writeFile);function writeFileSync(file,obj,options={}){let fs=options.fs||_fs,str=stringify(obj,options);return fs.writeFileSync(file,str,options)}var jsonfile={readFile,readFileSync,writeFile,writeFileSync};module2.exports=jsonfile}});var require_jsonfile2=__commonJS({"node_modules/fs-extra/lib/json/jsonfile.js"(exports2,module2){"use strict";var jsonFile=require_jsonfile();module2.exports={readJson:jsonFile.readFile,readJsonSync:jsonFile.readFileSync,writeJson:jsonFile.writeFile,writeJsonSync:jsonFile.writeFileSync}}});var require_output_file=__commonJS({"node_modules/fs-extra/lib/output-file/index.js"(exports2,module2){"use strict";var u=require_universalify().fromPromise,fs=require_fs(),path=require("path"),mkdir=require_mkdirs(),pathExists=require_path_exists().pathExists;async function outputFile(file,data,encoding="utf-8"){let dir=path.dirname(file);return await pathExists(dir)||await mkdir.mkdirs(dir),fs.writeFile(file,data,encoding)}function outputFileSync(file,...args){let dir=path.dirname(file);fs.existsSync(dir)||mkdir.mkdirsSync(dir),fs.writeFileSync(file,...args)}module2.exports={outputFile:u(outputFile),outputFileSync}}});var require_output_json=__commonJS({"node_modules/fs-extra/lib/json/output-json.js"(exports2,module2){"use strict";var{stringify}=require_utils6(),{outputFile}=require_output_file();async function outputJson(file,data,options={}){let str=stringify(data,options);await outputFile(file,str,options)}module2.exports=outputJson}});var require_output_json_sync=__commonJS({"node_modules/fs-extra/lib/json/output-json-sync.js"(exports2,module2){"use strict";var{stringify}=require_utils6(),{outputFileSync}=require_output_file();function outputJsonSync(file,data,options){let str=stringify(data,options);outputFileSync(file,str,options)}module2.exports=outputJsonSync}});var require_json2=__commonJS({"node_modules/fs-extra/lib/json/index.js"(exports2,module2){"use strict";var u=require_universalify().fromPromise,jsonFile=require_jsonfile2();jsonFile.outputJson=u(require_output_json());jsonFile.outputJsonSync=require_output_json_sync();jsonFile.outputJSON=jsonFile.outputJson;jsonFile.outputJSONSync=jsonFile.outputJsonSync;jsonFile.writeJSON=jsonFile.writeJson;jsonFile.writeJSONSync=jsonFile.writeJsonSync;jsonFile.readJSON=jsonFile.readJson;jsonFile.readJSONSync=jsonFile.readJsonSync;module2.exports=jsonFile}});var require_move=__commonJS({"node_modules/fs-extra/lib/move/move.js"(exports2,module2){"use strict";var fs=require_fs(),path=require("path"),{copy}=require_copy2(),{remove}=require_remove(),{mkdirp}=require_mkdirs(),{pathExists}=require_path_exists(),stat=require_stat();async function move(src,dest,opts={}){let overwrite=opts.overwrite||opts.clobber||!1,{srcStat,isChangingCase=!1}=await stat.checkPaths(src,dest,"move",opts);await stat.checkParentPaths(src,srcStat,dest,"move");let destParent=path.dirname(dest);return path.parse(destParent).root!==destParent&&await mkdirp(destParent),doRename(src,dest,overwrite,isChangingCase)}async function doRename(src,dest,overwrite,isChangingCase){if(!isChangingCase){if(overwrite)await remove(dest);else if(await pathExists(dest))throw new Error("dest already exists.")}try{await fs.rename(src,dest)}catch(err){if(err.code!=="EXDEV")throw err;await moveAcrossDevice(src,dest,overwrite)}}async function moveAcrossDevice(src,dest,overwrite){return await copy(src,dest,{overwrite,errorOnExist:!0,preserveTimestamps:!0}),remove(src)}module2.exports=move}});var require_move_sync=__commonJS({"node_modules/fs-extra/lib/move/move-sync.js"(exports2,module2){"use strict";var fs=require_graceful_fs(),path=require("path"),copySync=require_copy2().copySync,removeSync=require_remove().removeSync,mkdirpSync=require_mkdirs().mkdirpSync,stat=require_stat();function moveSync(src,dest,opts){opts=opts||{};let overwrite=opts.overwrite||opts.clobber||!1,{srcStat,isChangingCase=!1}=stat.checkPathsSync(src,dest,"move",opts);return stat.checkParentPathsSync(src,srcStat,dest,"move"),isParentRoot(dest)||mkdirpSync(path.dirname(dest)),doRename(src,dest,overwrite,isChangingCase)}function isParentRoot(dest){let parent=path.dirname(dest);return path.parse(parent).root===parent}function doRename(src,dest,overwrite,isChangingCase){if(isChangingCase)return rename(src,dest,overwrite);if(overwrite)return removeSync(dest),rename(src,dest,overwrite);if(fs.existsSync(dest))throw new Error("dest already exists.");return rename(src,dest,overwrite)}function rename(src,dest,overwrite){try{fs.renameSync(src,dest)}catch(err){if(err.code!=="EXDEV")throw err;return moveAcrossDevice(src,dest,overwrite)}}function moveAcrossDevice(src,dest,overwrite){return copySync(src,dest,{overwrite,errorOnExist:!0,preserveTimestamps:!0}),removeSync(src)}module2.exports=moveSync}});var require_move2=__commonJS({"node_modules/fs-extra/lib/move/index.js"(exports2,module2){"use strict";var u=require_universalify().fromPromise;module2.exports={move:u(require_move()),moveSync:require_move_sync()}}});var require_lib3=__commonJS({"node_modules/fs-extra/lib/index.js"(exports2,module2){"use strict";module2.exports={...require_fs(),...require_copy2(),...require_empty(),...require_ensure(),...require_json2(),...require_mkdirs(),...require_move2(),...require_output_file(),...require_path_exists(),...require_remove()}}});var require_minimist=__commonJS({"node_modules/minimist/index.js"(exports2,module2){"use strict";function hasKey(obj,keys){var o=obj;keys.slice(0,-1).forEach(function(key2){o=o[key2]||{}});var key=keys[keys.length-1];return key in o}function isNumber(x){return typeof x=="number"||/^0x[0-9a-f]+$/i.test(x)?!0:/^[-+]?(?:\d+(?:\.\d*)?|\.\d+)(e[-+]?\d+)?$/.test(x)}function isConstructorOrProto(obj,key){return key==="constructor"&&typeof obj[key]=="function"||key==="__proto__"}module2.exports=function(args,opts){opts||(opts={});var flags={bools:{},strings:{},unknownFn:null};typeof opts.unknown=="function"&&(flags.unknownFn=opts.unknown),typeof opts.boolean=="boolean"&&opts.boolean?flags.allBools=!0:[].concat(opts.boolean).filter(Boolean).forEach(function(key2){flags.bools[key2]=!0});var aliases={};function aliasIsBoolean(key2){return aliases[key2].some(function(x){return flags.bools[x]})}Object.keys(opts.alias||{}).forEach(function(key2){aliases[key2]=[].concat(opts.alias[key2]),aliases[key2].forEach(function(x){aliases[x]=[key2].concat(aliases[key2].filter(function(y){return x!==y}))})}),[].concat(opts.string).filter(Boolean).forEach(function(key2){flags.strings[key2]=!0,aliases[key2]&&[].concat(aliases[key2]).forEach(function(k){flags.strings[k]=!0})});var defaults=opts.default||{},argv={_:[]};function argDefined(key2,arg2){return flags.allBools&&/^--[^=]+$/.test(arg2)||flags.strings[key2]||flags.bools[key2]||aliases[key2]}function setKey(obj,keys,value2){for(var o=obj,i2=0;i2<keys.length-1;i2++){var key2=keys[i2];if(isConstructorOrProto(o,key2))return;o[key2]===void 0&&(o[key2]={}),(o[key2]===Object.prototype||o[key2]===Number.prototype||o[key2]===String.prototype)&&(o[key2]={}),o[key2]===Array.prototype&&(o[key2]=[]),o=o[key2]}var lastKey=keys[keys.length-1];isConstructorOrProto(o,lastKey)||((o===Object.prototype||o===Number.prototype||o===String.prototype)&&(o={}),o===Array.prototype&&(o=[]),o[lastKey]===void 0||flags.bools[lastKey]||typeof o[lastKey]=="boolean"?o[lastKey]=value2:Array.isArray(o[lastKey])?o[lastKey].push(value2):o[lastKey]=[o[lastKey],value2])}function setArg(key2,val,arg2){if(!(arg2&&flags.unknownFn&&!argDefined(key2,arg2)&&flags.unknownFn(arg2)===!1)){var value2=!flags.strings[key2]&&isNumber(val)?Number(val):val;setKey(argv,key2.split("."),value2),(aliases[key2]||[]).forEach(function(x){setKey(argv,x.split("."),value2)})}}Object.keys(flags.bools).forEach(function(key2){setArg(key2,defaults[key2]===void 0?!1:defaults[key2])});var notFlags=[];args.indexOf("--")!==-1&&(notFlags=args.slice(args.indexOf("--")+1),args=args.slice(0,args.indexOf("--")));for(var i=0;i<args.length;i++){var arg=args[i],key,next;if(/^--.+=/.test(arg)){var m=arg.match(/^--([^=]+)=([\s\S]*)$/);key=m[1];var value=m[2];flags.bools[key]&&(value=value!=="false"),setArg(key,value,arg)}else if(/^--no-.+/.test(arg))key=arg.match(/^--no-(.+)/)[1],setArg(key,!1,arg);else if(/^--.+/.test(arg))key=arg.match(/^--(.+)/)[1],next=args[i+1],next!==void 0&&!/^(-|--)[^-]/.test(next)&&!flags.bools[key]&&!flags.allBools&&(!aliases[key]||!aliasIsBoolean(key))?(setArg(key,next,arg),i+=1):/^(true|false)$/.test(next)?(setArg(key,next==="true",arg),i+=1):setArg(key,flags.strings[key]?"":!0,arg);else if(/^-[^-]+/.test(arg)){for(var letters=arg.slice(1,-1).split(""),broken=!1,j=0;j<letters.length;j++){if(next=arg.slice(j+2),next==="-"){setArg(letters[j],next,arg);continue}if(/[A-Za-z]/.test(letters[j])&&next[0]==="="){setArg(letters[j],next.slice(1),arg),broken=!0;break}if(/[A-Za-z]/.test(letters[j])&&/-?\d+(\.\d*)?(e-?\d+)?$/.test(next)){setArg(letters[j],next,arg),broken=!0;break}if(letters[j+1]&&letters[j+1].match(/\W/)){setArg(letters[j],arg.slice(j+2),arg),broken=!0;break}else setArg(letters[j],flags.strings[letters[j]]?"":!0,arg)}key=arg.slice(-1)[0],!broken&&key!=="-"&&(args[i+1]&&!/^(-|--)[^-]/.test(args[i+1])&&!flags.bools[key]&&(!aliases[key]||!aliasIsBoolean(key))?(setArg(key,args[i+1],arg),i+=1):args[i+1]&&/^(true|false)$/.test(args[i+1])?(setArg(key,args[i+1]==="true",arg),i+=1):setArg(key,flags.strings[key]?"":!0,arg))}else if((!flags.unknownFn||flags.unknownFn(arg)!==!1)&&argv._.push(flags.strings._||!isNumber(arg)?arg:Number(arg)),opts.stopEarly){argv._.push.apply(argv._,args.slice(i+1));break}}return Object.keys(defaults).forEach(function(k){hasKey(argv,k.split("."))||(setKey(argv,k.split("."),defaults[k]),(aliases[k]||[]).forEach(function(x){setKey(argv,x.split("."),defaults[k])}))}),opts["--"]?argv["--"]=notFlags.slice():notFlags.forEach(function(k){argv._.push(k)}),argv}}});var require_packageInfo=__commonJS({"src/lib/packageInfo.js"(exports2,module2){var{readFileSync}=require("fs"),path=require("path");function getPackageVersion(){let packagePaths=[path.resolve(__dirname,"../package.json"),path.resolve(__dirname,"../../package.json")];for(let packagePath of packagePaths)try{return JSON.parse(readFileSync(packagePath,"utf8")).version}catch{}return"unknown"}module2.exports={getPackageVersion}}});var require_processShutdown=__commonJS({"src/lib/processShutdown.js"(exports2,module2){var WINDOWS_CONSOLE_SERVERS=new Set(["staticServer","fileExplorerServer","apiClientServer"]);function shouldWaitForConsoleChildShutdown(platform,serverName,signal){return platform==="win32"&&signal==="SIGINT"&&WINDOWS_CONSOLE_SERVERS.has(serverName)}function shouldExitImmediatelyOnShutdown(platform,signal){return platform==="win32"&&signal==="SIGINT"}function createManagedConsoleInput(options){let{platform,serverName,input,output}=options;if(platform!=="win32"||!WINDOWS_CONSOLE_SERVERS.has(serverName)||!input||input.isTTY!==!0||!output||output.isTTY!==!0)return null;let consumeInput=()=>{},closed=!1;return input.on("data",consumeInput),input.resume(),{close(){closed||(closed=!0,input.removeListener("data",consumeInput),input.pause())}}}module2.exports={shouldWaitForConsoleChildShutdown,shouldExitImmediatelyOnShutdown,createManagedConsoleInput}}});var require_mock_service_cli=__commonJS({"src/bin/mock-service-cli"(exports2){var colors=require_safe(),portfinder=require_portfinder(),{resolve}=require("path"),{existsSync}=require_lib3(),argv=require_minimist()(process.argv.slice(2)),{logger,parseHostAllowlist}=require_utils4(),{getPackageVersion}=require_packageInfo(),{shouldWaitForConsoleChildShutdown,createManagedConsoleInput}=require_processShutdown(),spawn=require("child_process").spawn,node=process.execPath;process.title="mock-service-cli";(argv.h||argv.help)&&(console.log(["usage: mock-service-cli [options]","","PS: Mock File\u4EC5\u652F\u6301commonjs\u89C4\u8303\u7684js\u3001cjs\u6587\u4EF6\uFF0C\u4E0D\u652F\u6301ES Module","options:"," -p --port Starting port for a free port search. API Client: 0 uses a system-assigned port. [8090]"," -d Specify mock directory, default [./mock] directory,"," Also watch js files changes and support hot reload"," -f --file Specify the input data source, support javascript "," The priority is over the directory watches"," -s --silent Suppress log messages from output"," -S --socket-server Whether start socket server or not, default false."," -a --api-stat Whether print api url and file path or not, default false."," -t --track Whether record operation info by write file, default false."," -o --cors-origin Allow origin by cors, list separated by commas, must not be * when withCredential is true",' .If specified, cors-headers will be "Authorization,Content-Type,Accept,Origin,User-Agent,DNT',' ,Cache-Control,X-Mx-ReqToken,X-Data-Type,X-Requested-With,X-Data-Type,X-Auth-Token,Token", default *.'," -H --cors-headers When start Mock Server, optionally provide CORS headers list separated by commas. default *"," -A --append-headers When start Mock/Web/Static Server, optionally add response headers list separated by commas."," For example: X-Frame-options=DENY,content-security-policy=frame-ancestors",""," -O --proxy-options Optionally provide proxy options list separated by commas."," -r --rewrite rewrite http or https request url prefix of proxy, default false.",""," -D --web-dir Enable web server, specify web directory, default [./dist] directory"," -P --web-port Web server port to use. If 0, look for open port. [9090]"," -b --web-baseurl Specify website public path when enabled web server.",""," -R --static-server Specify static resource file directory when enabled static server."," --watch-depth <n> Limit static server watch recursion depth (non-negative integer)."," --watch-interval <n> Static server polling interval in milliseconds (Windows Node 24+ only)."," --watch Enable static server file watching and live reload (off by default)."," --windows-hidden Read Windows OS hidden attributes for the index/explorer (off by default)."," --spa-fallback <path> Enable SPA fallback for -R mode using a root-relative HTML path."," --static-config <file> Self-contained static server configuration for root apps, mounts, proxy and fallback."," --host [file] Bind all web services to all IPv4 interfaces, or restrict them with an IP allowlist file."," --edit Enable file create, rename, and delete operations in file explorer."," --auth <password> Require a password for file explorer or API Client."," --api-client [dir] Start the HTTP API workbench. Default workspace: ./.mock-service-client",""," -h --help Print this list and exit."," -v --version Print the version and exit."," -w --open Open the available web page/API overview automatically, default false."," -e --explorer Enable file explorer server, specify directory to browse, default [./]."].join(`
|
|
236
|
-
`)),
|
|
237
|
-
|
|
235
|
+
`,finalEOL=!0,replacer=null,spaces}={}){let EOF=finalEOL?EOL:"";return JSON.stringify(obj,replacer,spaces).replace(/\n/g,EOL)+EOF}function stripBom(content){return Buffer.isBuffer(content)&&(content=content.toString("utf8")),content.replace(/^\uFEFF/,"")}module2.exports={stringify,stripBom}}});var require_jsonfile=__commonJS({"node_modules/jsonfile/index.js"(exports2,module2){var _fs;try{_fs=require_graceful_fs()}catch{_fs=require("fs")}var universalify=require_universalify(),{stringify,stripBom}=require_utils6();async function _readFile(file,options={}){typeof options=="string"&&(options={encoding:options});let fs=options.fs||_fs,shouldThrow="throws"in options?options.throws:!0,data=await universalify.fromCallback(fs.readFile)(file,options);data=stripBom(data);let obj;try{obj=JSON.parse(data,options?options.reviver:null)}catch(err){if(shouldThrow)throw err.message=`${file}: ${err.message}`,err;return null}return obj}var readFile=universalify.fromPromise(_readFile);function readFileSync(file,options={}){typeof options=="string"&&(options={encoding:options});let fs=options.fs||_fs,shouldThrow="throws"in options?options.throws:!0;try{let content=fs.readFileSync(file,options);return content=stripBom(content),JSON.parse(content,options.reviver)}catch(err){if(shouldThrow)throw err.message=`${file}: ${err.message}`,err;return null}}async function _writeFile(file,obj,options={}){let fs=options.fs||_fs,str=stringify(obj,options);await universalify.fromCallback(fs.writeFile)(file,str,options)}var writeFile=universalify.fromPromise(_writeFile);function writeFileSync(file,obj,options={}){let fs=options.fs||_fs,str=stringify(obj,options);return fs.writeFileSync(file,str,options)}var jsonfile={readFile,readFileSync,writeFile,writeFileSync};module2.exports=jsonfile}});var require_jsonfile2=__commonJS({"node_modules/fs-extra/lib/json/jsonfile.js"(exports2,module2){"use strict";var jsonFile=require_jsonfile();module2.exports={readJson:jsonFile.readFile,readJsonSync:jsonFile.readFileSync,writeJson:jsonFile.writeFile,writeJsonSync:jsonFile.writeFileSync}}});var require_output_file=__commonJS({"node_modules/fs-extra/lib/output-file/index.js"(exports2,module2){"use strict";var u=require_universalify().fromPromise,fs=require_fs(),path=require("path"),mkdir=require_mkdirs(),pathExists=require_path_exists().pathExists;async function outputFile(file,data,encoding="utf-8"){let dir=path.dirname(file);return await pathExists(dir)||await mkdir.mkdirs(dir),fs.writeFile(file,data,encoding)}function outputFileSync(file,...args){let dir=path.dirname(file);fs.existsSync(dir)||mkdir.mkdirsSync(dir),fs.writeFileSync(file,...args)}module2.exports={outputFile:u(outputFile),outputFileSync}}});var require_output_json=__commonJS({"node_modules/fs-extra/lib/json/output-json.js"(exports2,module2){"use strict";var{stringify}=require_utils6(),{outputFile}=require_output_file();async function outputJson(file,data,options={}){let str=stringify(data,options);await outputFile(file,str,options)}module2.exports=outputJson}});var require_output_json_sync=__commonJS({"node_modules/fs-extra/lib/json/output-json-sync.js"(exports2,module2){"use strict";var{stringify}=require_utils6(),{outputFileSync}=require_output_file();function outputJsonSync(file,data,options){let str=stringify(data,options);outputFileSync(file,str,options)}module2.exports=outputJsonSync}});var require_json2=__commonJS({"node_modules/fs-extra/lib/json/index.js"(exports2,module2){"use strict";var u=require_universalify().fromPromise,jsonFile=require_jsonfile2();jsonFile.outputJson=u(require_output_json());jsonFile.outputJsonSync=require_output_json_sync();jsonFile.outputJSON=jsonFile.outputJson;jsonFile.outputJSONSync=jsonFile.outputJsonSync;jsonFile.writeJSON=jsonFile.writeJson;jsonFile.writeJSONSync=jsonFile.writeJsonSync;jsonFile.readJSON=jsonFile.readJson;jsonFile.readJSONSync=jsonFile.readJsonSync;module2.exports=jsonFile}});var require_move=__commonJS({"node_modules/fs-extra/lib/move/move.js"(exports2,module2){"use strict";var fs=require_fs(),path=require("path"),{copy}=require_copy2(),{remove}=require_remove(),{mkdirp}=require_mkdirs(),{pathExists}=require_path_exists(),stat=require_stat();async function move(src,dest,opts={}){let overwrite=opts.overwrite||opts.clobber||!1,{srcStat,isChangingCase=!1}=await stat.checkPaths(src,dest,"move",opts);await stat.checkParentPaths(src,srcStat,dest,"move");let destParent=path.dirname(dest);return path.parse(destParent).root!==destParent&&await mkdirp(destParent),doRename(src,dest,overwrite,isChangingCase)}async function doRename(src,dest,overwrite,isChangingCase){if(!isChangingCase){if(overwrite)await remove(dest);else if(await pathExists(dest))throw new Error("dest already exists.")}try{await fs.rename(src,dest)}catch(err){if(err.code!=="EXDEV")throw err;await moveAcrossDevice(src,dest,overwrite)}}async function moveAcrossDevice(src,dest,overwrite){return await copy(src,dest,{overwrite,errorOnExist:!0,preserveTimestamps:!0}),remove(src)}module2.exports=move}});var require_move_sync=__commonJS({"node_modules/fs-extra/lib/move/move-sync.js"(exports2,module2){"use strict";var fs=require_graceful_fs(),path=require("path"),copySync=require_copy2().copySync,removeSync=require_remove().removeSync,mkdirpSync=require_mkdirs().mkdirpSync,stat=require_stat();function moveSync(src,dest,opts){opts=opts||{};let overwrite=opts.overwrite||opts.clobber||!1,{srcStat,isChangingCase=!1}=stat.checkPathsSync(src,dest,"move",opts);return stat.checkParentPathsSync(src,srcStat,dest,"move"),isParentRoot(dest)||mkdirpSync(path.dirname(dest)),doRename(src,dest,overwrite,isChangingCase)}function isParentRoot(dest){let parent=path.dirname(dest);return path.parse(parent).root===parent}function doRename(src,dest,overwrite,isChangingCase){if(isChangingCase)return rename(src,dest,overwrite);if(overwrite)return removeSync(dest),rename(src,dest,overwrite);if(fs.existsSync(dest))throw new Error("dest already exists.");return rename(src,dest,overwrite)}function rename(src,dest,overwrite){try{fs.renameSync(src,dest)}catch(err){if(err.code!=="EXDEV")throw err;return moveAcrossDevice(src,dest,overwrite)}}function moveAcrossDevice(src,dest,overwrite){return copySync(src,dest,{overwrite,errorOnExist:!0,preserveTimestamps:!0}),removeSync(src)}module2.exports=moveSync}});var require_move2=__commonJS({"node_modules/fs-extra/lib/move/index.js"(exports2,module2){"use strict";var u=require_universalify().fromPromise;module2.exports={move:u(require_move()),moveSync:require_move_sync()}}});var require_lib3=__commonJS({"node_modules/fs-extra/lib/index.js"(exports2,module2){"use strict";module2.exports={...require_fs(),...require_copy2(),...require_empty(),...require_ensure(),...require_json2(),...require_mkdirs(),...require_move2(),...require_output_file(),...require_path_exists(),...require_remove()}}});var require_minimist=__commonJS({"node_modules/minimist/index.js"(exports2,module2){"use strict";function hasKey(obj,keys){var o=obj;keys.slice(0,-1).forEach(function(key2){o=o[key2]||{}});var key=keys[keys.length-1];return key in o}function isNumber(x){return typeof x=="number"||/^0x[0-9a-f]+$/i.test(x)?!0:/^[-+]?(?:\d+(?:\.\d*)?|\.\d+)(e[-+]?\d+)?$/.test(x)}function isConstructorOrProto(obj,key){return key==="constructor"&&typeof obj[key]=="function"||key==="__proto__"}module2.exports=function(args,opts){opts||(opts={});var flags={bools:{},strings:{},unknownFn:null};typeof opts.unknown=="function"&&(flags.unknownFn=opts.unknown),typeof opts.boolean=="boolean"&&opts.boolean?flags.allBools=!0:[].concat(opts.boolean).filter(Boolean).forEach(function(key2){flags.bools[key2]=!0});var aliases={};function aliasIsBoolean(key2){return aliases[key2].some(function(x){return flags.bools[x]})}Object.keys(opts.alias||{}).forEach(function(key2){aliases[key2]=[].concat(opts.alias[key2]),aliases[key2].forEach(function(x){aliases[x]=[key2].concat(aliases[key2].filter(function(y){return x!==y}))})}),[].concat(opts.string).filter(Boolean).forEach(function(key2){flags.strings[key2]=!0,aliases[key2]&&[].concat(aliases[key2]).forEach(function(k){flags.strings[k]=!0})});var defaults=opts.default||{},argv={_:[]};function argDefined(key2,arg2){return flags.allBools&&/^--[^=]+$/.test(arg2)||flags.strings[key2]||flags.bools[key2]||aliases[key2]}function setKey(obj,keys,value2){for(var o=obj,i2=0;i2<keys.length-1;i2++){var key2=keys[i2];if(isConstructorOrProto(o,key2))return;o[key2]===void 0&&(o[key2]={}),(o[key2]===Object.prototype||o[key2]===Number.prototype||o[key2]===String.prototype)&&(o[key2]={}),o[key2]===Array.prototype&&(o[key2]=[]),o=o[key2]}var lastKey=keys[keys.length-1];isConstructorOrProto(o,lastKey)||((o===Object.prototype||o===Number.prototype||o===String.prototype)&&(o={}),o===Array.prototype&&(o=[]),o[lastKey]===void 0||flags.bools[lastKey]||typeof o[lastKey]=="boolean"?o[lastKey]=value2:Array.isArray(o[lastKey])?o[lastKey].push(value2):o[lastKey]=[o[lastKey],value2])}function setArg(key2,val,arg2){if(!(arg2&&flags.unknownFn&&!argDefined(key2,arg2)&&flags.unknownFn(arg2)===!1)){var value2=!flags.strings[key2]&&isNumber(val)?Number(val):val;setKey(argv,key2.split("."),value2),(aliases[key2]||[]).forEach(function(x){setKey(argv,x.split("."),value2)})}}Object.keys(flags.bools).forEach(function(key2){setArg(key2,defaults[key2]===void 0?!1:defaults[key2])});var notFlags=[];args.indexOf("--")!==-1&&(notFlags=args.slice(args.indexOf("--")+1),args=args.slice(0,args.indexOf("--")));for(var i=0;i<args.length;i++){var arg=args[i],key,next;if(/^--.+=/.test(arg)){var m=arg.match(/^--([^=]+)=([\s\S]*)$/);key=m[1];var value=m[2];flags.bools[key]&&(value=value!=="false"),setArg(key,value,arg)}else if(/^--no-.+/.test(arg))key=arg.match(/^--no-(.+)/)[1],setArg(key,!1,arg);else if(/^--.+/.test(arg))key=arg.match(/^--(.+)/)[1],next=args[i+1],next!==void 0&&!/^(-|--)[^-]/.test(next)&&!flags.bools[key]&&!flags.allBools&&(!aliases[key]||!aliasIsBoolean(key))?(setArg(key,next,arg),i+=1):/^(true|false)$/.test(next)?(setArg(key,next==="true",arg),i+=1):setArg(key,flags.strings[key]?"":!0,arg);else if(/^-[^-]+/.test(arg)){for(var letters=arg.slice(1,-1).split(""),broken=!1,j=0;j<letters.length;j++){if(next=arg.slice(j+2),next==="-"){setArg(letters[j],next,arg);continue}if(/[A-Za-z]/.test(letters[j])&&next[0]==="="){setArg(letters[j],next.slice(1),arg),broken=!0;break}if(/[A-Za-z]/.test(letters[j])&&/-?\d+(\.\d*)?(e-?\d+)?$/.test(next)){setArg(letters[j],next,arg),broken=!0;break}if(letters[j+1]&&letters[j+1].match(/\W/)){setArg(letters[j],arg.slice(j+2),arg),broken=!0;break}else setArg(letters[j],flags.strings[letters[j]]?"":!0,arg)}key=arg.slice(-1)[0],!broken&&key!=="-"&&(args[i+1]&&!/^(-|--)[^-]/.test(args[i+1])&&!flags.bools[key]&&(!aliases[key]||!aliasIsBoolean(key))?(setArg(key,args[i+1],arg),i+=1):args[i+1]&&/^(true|false)$/.test(args[i+1])?(setArg(key,args[i+1]==="true",arg),i+=1):setArg(key,flags.strings[key]?"":!0,arg))}else if((!flags.unknownFn||flags.unknownFn(arg)!==!1)&&argv._.push(flags.strings._||!isNumber(arg)?arg:Number(arg)),opts.stopEarly){argv._.push.apply(argv._,args.slice(i+1));break}}return Object.keys(defaults).forEach(function(k){hasKey(argv,k.split("."))||(setKey(argv,k.split("."),defaults[k]),(aliases[k]||[]).forEach(function(x){setKey(argv,x.split("."),defaults[k])}))}),opts["--"]?argv["--"]=notFlags.slice():notFlags.forEach(function(k){argv._.push(k)}),argv}}});var require_packageInfo=__commonJS({"src/lib/packageInfo.js"(exports2,module2){var{readFileSync}=require("fs"),path=require("path");function getPackageVersion(){let packagePaths=[path.resolve(__dirname,"../package.json"),path.resolve(__dirname,"../../package.json")];for(let packagePath of packagePaths)try{return JSON.parse(readFileSync(packagePath,"utf8")).version}catch{}return"unknown"}module2.exports={getPackageVersion}}});var require_processShutdown=__commonJS({"src/lib/processShutdown.js"(exports2,module2){var WINDOWS_CONSOLE_SERVERS=new Set(["staticServer","fileExplorerServer","apiClientServer"]);function shouldWaitForConsoleChildShutdown(platform,serverName,signal){return platform==="win32"&&signal==="SIGINT"&&WINDOWS_CONSOLE_SERVERS.has(serverName)}function shouldExitImmediatelyOnShutdown(platform,signal){return platform==="win32"&&signal==="SIGINT"}function createManagedConsoleInput(options){let{platform,serverName,input,output}=options;if(platform!=="win32"||!WINDOWS_CONSOLE_SERVERS.has(serverName)||!input||input.isTTY!==!0||!output||output.isTTY!==!0)return null;let consumeInput=()=>{},closed=!1;return input.on("data",consumeInput),input.resume(),{close(){closed||(closed=!0,input.removeListener("data",consumeInput),input.pause())}}}module2.exports={shouldWaitForConsoleChildShutdown,shouldExitImmediatelyOnShutdown,createManagedConsoleInput}}});var require_default=__commonJS({"node_modules/events-universal/default.js"(exports2,module2){module2.exports=require("events")}});var require_fixed_size=__commonJS({"node_modules/fast-fifo/fixed-size.js"(exports2,module2){module2.exports=class{constructor(hwm){if(!(hwm>0)||(hwm-1&hwm)!==0)throw new Error("Max size for a FixedFIFO should be a power of two");this.buffer=new Array(hwm),this.mask=hwm-1,this.top=0,this.btm=0,this.next=null}clear(){this.top=this.btm=0,this.next=null,this.buffer.fill(void 0)}push(data){return this.buffer[this.top]!==void 0?!1:(this.buffer[this.top]=data,this.top=this.top+1&this.mask,!0)}shift(){let last=this.buffer[this.btm];if(last!==void 0)return this.buffer[this.btm]=void 0,this.btm=this.btm+1&this.mask,last}peek(){return this.buffer[this.btm]}isEmpty(){return this.buffer[this.btm]===void 0}}}});var require_fast_fifo=__commonJS({"node_modules/fast-fifo/index.js"(exports2,module2){var FixedFIFO=require_fixed_size();module2.exports=class{constructor(hwm){this.hwm=hwm||16,this.head=new FixedFIFO(this.hwm),this.tail=this.head,this.length=0}clear(){this.head=this.tail,this.head.clear(),this.length=0}push(val){if(this.length++,!this.head.push(val)){let prev=this.head;this.head=prev.next=new FixedFIFO(2*this.head.buffer.length),this.head.push(val)}}shift(){this.length!==0&&this.length--;let val=this.tail.shift();if(val===void 0&&this.tail.next){let next=this.tail.next;return this.tail.next=null,this.tail=next,this.tail.shift()}return val}peek(){let val=this.tail.peek();return val===void 0&&this.tail.next?this.tail.next.peek():val}isEmpty(){return this.length===0}}}});var require_b4a=__commonJS({"node_modules/b4a/index.js"(exports2,module2){function isBuffer(value){return Buffer.isBuffer(value)||value instanceof Uint8Array}function isEncoding(encoding){return Buffer.isEncoding(encoding)}function alloc(size,fill2,encoding){return Buffer.alloc(size,fill2,encoding)}function allocUnsafe(size){return Buffer.allocUnsafe(size)}function allocUnsafeSlow(size){return Buffer.allocUnsafeSlow(size)}function byteLength(string,encoding){return Buffer.byteLength(string,encoding)}function compare(a,b){return Buffer.compare(a,b)}function concat(buffers,totalLength){return Buffer.concat(buffers,totalLength)}function copy(source,target,targetStart,start,end){return toBuffer(source).copy(target,targetStart,start,end)}function equals(a,b){return toBuffer(a).equals(b)}function fill(buffer,value,offset,end,encoding){return toBuffer(buffer).fill(value,offset,end,encoding)}function from(value,encodingOrOffset,length){return Buffer.from(value,encodingOrOffset,length)}function includes(buffer,value,byteOffset,encoding){return toBuffer(buffer).includes(value,byteOffset,encoding)}function indexOf(buffer,value,byfeOffset,encoding){return toBuffer(buffer).indexOf(value,byfeOffset,encoding)}function lastIndexOf(buffer,value,byteOffset,encoding){return toBuffer(buffer).lastIndexOf(value,byteOffset,encoding)}function swap16(buffer){return toBuffer(buffer).swap16()}function swap32(buffer){return toBuffer(buffer).swap32()}function swap64(buffer){return toBuffer(buffer).swap64()}function toBuffer(buffer){return Buffer.isBuffer(buffer)?buffer:Buffer.from(buffer.buffer,buffer.byteOffset,buffer.byteLength)}function toString(buffer,encoding,start,end){return toBuffer(buffer).toString(encoding,start,end)}function write(buffer,string,offset,length,encoding){return toBuffer(buffer).write(string,offset,length,encoding)}function readDoubleBE(buffer,offset){return toBuffer(buffer).readDoubleBE(offset)}function readDoubleLE(buffer,offset){return toBuffer(buffer).readDoubleLE(offset)}function readFloatBE(buffer,offset){return toBuffer(buffer).readFloatBE(offset)}function readFloatLE(buffer,offset){return toBuffer(buffer).readFloatLE(offset)}function readInt32BE(buffer,offset){return toBuffer(buffer).readInt32BE(offset)}function readInt32LE(buffer,offset){return toBuffer(buffer).readInt32LE(offset)}function readUInt32BE(buffer,offset){return toBuffer(buffer).readUInt32BE(offset)}function readUInt32LE(buffer,offset){return toBuffer(buffer).readUInt32LE(offset)}function writeDoubleBE(buffer,value,offset){return toBuffer(buffer).writeDoubleBE(value,offset)}function writeDoubleLE(buffer,value,offset){return toBuffer(buffer).writeDoubleLE(value,offset)}function writeFloatBE(buffer,value,offset){return toBuffer(buffer).writeFloatBE(value,offset)}function writeFloatLE(buffer,value,offset){return toBuffer(buffer).writeFloatLE(value,offset)}function writeInt32BE(buffer,value,offset){return toBuffer(buffer).writeInt32BE(value,offset)}function writeInt32LE(buffer,value,offset){return toBuffer(buffer).writeInt32LE(value,offset)}function writeUInt32BE(buffer,value,offset){return toBuffer(buffer).writeUInt32BE(value,offset)}function writeUInt32LE(buffer,value,offset){return toBuffer(buffer).writeUInt32LE(value,offset)}module2.exports={isBuffer,isEncoding,alloc,allocUnsafe,allocUnsafeSlow,byteLength,compare,concat,copy,equals,fill,from,includes,indexOf,lastIndexOf,swap16,swap32,swap64,toBuffer,toString,write,readDoubleBE,readDoubleLE,readFloatBE,readFloatLE,readInt32BE,readInt32LE,readUInt32BE,readUInt32LE,writeDoubleBE,writeDoubleLE,writeFloatBE,writeFloatLE,writeInt32BE,writeInt32LE,writeUInt32BE,writeUInt32LE}}});var require_pass_through_decoder=__commonJS({"node_modules/text-decoder/lib/pass-through-decoder.js"(exports2,module2){var b4a=require_b4a();module2.exports=class{constructor(encoding){this.encoding=encoding}get remaining(){return 0}decode(data){return b4a.toString(data,this.encoding)}flush(){return""}}}});var require_utf8_decoder=__commonJS({"node_modules/text-decoder/lib/utf8-decoder.js"(exports2,module2){var b4a=require_b4a();module2.exports=class{constructor(){this._reset()}get remaining(){return this.bytesSeen}decode(data){if(data.byteLength===0)return"";if(this.bytesNeeded===0&&trailingIncomplete(data,0)===0)return this.bytesSeen=trailingBytesSeen(data),b4a.toString(data,"utf8");let result="",start=0;if(this.bytesNeeded>0){for(;start<data.byteLength;){let byte=data[start];if(byte<this.lowerBoundary||byte>this.upperBoundary){result+="\uFFFD",this._reset();break}if(this.lowerBoundary=128,this.upperBoundary=191,this.codePoint=this.codePoint<<6|byte&63,this.bytesSeen++,start++,this.bytesSeen===this.bytesNeeded){result+=String.fromCodePoint(this.codePoint),this._reset();break}}if(this.bytesNeeded>0)return result}let trailing=trailingIncomplete(data,start),end=data.byteLength-trailing;end>start&&(result+=b4a.toString(data,"utf8",start,end));for(let i=end;i<data.byteLength;i++){let byte=data[i];if(this.bytesNeeded===0){byte<=127?(this.bytesSeen=0,result+=String.fromCharCode(byte)):byte>=194&&byte<=223?(this.bytesNeeded=2,this.bytesSeen=1,this.codePoint=byte&31):byte>=224&&byte<=239?(byte===224?this.lowerBoundary=160:byte===237&&(this.upperBoundary=159),this.bytesNeeded=3,this.bytesSeen=1,this.codePoint=byte&15):byte>=240&&byte<=244?(byte===240?this.lowerBoundary=144:byte===244&&(this.upperBoundary=143),this.bytesNeeded=4,this.bytesSeen=1,this.codePoint=byte&7):(this.bytesSeen=1,result+="\uFFFD");continue}if(byte<this.lowerBoundary||byte>this.upperBoundary){result+="\uFFFD",i--,this._reset();continue}this.lowerBoundary=128,this.upperBoundary=191,this.codePoint=this.codePoint<<6|byte&63,this.bytesSeen++,this.bytesSeen===this.bytesNeeded&&(result+=String.fromCodePoint(this.codePoint),this._reset())}return result}flush(){let result=this.bytesNeeded>0?"\uFFFD":"";return this._reset(),result}_reset(){this.codePoint=0,this.bytesNeeded=0,this.bytesSeen=0,this.lowerBoundary=128,this.upperBoundary=191}};function trailingIncomplete(data,start){let len=data.byteLength;if(len<=start)return 0;let limit=Math.max(start,len-4),i=len-1;for(;i>limit&&(data[i]&192)===128;)i--;if(i<start)return 0;let byte=data[i],needed;if(byte<=127)return 0;if(byte>=194&&byte<=223)needed=2;else if(byte>=224&&byte<=239)needed=3;else if(byte>=240&&byte<=244)needed=4;else return 0;let available=len-i;return available<needed?available:0}function trailingBytesSeen(data){let len=data.byteLength;if(len===0)return 0;let last=data[len-1];if(last<=127)return 0;if((last&192)!==128)return 1;let limit=Math.max(0,len-4),i=len-2;for(;i>=limit&&(data[i]&192)===128;)i--;if(i<0)return 1;let first=data[i],needed;if(first>=194&&first<=223)needed=2;else if(first>=224&&first<=239)needed=3;else if(first>=240&&first<=244)needed=4;else return 1;if(len-i!==needed)return 1;if(needed>=3){let second=data[i+1];if(first===224&&second<160||first===237&&second>159||first===240&&second<144||first===244&&second>143)return 1}return 0}}});var require_text_decoder=__commonJS({"node_modules/text-decoder/index.js"(exports2,module2){var PassThroughDecoder=require_pass_through_decoder(),UTF8Decoder=require_utf8_decoder();module2.exports=class{constructor(encoding="utf8"){switch(this.encoding=normalizeEncoding(encoding),this.encoding){case"utf8":this.decoder=new UTF8Decoder;break;case"utf16le":case"base64":throw new Error("Unsupported encoding: "+this.encoding);default:this.decoder=new PassThroughDecoder(this.encoding)}}get remaining(){return this.decoder.remaining}push(data){return typeof data=="string"?data:this.decoder.decode(data)}write(data){return this.push(data)}end(data){let result="";return data&&(result=this.push(data)),result+=this.decoder.flush(),result}};function normalizeEncoding(encoding){switch(encoding=encoding.toLowerCase(),encoding){case"utf8":case"utf-8":return"utf8";case"ucs2":case"ucs-2":case"utf16le":case"utf-16le":return"utf16le";case"latin1":case"binary":return"latin1";case"base64":case"ascii":case"hex":return encoding;default:throw new Error("Unknown encoding: "+encoding)}}}});var require_errors2=__commonJS({"node_modules/streamx/lib/errors.js"(exports2,module2){module2.exports=class StreamError extends Error{constructor(msg,code,fn=StreamError){super(msg),this.code=code,Error.captureStackTrace&&Error.captureStackTrace(this,fn)}static isStreamDestroyed(err){return err&&err.code==="STREAM_DESTROYED"}static isPrematureClose(err){return err&&err.code==="PREMATURE_CLOSE"}static isAborted(err){return err&&err.code==="ABORTED"}static isBadArgument(err){return err&&err.code==="BAD_ARGUMENT"}get name(){return"StreamError"}static STREAM_DESTROYED(){return new StreamError("Stream was destroyed","STREAM_DESTROYED",StreamError.STREAM_DESTROYED)}static PREMATURE_CLOSE(msg="Premature close"){return new StreamError(msg,"PREMATURE_CLOSE",StreamError.PREMATURE_CLOSE)}static ABORTED(){return new StreamError("Stream aborted","ABORTED",StreamError.ABORTED)}static BAD_ARGUMENT(msg="Bad argument"){return new StreamError(msg,"BAD_ARGUMENT",StreamError.BAD_ARGUMENT)}}}});var require_streamx=__commonJS({"node_modules/streamx/index.js"(exports2,module2){var{EventEmitter}=require_default(),FIFO=require_fast_fifo(),TextDecoder2=require_text_decoder(),StreamError=require_errors2(),qmt=typeof queueMicrotask>"u"?fn=>global.process.nextTick(fn):queueMicrotask,MAX=(1<<29)-1,OPENING=1,PREDESTROYING=2,DESTROYING=4,DESTROYED=8,NOT_OPENING=MAX^OPENING,NOT_PREDESTROYING=MAX^PREDESTROYING,READ_ACTIVE=16,READ_UPDATING=32,READ_PRIMARY=64,READ_QUEUED=128,READ_RESUMED=256,READ_PIPE_DRAINED=512,READ_ENDING=1024,READ_EMIT_DATA=2048,READ_EMIT_READABLE=4096,READ_EMITTED_READABLE=8192,READ_DONE=16384,READ_NEXT_TICK=32768,READ_NEEDS_PUSH=65536,READ_READ_AHEAD=131072,READ_FLOWING=READ_RESUMED|READ_PIPE_DRAINED,READ_ACTIVE_AND_NEEDS_PUSH=READ_ACTIVE|READ_NEEDS_PUSH,READ_PRIMARY_AND_ACTIVE=READ_PRIMARY|READ_ACTIVE,READ_EMIT_READABLE_AND_QUEUED=READ_EMIT_READABLE|READ_QUEUED,READ_RESUMED_READ_AHEAD=READ_RESUMED|READ_READ_AHEAD,READ_NOT_ACTIVE=MAX^READ_ACTIVE,READ_NON_PRIMARY=MAX^READ_PRIMARY,READ_NON_PRIMARY_AND_PUSHED=MAX^(READ_PRIMARY|READ_NEEDS_PUSH),READ_PUSHED=MAX^READ_NEEDS_PUSH,READ_PAUSED=MAX^READ_RESUMED,READ_NOT_QUEUED=MAX^(READ_QUEUED|READ_EMITTED_READABLE),READ_NOT_ENDING=MAX^READ_ENDING,READ_PIPE_NOT_DRAINED=MAX^READ_FLOWING,READ_NOT_NEXT_TICK=MAX^READ_NEXT_TICK,READ_NOT_UPDATING=MAX^READ_UPDATING,READ_NO_READ_AHEAD=MAX^READ_READ_AHEAD,READ_PAUSED_NO_READ_AHEAD=MAX^READ_RESUMED_READ_AHEAD,WRITE_ACTIVE=1<<18,WRITE_UPDATING=2<<18,WRITE_PRIMARY=4<<18,WRITE_QUEUED=8<<18,WRITE_UNDRAINED=16<<18,WRITE_DONE=32<<18,WRITE_EMIT_DRAIN=64<<18,WRITE_NEXT_TICK=128<<18,WRITE_WRITING=256<<18,WRITE_FINISHING=512<<18,WRITE_CORKED=1024<<18,WRITE_NOT_ACTIVE=MAX^(WRITE_ACTIVE|WRITE_WRITING),WRITE_NON_PRIMARY=MAX^WRITE_PRIMARY,WRITE_NOT_FINISHING=MAX^(WRITE_ACTIVE|WRITE_FINISHING),WRITE_DRAINED=MAX^WRITE_UNDRAINED,WRITE_NOT_QUEUED=MAX^WRITE_QUEUED,WRITE_NOT_NEXT_TICK=MAX^WRITE_NEXT_TICK,WRITE_NOT_UPDATING=MAX^WRITE_UPDATING,WRITE_NOT_CORKED=MAX^WRITE_CORKED,ACTIVE=READ_ACTIVE|WRITE_ACTIVE,NOT_ACTIVE=MAX^ACTIVE,DONE=READ_DONE|WRITE_DONE,DESTROY_STATUS=DESTROYING|DESTROYED|PREDESTROYING,OPEN_STATUS=DESTROY_STATUS|OPENING,AUTO_DESTROY=DESTROY_STATUS|DONE,NON_PRIMARY=WRITE_NON_PRIMARY&READ_NON_PRIMARY,ACTIVE_OR_TICKING=WRITE_NEXT_TICK|READ_NEXT_TICK,TICKING=ACTIVE_OR_TICKING&NOT_ACTIVE,IS_OPENING=OPEN_STATUS|TICKING,READ_PRIMARY_STATUS=OPEN_STATUS|READ_ENDING|READ_DONE,READ_STATUS=OPEN_STATUS|READ_DONE|READ_QUEUED,READ_ENDING_STATUS=OPEN_STATUS|READ_ENDING|READ_QUEUED,READ_READABLE_STATUS=OPEN_STATUS|READ_EMIT_READABLE|READ_QUEUED|READ_EMITTED_READABLE,SHOULD_NOT_READ=OPEN_STATUS|READ_ACTIVE|READ_ENDING|READ_DONE|READ_NEEDS_PUSH|READ_READ_AHEAD,READ_BACKPRESSURE_STATUS=DESTROY_STATUS|READ_ENDING|READ_DONE,READ_UPDATE_SYNC_STATUS=READ_UPDATING|OPEN_STATUS|READ_NEXT_TICK|READ_PRIMARY,READ_NEXT_TICK_OR_OPENING=READ_NEXT_TICK|OPENING,WRITE_PRIMARY_STATUS=OPEN_STATUS|WRITE_FINISHING|WRITE_DONE,WRITE_QUEUED_AND_UNDRAINED=WRITE_QUEUED|WRITE_UNDRAINED,WRITE_QUEUED_AND_ACTIVE=WRITE_QUEUED|WRITE_ACTIVE,WRITE_DRAIN_STATUS=WRITE_QUEUED|WRITE_UNDRAINED|OPEN_STATUS|WRITE_ACTIVE,WRITE_STATUS=OPEN_STATUS|WRITE_ACTIVE|WRITE_QUEUED|WRITE_CORKED,WRITE_PRIMARY_AND_ACTIVE=WRITE_PRIMARY|WRITE_ACTIVE,WRITE_ACTIVE_AND_WRITING=WRITE_ACTIVE|WRITE_WRITING,WRITE_FINISHING_STATUS=OPEN_STATUS|WRITE_FINISHING|WRITE_QUEUED_AND_ACTIVE|WRITE_DONE,WRITE_BACKPRESSURE_STATUS=WRITE_UNDRAINED|DESTROY_STATUS|WRITE_FINISHING|WRITE_DONE,WRITE_UPDATE_SYNC_STATUS=WRITE_UPDATING|OPEN_STATUS|WRITE_NEXT_TICK|WRITE_PRIMARY,WRITE_DROP_DATA=WRITE_FINISHING|WRITE_DONE|DESTROY_STATUS,asyncIterator=Symbol.asyncIterator||Symbol("asyncIterator"),WritableState=class{constructor(stream,{highWaterMark=16384,map=null,mapWritable,byteLength,byteLengthWritable}={}){this.stream=stream,this.queue=new FIFO,this.highWaterMark=highWaterMark,this.buffered=0,this.error=null,this.pipeline=null,this.drains=null,this.byteLength=byteLengthWritable||byteLength||defaultByteLength,this.map=mapWritable||map,this.afterWrite=afterWrite.bind(this),this.afterUpdateNextTick=updateWriteNT.bind(this)}get ending(){return(this.stream._duplexState&WRITE_FINISHING)!==0}get ended(){return(this.stream._duplexState&WRITE_DONE)!==0}push(data){return(this.stream._duplexState&WRITE_DROP_DATA)!==0?!1:(this.map!==null&&(data=this.map(data)),this.buffered+=this.byteLength(data),this.queue.push(data),this.buffered<this.highWaterMark?(this.stream._duplexState|=WRITE_QUEUED,!0):(this.stream._duplexState|=WRITE_QUEUED_AND_UNDRAINED,!1))}shift(){let data=this.queue.shift();return this.buffered-=this.byteLength(data),this.buffered===0&&(this.stream._duplexState&=WRITE_NOT_QUEUED),data}end(data){typeof data=="function"?this.stream.once("finish",data):data!=null&&this.push(data),this.stream._duplexState=(this.stream._duplexState|WRITE_FINISHING)&WRITE_NON_PRIMARY}autoBatch(data,cb){let buffer=[],stream=this.stream;for(buffer.push(data);(stream._duplexState&WRITE_STATUS)===WRITE_QUEUED_AND_ACTIVE;)buffer.push(stream._writableState.shift());if((stream._duplexState&OPEN_STATUS)!==0)return cb(null);stream._writev(buffer,cb)}update(){let stream=this.stream;stream._duplexState|=WRITE_UPDATING;do{for(;(stream._duplexState&WRITE_STATUS)===WRITE_QUEUED;){let data=this.shift();stream._duplexState|=WRITE_ACTIVE_AND_WRITING,stream._write(data,this.afterWrite)}(stream._duplexState&WRITE_PRIMARY_AND_ACTIVE)===0&&this.updateNonPrimary()}while(this.continueUpdate()===!0);stream._duplexState&=WRITE_NOT_UPDATING}updateNonPrimary(){let stream=this.stream;if((stream._duplexState&WRITE_FINISHING_STATUS)===WRITE_FINISHING){stream._duplexState=stream._duplexState|WRITE_ACTIVE,stream._final(afterFinal.bind(this));return}if((stream._duplexState&DESTROY_STATUS)===DESTROYING){(stream._duplexState&ACTIVE_OR_TICKING)===0&&(stream._duplexState|=ACTIVE,stream._destroy(afterDestroy.bind(this)));return}(stream._duplexState&IS_OPENING)===OPENING&&(stream._duplexState=(stream._duplexState|ACTIVE)&NOT_OPENING,stream._open(afterOpen.bind(this)))}continueUpdate(){return(this.stream._duplexState&WRITE_NEXT_TICK)===0?!1:(this.stream._duplexState&=WRITE_NOT_NEXT_TICK,!0)}updateCallback(){(this.stream._duplexState&WRITE_UPDATE_SYNC_STATUS)===WRITE_PRIMARY?this.update():this.updateNextTick()}updateNextTick(){(this.stream._duplexState&WRITE_NEXT_TICK)===0&&(this.stream._duplexState|=WRITE_NEXT_TICK,(this.stream._duplexState&WRITE_UPDATING)===0&&qmt(this.afterUpdateNextTick))}},ReadableState=class{constructor(stream,{highWaterMark=16384,map=null,mapReadable,byteLength,byteLengthReadable}={}){this.stream=stream,this.queue=new FIFO,this.highWaterMark=highWaterMark===0?1:highWaterMark,this.buffered=0,this.readAhead=highWaterMark>0,this.error=null,this.pipeline=null,this.byteLength=byteLengthReadable||byteLength||defaultByteLength,this.map=mapReadable||map,this.pipeTo=null,this.afterRead=afterRead.bind(this),this.afterUpdateNextTick=updateReadNT.bind(this)}get ending(){return(this.stream._duplexState&READ_ENDING)!==0}get ended(){return(this.stream._duplexState&READ_DONE)!==0}pipe(pipeTo,cb){if(this.pipeTo!==null)throw StreamError.BAD_ARGUMENT("Can only pipe to one destination");if(typeof cb!="function"&&(cb=null),this.stream._duplexState|=READ_PIPE_DRAINED,this.pipeTo=pipeTo,this.pipeline=new Pipeline(this.stream,pipeTo,cb),cb&&this.stream.on("error",noop),isStreamx(pipeTo))pipeTo._writableState.pipeline=this.pipeline,cb&&pipeTo.on("error",noop),pipeTo.on("finish",this.pipeline.finished.bind(this.pipeline));else{let onerror=this.pipeline.done.bind(this.pipeline,pipeTo),onclose=this.pipeline.done.bind(this.pipeline,pipeTo,null);pipeTo.on("error",onerror),pipeTo.on("close",onclose),pipeTo.on("finish",this.pipeline.finished.bind(this.pipeline))}pipeTo.on("drain",afterDrain.bind(this)),this.stream.emit("piping",pipeTo),pipeTo.emit("pipe",this.stream)}push(data){let stream=this.stream;return data===null?(this.highWaterMark=0,stream._duplexState=(stream._duplexState|READ_ENDING)&READ_NON_PRIMARY_AND_PUSHED,!1):this.map!==null&&(data=this.map(data),data===null)?(stream._duplexState&=READ_PUSHED,this.buffered<this.highWaterMark):(this.buffered+=this.byteLength(data),this.queue.push(data),stream._duplexState=(stream._duplexState|READ_QUEUED)&READ_PUSHED,this.buffered<this.highWaterMark)}shift(){let data=this.queue.shift();return this.buffered-=this.byteLength(data),this.buffered===0&&(this.stream._duplexState&=READ_NOT_QUEUED),data}unshift(data){let pending=[this.map!==null?this.map(data):data];for(;this.buffered>0;)pending.push(this.shift());for(let i=0;i<pending.length-1;i++){let data2=pending[i];this.buffered+=this.byteLength(data2),this.queue.push(data2)}this.push(pending[pending.length-1])}read(){let stream=this.stream;if((stream._duplexState&READ_STATUS)===READ_QUEUED){let data=this.shift();return this.pipeTo!==null&&this.pipeTo.write(data)===!1&&(stream._duplexState&=READ_PIPE_NOT_DRAINED),(stream._duplexState&READ_EMIT_DATA)!==0&&stream.emit("data",data),data}return this.readAhead===!1&&(stream._duplexState|=READ_READ_AHEAD,this.updateNextTick()),null}drain(){let stream=this.stream;for(;(stream._duplexState&READ_STATUS)===READ_QUEUED&&(stream._duplexState&READ_FLOWING)!==0;){let data=this.shift();this.pipeTo!==null&&this.pipeTo.write(data)===!1&&(stream._duplexState&=READ_PIPE_NOT_DRAINED),(stream._duplexState&READ_EMIT_DATA)!==0&&stream.emit("data",data)}}update(){let stream=this.stream;stream._duplexState|=READ_UPDATING;do{for(this.drain();this.buffered<this.highWaterMark&&(stream._duplexState&SHOULD_NOT_READ)===READ_READ_AHEAD;)stream._duplexState|=READ_ACTIVE_AND_NEEDS_PUSH,stream._read(this.afterRead),this.drain();(stream._duplexState&READ_READABLE_STATUS)===READ_EMIT_READABLE_AND_QUEUED&&(stream._duplexState|=READ_EMITTED_READABLE,stream.emit("readable")),(stream._duplexState&READ_PRIMARY_AND_ACTIVE)===0&&this.updateNonPrimary()}while(this.continueUpdate()===!0);stream._duplexState&=READ_NOT_UPDATING}updateNonPrimary(){let stream=this.stream;if((stream._duplexState&READ_ENDING_STATUS)===READ_ENDING&&(stream._duplexState=(stream._duplexState|READ_DONE)&READ_NOT_ENDING,stream.emit("end"),(stream._duplexState&AUTO_DESTROY)===DONE&&(stream._duplexState|=DESTROYING),this.pipeTo!==null&&this.pipeTo.end()),(stream._duplexState&DESTROY_STATUS)===DESTROYING){(stream._duplexState&ACTIVE_OR_TICKING)===0&&(stream._duplexState|=ACTIVE,stream._destroy(afterDestroy.bind(this)));return}(stream._duplexState&IS_OPENING)===OPENING&&(stream._duplexState=(stream._duplexState|ACTIVE)&NOT_OPENING,stream._open(afterOpen.bind(this)))}continueUpdate(){return(this.stream._duplexState&READ_NEXT_TICK)===0?!1:(this.stream._duplexState&=READ_NOT_NEXT_TICK,!0)}updateCallback(){(this.stream._duplexState&READ_UPDATE_SYNC_STATUS)===READ_PRIMARY?this.update():this.updateNextTick()}updateNextTickIfOpen(){(this.stream._duplexState&READ_NEXT_TICK_OR_OPENING)===0&&(this.stream._duplexState|=READ_NEXT_TICK,(this.stream._duplexState&READ_UPDATING)===0&&qmt(this.afterUpdateNextTick))}updateNextTick(){(this.stream._duplexState&READ_NEXT_TICK)===0&&(this.stream._duplexState|=READ_NEXT_TICK,(this.stream._duplexState&READ_UPDATING)===0&&qmt(this.afterUpdateNextTick))}},TransformState=class{constructor(stream){this.data=null,this.afterTransform=afterTransform.bind(stream),this.afterFinal=null}},Pipeline=class{constructor(src,dst,cb){this.from=src,this.to=dst,this.afterPipe=cb,this.error=null,this.pipeToFinished=!1}finished(){this.pipeToFinished=!0}done(stream,err){if(err&&(this.error=err),stream===this.to&&(this.to=null,this.from!==null)){((this.from._duplexState&READ_DONE)===0||!this.pipeToFinished)&&this.from.destroy(this.error||StreamError.PREMATURE_CLOSE("Writable stream closed"));return}if(stream===this.from&&(this.from=null,this.to!==null)){(stream._duplexState&READ_DONE)===0&&this.to.destroy(this.error||StreamError.PREMATURE_CLOSE("Readable stream closed"));return}this.afterPipe!==null&&this.afterPipe(this.error),this.to=this.from=this.afterPipe=null}};function afterDrain(){this.stream._duplexState|=READ_PIPE_DRAINED,this.updateCallback()}function afterFinal(err){let stream=this.stream;err&&stream.destroy(err),(stream._duplexState&DESTROY_STATUS)===0&&(stream._duplexState|=WRITE_DONE,stream.emit("finish")),(stream._duplexState&AUTO_DESTROY)===DONE&&(stream._duplexState|=DESTROYING),stream._duplexState&=WRITE_NOT_FINISHING,(stream._duplexState&WRITE_UPDATING)===0?this.update():this.updateNextTick()}function afterDestroy(err){let stream=this.stream;!err&&!StreamError.isStreamDestroyed(this.error)&&(err=this.error),err&&stream.emit("error",err),stream._duplexState|=DESTROYED,stream.emit("close");let rs=stream._readableState,ws=stream._writableState;if(rs!==null&&rs.pipeline!==null&&rs.pipeline.done(stream,err),ws!==null){for(;ws.drains!==null&&ws.drains.length>0;)ws.drains.shift().resolve(!1);ws.pipeline!==null&&ws.pipeline.done(stream,err)}}function afterWrite(err){let stream=this.stream;err&&stream.destroy(err),stream._duplexState&=WRITE_NOT_ACTIVE,this.drains!==null&&tickDrains(this.drains),(stream._duplexState&WRITE_DRAIN_STATUS)===WRITE_UNDRAINED&&(stream._duplexState&=WRITE_DRAINED,(stream._duplexState&WRITE_EMIT_DRAIN)===WRITE_EMIT_DRAIN&&stream.emit("drain")),this.updateCallback()}function afterRead(err){err&&this.stream.destroy(err),this.stream._duplexState&=READ_NOT_ACTIVE,this.readAhead===!1&&(this.stream._duplexState&READ_RESUMED)===0&&(this.stream._duplexState&=READ_NO_READ_AHEAD),this.updateCallback()}function updateReadNT(){(this.stream._duplexState&READ_UPDATING)===0&&(this.stream._duplexState&=READ_NOT_NEXT_TICK,this.update())}function updateWriteNT(){(this.stream._duplexState&WRITE_UPDATING)===0&&(this.stream._duplexState&=WRITE_NOT_NEXT_TICK,this.update())}function tickDrains(drains){for(let i=0;i<drains.length;i++)--drains[i].writes===0&&(drains.shift().resolve(!0),i--)}function afterOpen(err){let stream=this.stream;err&&stream.destroy(err),(stream._duplexState&DESTROYING)===0&&((stream._duplexState&READ_PRIMARY_STATUS)===0&&(stream._duplexState|=READ_PRIMARY),(stream._duplexState&WRITE_PRIMARY_STATUS)===0&&(stream._duplexState|=WRITE_PRIMARY),stream.emit("open")),stream._duplexState&=NOT_ACTIVE,stream._writableState!==null&&stream._writableState.updateCallback(),stream._readableState!==null&&stream._readableState.updateCallback()}function afterTransform(err,data){data!=null&&this.push(data),this._writableState.afterWrite(err)}function newListener(name){this._readableState!==null&&(name==="data"&&(this._duplexState|=READ_EMIT_DATA|READ_RESUMED_READ_AHEAD,this._readableState.updateNextTick()),name==="readable"&&(this._duplexState|=READ_EMIT_READABLE,this._readableState.updateNextTick())),this._writableState!==null&&name==="drain"&&(this._duplexState|=WRITE_EMIT_DRAIN,this._writableState.updateNextTick())}var Stream=class extends EventEmitter{constructor(opts){super(),this._duplexState=0,this._readableState=null,this._writableState=null,opts&&(opts.open&&(this._open=opts.open),opts.destroy&&(this._destroy=opts.destroy),opts.predestroy&&(this._predestroy=opts.predestroy),opts.signal&&opts.signal.addEventListener("abort",abort.bind(this))),this.on("newListener",newListener)}_open(cb){cb(null)}_destroy(cb){cb(null)}_predestroy(){}get readable(){return this._readableState!==null?!0:void 0}get writable(){return this._writableState!==null?!0:void 0}get destroyed(){return(this._duplexState&DESTROYED)!==0}get destroying(){return(this._duplexState&DESTROY_STATUS)!==0}destroy(err){(this._duplexState&DESTROY_STATUS)===0&&(err||(err=StreamError.STREAM_DESTROYED()),this._duplexState=(this._duplexState|DESTROYING)&NON_PRIMARY,this._readableState!==null&&(this._readableState.highWaterMark=0,this._readableState.error=err),this._writableState!==null&&(this._writableState.highWaterMark=0,this._writableState.error=err),this._duplexState|=PREDESTROYING,this._predestroy(),this._duplexState&=NOT_PREDESTROYING,this._readableState!==null&&this._readableState.updateNextTick(),this._writableState!==null&&this._writableState.updateNextTick())}},Readable=class _Readable extends Stream{constructor(opts){super(opts),this._duplexState|=OPENING|WRITE_DONE|READ_READ_AHEAD,this._readableState=new ReadableState(this,opts),opts&&(this._readableState.readAhead===!1&&(this._duplexState&=READ_NO_READ_AHEAD),opts.read&&(this._read=opts.read),opts.eagerOpen&&this._readableState.updateNextTick(),opts.encoding&&this.setEncoding(opts.encoding))}static deferred(fn,opts){let out=new PassThrough(opts);return fn().then(src=>{if(src===null)return out.end();out.destroying||pipeline(src,out,noop)}).catch(err=>out.destroy(err)),out}setEncoding(encoding){let dec=new TextDecoder2(encoding),map=this._readableState.map||echo;return this._readableState.map=mapOrSkip,this;function mapOrSkip(data){let next=dec.push(data);return next===""&&(data.byteLength!==0||dec.remaining>0)?null:map(next)}}_read(cb){cb(null)}pipe(dest,cb){return this._readableState.updateNextTick(),this._readableState.pipe(dest,cb),dest}read(){return this._readableState.updateNextTick(),this._readableState.read()}push(data){return this._readableState.updateNextTickIfOpen(),this._readableState.push(data)}unshift(data){return this._readableState.updateNextTickIfOpen(),this._readableState.unshift(data)}resume(){return this._duplexState|=READ_RESUMED_READ_AHEAD,this._readableState.updateNextTick(),this}pause(){return this._duplexState&=this._readableState.readAhead===!1?READ_PAUSED_NO_READ_AHEAD:READ_PAUSED,this}static _fromAsyncIterator(ite,opts){let destroy,rs=new _Readable({...opts,read(cb){ite.next().then(push).then(cb.bind(null,null)).catch(cb)},predestroy(){destroy=ite.return()},destroy(cb){if(!destroy)return cb(null);destroy.then(cb.bind(null,null)).catch(cb)}});return rs;function push(data){data.done?rs.push(null):rs.push(data.value)}}static from(data,opts){if(isReadStreamx(data))return data;if(data[asyncIterator])return this._fromAsyncIterator(data[asyncIterator](),opts);Array.isArray(data)||(data=data===void 0?[]:[data]);let i=0;return new _Readable({...opts,read(cb){this.push(i===data.length?null:data[i++]),cb(null)}})}static isBackpressured(rs){return(rs._duplexState&READ_BACKPRESSURE_STATUS)!==0||rs._readableState.buffered>=rs._readableState.highWaterMark}static isPaused(rs){return(rs._duplexState&READ_RESUMED)===0}[asyncIterator](){let stream=this,error=null,promiseResolve=null,promiseReject=null;return this.on("error",err=>{error=err}),this.on("readable",onreadable),this.on("close",onclose),{[asyncIterator](){return this},next(){return new Promise(function(resolve,reject){promiseResolve=resolve,promiseReject=reject;let data=stream.read();data!==null?ondata(data):(stream._duplexState&DESTROYED)!==0&&ondata(null)})},return(){return destroy(null)},throw(err){return destroy(err)}};function onreadable(){promiseResolve!==null&&ondata(stream.read())}function onclose(){promiseResolve!==null&&ondata(null)}function ondata(data){promiseReject!==null&&(error?promiseReject(error):data===null&&(stream._duplexState&READ_DONE)===0?promiseReject(StreamError.STREAM_DESTROYED()):promiseResolve({value:data,done:data===null}),promiseReject=promiseResolve=null)}function destroy(err){return stream.destroy(err),new Promise((resolve,reject)=>{if(stream._duplexState&DESTROYED)return resolve({value:void 0,done:!0});stream.once("close",function(){err?reject(err):resolve({value:void 0,done:!0})})})}}},Writable=class extends Stream{constructor(opts){super(opts),this._duplexState|=OPENING|READ_DONE,this._writableState=new WritableState(this,opts),opts&&(opts.writev&&(this._writev=opts.writev),opts.write&&(this._write=opts.write),opts.final&&(this._final=opts.final),opts.eagerOpen&&this._writableState.updateNextTick())}cork(){this._duplexState|=WRITE_CORKED}uncork(){this._duplexState&=WRITE_NOT_CORKED,this._writableState.updateNextTick()}_writev(batch,cb){cb(null)}_write(data,cb){this._writableState.autoBatch(data,cb)}_final(cb){cb(null)}static isBackpressured(ws){return(ws._duplexState&WRITE_BACKPRESSURE_STATUS)!==0}static drained(ws){if(ws.destroyed)return Promise.resolve(!1);let state=ws._writableState,writes=(isWritev(ws)?Math.min(1,state.queue.length):state.queue.length)+(ws._duplexState&WRITE_WRITING?1:0);return writes===0?Promise.resolve(!0):(state.drains===null&&(state.drains=[]),new Promise(resolve=>{state.drains.push({writes,resolve})}))}write(data){return this._writableState.updateNextTick(),this._writableState.push(data)}end(data){return this._writableState.updateNextTick(),this._writableState.end(data),this}},Duplex=class extends Readable{constructor(opts){super(opts),this._duplexState=OPENING|this._duplexState&READ_READ_AHEAD,this._writableState=new WritableState(this,opts),opts&&(opts.writev&&(this._writev=opts.writev),opts.write&&(this._write=opts.write),opts.final&&(this._final=opts.final))}cork(){this._duplexState|=WRITE_CORKED}uncork(){this._duplexState&=WRITE_NOT_CORKED,this._writableState.updateNextTick()}_writev(batch,cb){cb(null)}_write(data,cb){this._writableState.autoBatch(data,cb)}_final(cb){cb(null)}write(data){return this._writableState.updateNextTick(),this._writableState.push(data)}end(data){return this._writableState.updateNextTick(),this._writableState.end(data),this}},Transform=class extends Duplex{constructor(opts){super(opts),this._transformState=new TransformState(this),opts&&(opts.transform&&(this._transform=opts.transform),opts.flush&&(this._flush=opts.flush))}_write(data,cb){this._readableState.buffered>=this._readableState.highWaterMark?this._transformState.data=data:this._transform(data,this._transformState.afterTransform)}_read(cb){if(this._transformState.data!==null){let data=this._transformState.data;this._transformState.data=null,cb(null),this._transform(data,this._transformState.afterTransform)}else cb(null)}destroy(err){super.destroy(err),this._transformState.data!==null&&(this._transformState.data=null,this._transformState.afterTransform())}_transform(data,cb){cb(null,data)}_flush(cb){cb(null)}_final(cb){this._transformState.afterFinal=cb,this._flush(transformAfterFlush.bind(this))}},PassThrough=class extends Transform{};function transformAfterFlush(err,data){let cb=this._transformState.afterFinal;if(err)return cb(err);data!=null&&this.push(data),this.push(null),cb(null)}function pipelinePromise(...streams){return new Promise((resolve,reject)=>pipeline(...streams,err=>{if(err)return reject(err);resolve()}))}function pipeline(stream,...streams){let all=Array.isArray(stream)?[...stream,...streams]:[stream,...streams],done=all.length&&typeof all[all.length-1]=="function"?all.pop():null;if(all.length<2)throw StreamError.BAD_ARGUMENT("Pipeline requires at least 2 streams");let src=all[0],dest=null,error=null;for(let i=1;i<all.length;i++)dest=all[i],isStreamx(src)?src.pipe(dest,onerror):(errorHandle(src,!0,i>1,onerror),src.pipe(dest)),src=dest;if(done){let fin=!1,autoDestroy=isStreamx(dest)||!!(dest._writableState&&dest._writableState.autoDestroy);dest.on("error",err=>{error===null&&(error=err)}),dest.on("finish",()=>{fin=!0,autoDestroy||done(error)}),autoDestroy&&dest.on("close",()=>done(error||(fin?null:StreamError.PREMATURE_CLOSE())))}return dest;function errorHandle(s,rd,wr,onerror2){s.on("error",onerror2),s.on("close",onclose);function onclose(){if(rd&&s._readableState&&!s._readableState.ended||wr&&s._writableState&&!s._writableState.ended)return onerror2(StreamError.PREMATURE_CLOSE())}}function onerror(err){if(!(!err||error)){error=err;for(let s of all)s.destroy(err)}}}function echo(s){return s}function isStream(stream){return!!stream._readableState||!!stream._writableState}function isStreamx(stream){return typeof stream._duplexState=="number"&&isStream(stream)}function isEnding(stream){return!!stream._readableState&&stream._readableState.ending}function isEnded(stream){return!!stream._readableState&&stream._readableState.ended}function isFinishing(stream){return!!stream._writableState&&stream._writableState.ending}function isFinished(stream){return!!stream._writableState&&stream._writableState.ended}function getStreamError(stream,opts={}){let err=stream._readableState&&stream._readableState.error||stream._writableState&&stream._writableState.error;return!opts.all&&StreamError.isStreamDestroyed(err)?null:err}function isReadStreamx(stream){return isStreamx(stream)&&stream.readable}function isDisturbed(stream){return(stream._duplexState&OPENING)!==OPENING||(stream._duplexState&DESTROYING)===DESTROYING||(stream._duplexState&ACTIVE_OR_TICKING)!==0}function isTypedArray(data){return typeof data=="object"&&data!==null&&typeof data.byteLength=="number"}function defaultByteLength(data){return isTypedArray(data)?data.byteLength:1024}function noop(){}function abort(){this.destroy(StreamError.ABORTED())}function isWritev(s){return s._writev!==Writable.prototype._writev&&s._writev!==Duplex.prototype._writev}module2.exports={pipeline,pipelinePromise,isStream,isStreamx,isEnding,isEnded,isFinishing,isFinished,isDisturbed,getStreamError,Stream,Writable,Readable,Duplex,Transform,PassThrough}}});var require_headers2=__commonJS({"node_modules/tar-stream/headers.js"(exports2){var b4a=require_b4a(),ZEROS="0000000000000000000",SEVENS="7777777777777777777",ZERO_OFFSET=48,USTAR_MAGIC=b4a.from([117,115,116,97,114,0]),USTAR_VER=b4a.from([ZERO_OFFSET,ZERO_OFFSET]),GNU_MAGIC=b4a.from([117,115,116,97,114,32]),GNU_VER=b4a.from([32,0]),MASK=4095,MAGIC_OFFSET=257,VERSION_OFFSET=263;exports2.decodeLongPath=function(buf,encoding){return decodeStr(buf,0,buf.length,encoding)};exports2.encodePax=function(opts){let result="";opts.name&&(result+=addLength(" path="+opts.name+`
|
|
236
|
+
`)),opts.linkname&&(result+=addLength(" linkpath="+opts.linkname+`
|
|
237
|
+
`));let pax=opts.pax;if(pax)for(let key in pax)result+=addLength(" "+key+"="+pax[key]+`
|
|
238
|
+
`);return b4a.from(result)};exports2.decodePax=function(buf){let result={};for(;buf.length;){let i=0;for(;i<buf.length&&buf[i]!==32;)i++;let len=parseInt(b4a.toString(buf.subarray(0,i)),10);if(!len)return result;let b=b4a.toString(buf.subarray(i+1,len-1)),keyIndex=b.indexOf("=");if(keyIndex===-1)return result;result[b.slice(0,keyIndex)]=b.slice(keyIndex+1),buf=buf.subarray(len)}return result};exports2.encode=function(opts){let buf=b4a.alloc(512),name=opts.name,prefix="";if(opts.typeflag===5&&name[name.length-1]!=="/"&&(name+="/"),b4a.byteLength(name)!==name.length)return null;for(;b4a.byteLength(name)>100;){let i=name.indexOf("/");if(i===-1)return null;prefix+=prefix?"/"+name.slice(0,i):name.slice(0,i),name=name.slice(i+1)}return b4a.byteLength(name)>100||b4a.byteLength(prefix)>155||opts.linkname&&b4a.byteLength(opts.linkname)>100?null:(b4a.write(buf,name),b4a.write(buf,encodeOct(opts.mode&MASK,6),100),b4a.write(buf,encodeOct(opts.uid,6),108),b4a.write(buf,encodeOct(opts.gid,6),116),encodeSize(opts.size,buf,124),b4a.write(buf,encodeOct(opts.mtime.getTime()/1e3|0,11),136),buf[156]=ZERO_OFFSET+toTypeflag(opts.type),opts.linkname&&b4a.write(buf,opts.linkname,157),b4a.copy(USTAR_MAGIC,buf,MAGIC_OFFSET),b4a.copy(USTAR_VER,buf,VERSION_OFFSET),opts.uname&&b4a.write(buf,opts.uname,265),opts.gname&&b4a.write(buf,opts.gname,297),b4a.write(buf,encodeOct(opts.devmajor||0,6),329),b4a.write(buf,encodeOct(opts.devminor||0,6),337),prefix&&b4a.write(buf,prefix,345),b4a.write(buf,encodeOct(cksum(buf),6),148),buf)};exports2.decode=function(buf,filenameEncoding,allowUnknownFormat){let typeflag=buf[156]===0?0:buf[156]-ZERO_OFFSET,name=decodeStr(buf,0,100,filenameEncoding),mode=decodeOct(buf,100,8),uid=decodeOct(buf,108,8),gid=decodeOct(buf,116,8),size=decodeOct(buf,124,12),mtime=decodeOct(buf,136,12),type=toType(typeflag),linkname=buf[157]===0?null:decodeStr(buf,157,100,filenameEncoding),uname=decodeStr(buf,265,32),gname=decodeStr(buf,297,32),devmajor=decodeOct(buf,329,8),devminor=decodeOct(buf,337,8),c=cksum(buf);if(c===256)return null;if(c!==decodeOct(buf,148,8))throw new Error("Invalid tar header. Maybe the tar is corrupted or it needs to be gunzipped?");if(isUSTAR(buf))buf[345]&&(name=decodeStr(buf,345,155,filenameEncoding)+"/"+name);else if(!isGNU(buf)){if(!allowUnknownFormat)throw new Error("Invalid tar header: unknown format.")}return typeflag===0&&name&&name[name.length-1]==="/"&&(typeflag=5),{name,mode,uid,gid,size,byteOffset:0,mtime:new Date(1e3*mtime),type,linkname,uname,gname,devmajor,devminor,pax:null}};function isUSTAR(buf){return b4a.equals(USTAR_MAGIC,buf.subarray(MAGIC_OFFSET,MAGIC_OFFSET+6))}function isGNU(buf){return b4a.equals(GNU_MAGIC,buf.subarray(MAGIC_OFFSET,MAGIC_OFFSET+6))&&b4a.equals(GNU_VER,buf.subarray(VERSION_OFFSET,VERSION_OFFSET+2))}function clamp(index,len,defaultValue){return typeof index!="number"?defaultValue:(index=~~index,index>=len?len:index>=0||(index+=len,index>=0)?index:0)}function toType(flag){switch(flag){case 0:return"file";case 1:return"link";case 2:return"symlink";case 3:return"character-device";case 4:return"block-device";case 5:return"directory";case 6:return"fifo";case 7:return"contiguous-file";case 72:return"pax-header";case 55:return"pax-global-header";case 27:return"gnu-long-link-path";case 28:case 30:return"gnu-long-path"}return null}function toTypeflag(flag){switch(flag){case"file":return 0;case"link":return 1;case"symlink":return 2;case"character-device":return 3;case"block-device":return 4;case"directory":return 5;case"fifo":return 6;case"contiguous-file":return 7;case"pax-header":return 72}return 0}function indexOf(block,num,offset,end){for(;offset<end;offset++)if(block[offset]===num)return offset;return end}function cksum(block){let sum=256;for(let i=0;i<148;i++)sum+=block[i];for(let j=156;j<512;j++)sum+=block[j];return sum}function encodeOct(val,n){return val=val.toString(8),val.length>n?SEVENS.slice(0,n)+" ":ZEROS.slice(0,n-val.length)+val+" "}function encodeSizeBin(num,buf,off){buf[off]=128;for(let i=11;i>0;i--)buf[off+i]=num&255,num=Math.floor(num/256)}function encodeSize(num,buf,off){num.toString(8).length>11?encodeSizeBin(num,buf,off):b4a.write(buf,encodeOct(num,11),off)}function parse256(buf){let positive;if(buf[0]===128)positive=!0;else if(buf[0]===255)positive=!1;else return null;let tuple=[],i;for(i=buf.length-1;i>0;i--){let byte=buf[i];positive?tuple.push(byte):tuple.push(255-byte)}let sum=0,l=tuple.length;for(i=0;i<l;i++)sum+=tuple[i]*Math.pow(256,i);return positive?sum:-1*sum}function decodeOct(val,offset,length){if(val=val.subarray(offset,offset+length),offset=0,val[offset]&128)return parse256(val);{for(;offset<val.length&&val[offset]===32;)offset++;let end=clamp(indexOf(val,32,offset,val.length),val.length,val.length);for(;offset<end&&val[offset]===0;)offset++;return end===offset?0:parseInt(b4a.toString(val.subarray(offset,end)),8)}}function decodeStr(val,offset,length,encoding){return b4a.toString(val.subarray(offset,indexOf(val,0,offset,offset+length)),encoding)}function addLength(str){let len=b4a.byteLength(str),digits=Math.floor(Math.log(len)/Math.log(10))+1;return len+digits>=Math.pow(10,digits)&&digits++,len+digits+str}}});var require_extract=__commonJS({"node_modules/tar-stream/extract.js"(exports2,module2){var{Writable,Readable,getStreamError}=require_streamx(),FIFO=require_fast_fifo(),b4a=require_b4a(),headers=require_headers2(),EMPTY=b4a.alloc(0),MAX_HEADER_SIZE=4*1024*1024,BufferList=class{constructor(){this.buffered=0,this.shifted=0,this.queue=new FIFO,this._offset=0}push(buffer){this.buffered+=buffer.byteLength,this.queue.push(buffer)}shiftFirst(size){return this.buffered===0?null:this._next(size)}shift(size){if(size>this.buffered)return null;if(size===0)return EMPTY;let chunk=this._next(size);if(size===chunk.byteLength)return chunk;let chunks=[chunk];for(;(size-=chunk.byteLength)>0;)chunk=this._next(size),chunks.push(chunk);return b4a.concat(chunks)}_next(size){let buf=this.queue.peek(),rem=buf.byteLength-this._offset;if(size>=rem){let sub=this._offset?buf.subarray(this._offset,buf.byteLength):buf;return this.queue.shift(),this._offset=0,this.buffered-=rem,this.shifted+=rem,sub}return this.buffered-=size,this.shifted+=size,buf.subarray(this._offset,this._offset+=size)}},Source=class extends Readable{constructor(self2,header,offset){super(),this.header=header,this.offset=offset,this._parent=self2}_read(cb){this.header.size===0&&this.push(null),this._parent._stream===this&&this._parent._update(),cb(null)}_predestroy(){this._parent.destroy(getStreamError(this))}_detach(){this._parent._stream===this&&(this._parent._stream=null,this._parent._missing=overflow(this.header.size),this._parent._update())}_destroy(cb){this._detach(),cb(null)}},Extract=class extends Writable{constructor(opts){super(opts),opts||(opts={}),this._buffer=new BufferList,this._offset=0,this._header=null,this._stream=null,this._missing=0,this._longHeader=!1,this._callback=noop,this._locked=!1,this._finished=!1,this._pax=null,this._paxGlobal=null,this._gnuLongPath=null,this._gnuLongLinkPath=null,this._filenameEncoding=opts.filenameEncoding||"utf-8",this._allowUnknownFormat=!!opts.allowUnknownFormat,this._unlockBound=this._unlock.bind(this)}_unlock(err){if(this._locked=!1,err){this.destroy(err),this._continueWrite(err);return}this._update()}_consumeHeader(){if(this._locked)return!1;this._offset=this._buffer.shifted;try{this._header=headers.decode(this._buffer.shift(512),this._filenameEncoding,this._allowUnknownFormat)}catch(err){return this._continueWrite(err),!1}if(!this._header)return!0;switch(this._header.byteOffset=this._buffer.shifted,this._header.type){case"gnu-long-path":case"gnu-long-link-path":case"pax-global-header":case"pax-header":return this._longHeader=!0,this._missing=this._header.size,this._missing>MAX_HEADER_SIZE?(this._continueWrite(new Error("Header exceeds max size")),!1):!0}return this._locked=!0,this._applyLongHeaders(),this._header.size>=0?this._header.size===0||this._header.type==="directory"?(this.emit("entry",this._header,this._createStream(),this._unlockBound),!0):(this._stream=this._createStream(),this._missing=this._header.size,this.emit("entry",this._header,this._stream,this._unlockBound),!0):(this._continueWrite(new Error("Invalid header")),!1)}_applyLongHeaders(){this._gnuLongPath&&(this._header.name=this._gnuLongPath,this._gnuLongPath=null),this._gnuLongLinkPath&&(this._header.linkname=this._gnuLongLinkPath,this._gnuLongLinkPath=null),this._pax&&(this._pax.path&&(this._header.name=this._pax.path),this._pax.linkpath&&(this._header.linkname=this._pax.linkpath),this._pax.size&&(this._header.size=parseInt(this._pax.size,10)),this._header.pax=this._pax,this._pax=null)}_decodeLongHeader(buf){switch(this._header.type){case"gnu-long-path":this._gnuLongPath=headers.decodeLongPath(buf,this._filenameEncoding);break;case"gnu-long-link-path":this._gnuLongLinkPath=headers.decodeLongPath(buf,this._filenameEncoding);break;case"pax-global-header":this._paxGlobal=headers.decodePax(buf);break;case"pax-header":this._pax=this._paxGlobal===null?headers.decodePax(buf):Object.assign({},this._paxGlobal,headers.decodePax(buf));break}}_consumeLongHeader(){this._longHeader=!1,this._missing=overflow(this._header.size);let buf=this._buffer.shift(this._header.size);try{this._decodeLongHeader(buf)}catch(err){return this._continueWrite(err),!1}return!0}_consumeStream(){let buf=this._buffer.shiftFirst(this._missing);if(buf===null)return!1;this._missing-=buf.byteLength;let drained=this._stream.push(buf);return this._missing===0?(this._stream.push(null),drained&&this._stream._detach(),drained&&this._locked===!1):drained}_createStream(){return new Source(this,this._header,this._offset)}_update(){for(;this._buffer.buffered>0&&!this.destroying;){if(this._missing>0){if(this._stream!==null){if(this._consumeStream()===!1)return;continue}if(this._longHeader===!0){if(this._missing>this._buffer.buffered)break;if(this._consumeLongHeader()===!1)return!1;continue}let ignore=this._buffer.shiftFirst(this._missing);ignore!==null&&(this._missing-=ignore.byteLength);continue}if(this._buffer.buffered<512)break;if(this._stream!==null||this._consumeHeader()===!1)return}this._continueWrite(null)}_continueWrite(err){let cb=this._callback;this._callback=noop,cb(err)}_write(data,cb){this._callback=cb,this._buffer.push(data),this._update()}_final(cb){this._finished=this._missing===0&&this._buffer.buffered===0,cb(this._finished?null:new Error("Unexpected end of data"))}_predestroy(){this._continueWrite(null)}_destroy(cb){this._stream&&this._stream.destroy(getStreamError(this)),cb(null)}[Symbol.asyncIterator](){let error=null,promiseResolve=null,promiseReject=null,entryStream=null,entryCallback=null,extract=this;return this.on("entry",onentry),this.on("error",err=>{error=err}),this.on("close",onclose),{[Symbol.asyncIterator](){return this},next(){return new Promise(onnext)},return(){return destroy(null)},throw(err){return destroy(err)}};function consumeCallback(err){if(!entryCallback)return;let cb=entryCallback;entryCallback=null,cb(err)}function onnext(resolve,reject){if(error)return reject(error);if(entryStream){resolve({value:entryStream,done:!1}),entryStream=null;return}promiseResolve=resolve,promiseReject=reject,consumeCallback(null),extract._finished&&promiseResolve&&(promiseResolve({value:void 0,done:!0}),promiseResolve=promiseReject=null)}function onentry(header,stream,callback){entryCallback=callback,stream.on("error",noop),promiseResolve?(promiseResolve({value:stream,done:!1}),promiseResolve=promiseReject=null):entryStream=stream}function onclose(){consumeCallback(error),promiseResolve&&(error?promiseReject(error):promiseResolve({value:void 0,done:!0}),promiseResolve=promiseReject=null)}function destroy(err){return extract.destroy(err),consumeCallback(err),new Promise((resolve,reject)=>{if(extract.destroyed)return resolve({value:void 0,done:!0});extract.once("close",function(){err?reject(err):resolve({value:void 0,done:!0})})})}}};module2.exports=function(opts){return new Extract(opts)};function noop(){}function overflow(size){return size&=511,size&&512-size}}});var require_constants2=__commonJS({"node_modules/tar-stream/constants.js"(exports2,module2){var constants={S_IFMT:61440,S_IFDIR:16384,S_IFCHR:8192,S_IFBLK:24576,S_IFIFO:4096,S_IFLNK:40960};try{module2.exports=require("fs").constants||constants}catch{module2.exports=constants}}});var require_pack=__commonJS({"node_modules/tar-stream/pack.js"(exports2,module2){var{Readable,Writable,getStreamError}=require_streamx(),b4a=require_b4a(),constants=require_constants2(),headers=require_headers2(),DMODE=493,FMODE=420,END_OF_TAR=b4a.alloc(1024),Sink=class extends Writable{constructor(pack,header,callback){super({mapWritable,eagerOpen:!0}),this.written=0,this.header=header,this._callback=callback,this._linkname=null,this._isLinkname=header.type==="symlink"&&!header.linkname,this._isVoid=header.type!=="file"&&header.type!=="contiguous-file",this._finished=!1,this._pack=pack,this._openCallback=null,this._pack._stream===null?this._pack._stream=this:this._pack._pending.push(this)}_open(cb){this._openCallback=cb,this._pack._stream===this&&this._continueOpen()}_continuePack(err){if(this._callback===null)return;let callback=this._callback;this._callback=null,callback(err)}_continueOpen(){this._pack._stream===null&&(this._pack._stream=this);let cb=this._openCallback;if(this._openCallback=null,cb!==null){if(this._pack.destroying)return cb(new Error("pack stream destroyed"));if(this._pack._finalized)return cb(new Error("pack stream is already finalized"));this._pack._stream=this,this._isLinkname||this._pack._encode(this.header),this._isVoid&&(this._finish(),this._continuePack(null)),cb(null)}}_write(data,cb){if(this._isLinkname)return this._linkname=this._linkname?b4a.concat([this._linkname,data]):data,cb(null);if(this._isVoid)return data.byteLength>0?cb(new Error("No body allowed for this entry")):cb();if(this.written+=data.byteLength,this._pack.push(data))return cb();this._pack._drain=cb}_finish(){this._finished||(this._finished=!0,this._isLinkname&&(this.header.linkname=this._linkname?b4a.toString(this._linkname,"utf-8"):"",this._pack._encode(this.header)),overflow(this._pack,this.header.size),this._pack._done(this))}_final(cb){if(this.written!==this.header.size)return cb(new Error("Size mismatch"));this._finish(),cb(null)}_getError(){return getStreamError(this)||new Error("tar entry destroyed")}_predestroy(){this._pack.destroy(this._getError())}_destroy(cb){this._pack._done(this),this._continuePack(this._finished?null:this._getError()),cb()}},Pack=class extends Readable{constructor(opts){super(opts),this._drain=noop,this._finalized=!1,this._finalizing=!1,this._pending=[],this._stream=null}entry(header,buffer,callback){if(this._finalized||this.destroying)throw new Error("already finalized or destroyed");typeof buffer=="function"&&(callback=buffer,buffer=null),callback||(callback=noop),(!header.size||header.type==="symlink")&&(header.size=0),header.type||(header.type=modeToType(header.mode)),header.mode||(header.mode=header.type==="directory"?DMODE:FMODE),header.uid||(header.uid=0),header.gid||(header.gid=0),header.mtime||(header.mtime=new Date),typeof buffer=="string"&&(buffer=b4a.from(buffer));let sink=new Sink(this,header,callback);return b4a.isBuffer(buffer)?(header.size=buffer.byteLength,sink.write(buffer),sink.end(),sink):(sink._isVoid,sink)}finalize(){if(this._stream||this._pending.length>0){this._finalizing=!0;return}this._finalized||(this._finalized=!0,this.push(END_OF_TAR),this.push(null))}_done(stream){stream===this._stream&&(this._stream=null,this._finalizing&&this.finalize(),this._pending.length&&this._pending.shift()._continueOpen())}_encode(header){if(!header.pax){let buf=headers.encode(header);if(buf){this.push(buf);return}}this._encodePax(header)}_encodePax(header){let paxHeader=headers.encodePax({name:header.name,linkname:header.linkname,pax:header.pax}),newHeader={name:"PaxHeader",mode:header.mode,uid:header.uid,gid:header.gid,size:paxHeader.byteLength,mtime:header.mtime,type:"pax-header",linkname:header.linkname&&"PaxHeader",uname:header.uname,gname:header.gname,devmajor:header.devmajor,devminor:header.devminor};this.push(headers.encode(newHeader)),this.push(paxHeader),overflow(this,paxHeader.byteLength),newHeader.size=header.size,newHeader.type=header.type,this.push(headers.encode(newHeader))}_doDrain(){let drain=this._drain;this._drain=noop,drain()}_predestroy(){let err=getStreamError(this);for(this._stream&&this._stream.destroy(err);this._pending.length;){let stream=this._pending.shift();stream.destroy(err),stream._continueOpen()}this._doDrain()}_read(cb){this._doDrain(),cb()}};module2.exports=function(opts){return new Pack(opts)};function modeToType(mode){switch(mode&constants.S_IFMT){case constants.S_IFBLK:return"block-device";case constants.S_IFCHR:return"character-device";case constants.S_IFDIR:return"directory";case constants.S_IFIFO:return"fifo";case constants.S_IFLNK:return"symlink"}return"file"}function noop(){}function overflow(self2,size){size&=511,size&&self2.push(END_OF_TAR.subarray(0,512-size))}function mapWritable(buf){return b4a.isBuffer(buf)?buf:b4a.from(buf)}}});var require_tar_stream=__commonJS({"node_modules/tar-stream/index.js"(exports2){exports2.extract=require_extract();exports2.pack=require_pack()}});var require_archiveShared=__commonJS({"src/lib/archiveShared.js"(exports2,module2){var{lstatSync,readlinkSync,readdirSync,realpathSync,symlinkSync,writeFileSync}=require("fs"),path=require("path"),{decodeFileNameBytes}=require_utils4(),WINDOWS_LINK_FALLBACK_CODES=new Set(["EPERM","EACCES","UNKNOWN"]);function createArchiveError(message,statusCode=400){let error=new Error(message);return error.statusCode=statusCode,error}function isSafeArchiveEntry(entryPath){let normalized=String(entryPath||"").replace(/\\/g,"/").replace(/\/+$/,"");return!normalized||normalized.includes("\0")||normalized.startsWith("/")||/^[a-zA-Z]:/.test(normalized)?!1:normalized.split("/").every(part=>part&&part!=="."&&part!=="..")}function isInside(parentPath,candidatePath){let relative=path.relative(parentPath,candidatePath);return relative===""||!relative.startsWith("..")&&!path.isAbsolute(relative)}function hasArchiveExtension(filePath,extensions){let lower=String(filePath||"").toLowerCase();return extensions.some(extension=>lower.endsWith(extension))}function decodeArchiveNameBytes(buffer){return decodeFileNameBytes(buffer)}function resolveSafeLinkTarget(rootPath,linkPath,target){let normalized=typeof target=="string"?target.replace(/\0+$/,"").replace(/\\/g,"/"):"";if(!normalized||normalized.includes("\0"))throw createArchiveError("Archive contains a symbolic link with an invalid target",422);if(normalized.startsWith("/")||/^[a-zA-Z]:/.test(normalized))throw createArchiveError("Archive contains a symbolic link pointing outside the extraction folder",422);let resolvedPath=path.resolve(path.dirname(linkPath),normalized);if(!isInside(rootPath,resolvedPath))throw createArchiveError("Archive contains a symbolic link pointing outside the extraction folder",422);return{target:normalized,resolvedPath}}function createSafeSymlink(linkPath,target,resolvedPath){try{if(process.platform==="win32")try{let stats=null;try{stats=lstatSync(resolvedPath)}catch{stats=null}stats&&stats.isDirectory()?symlinkSync(resolvedPath,linkPath,"junction"):symlinkSync(target,linkPath);return}catch(error){if(!WINDOWS_LINK_FALLBACK_CODES.has(error.code))throw error;writeFileSync(linkPath,target,{flag:"wx"});return}symlinkSync(target,linkPath)}catch(error){throw createArchiveError(`Unable to create symbolic link ${linkPath}: ${error.message}`,422)}}function assertNoEscapingAncestor(rootRealPath,outputPath){let current=path.dirname(outputPath);for(;isInside(rootRealPath,current);){let stats;try{stats=lstatSync(current)}catch{break}if(stats.isSymbolicLink()){let realPath;try{realPath=realpathSync(current)}catch{let resolved=path.resolve(current,readlinkSync(current));if(!isInside(rootRealPath,resolved))throw createArchiveError("Archive contains a symbolic link pointing outside the extraction folder",422);return}if(!isInside(rootRealPath,realPath))throw createArchiveError("Archive contains a symbolic link pointing outside the extraction folder",422)}if(current===path.dirname(current))break;current=path.dirname(current)}}function verifyExtractedTree(rootPath){let rootRealPath=realpathSync(rootPath),walk=current=>{let entries=readdirSync(current,{withFileTypes:!0});for(let entry of entries){let child=path.join(current,entry.name),stats=lstatSync(child);if(stats.isSymbolicLink()){let targetRealPath;try{targetRealPath=realpathSync(child)}catch{let targetPath=path.resolve(path.dirname(child),readlinkSync(child));if(!isInside(rootRealPath,targetPath))throw createArchiveError("Archive contains a symbolic link pointing outside the extraction folder",422);continue}if(!isInside(rootRealPath,targetRealPath))throw createArchiveError("Archive contains a symbolic link pointing outside the extraction folder",422);continue}if(!isInside(rootRealPath,realpathSync(child)))throw createArchiveError("Archive extracted outside its destination",422);stats.isDirectory()&&walk(child)}};walk(rootRealPath)}module2.exports={assertNoEscapingAncestor,createArchiveError,createSafeSymlink,decodeArchiveNameBytes,hasArchiveExtension,isInside,isSafeArchiveEntry,resolveSafeLinkTarget,verifyExtractedTree}}});var require_tarArchive=__commonJS({"src/lib/archiveProviders/tarArchive.js"(exports2,module2){var{createReadStream,createWriteStream,mkdirSync,realpathSync}=require("fs"),path=require("path"),{pipeline}=require("stream/promises"),tar=require_tar_stream(),{assertNoEscapingAncestor,createArchiveError,createSafeSymlink,decodeArchiveNameBytes,isSafeArchiveEntry,resolveSafeLinkTarget,verifyExtractedTree}=require_archiveShared();function isTarMetadataEntry(header){return["pax-global-header","pax-header","gnu-long-path","gnu-long-link"].includes(header.type)}function normalizeTarName(name){return String(name||"").replace(/\\/g,"/").replace(/^(?:\.\/)+/,"").replace(/\/+$/,"")}function decodeTarString(value,alreadyDecoded){let raw=String(value||"");return!raw||alreadyDecoded?raw:decodeArchiveNameBytes(Buffer.from(raw,"latin1"))}function createFileSource(filePath){let input=createReadStream(filePath);return{input,streams:[input]}}function createPipedSource(decompress){return filePath=>{let input=createReadStream(filePath),decompressor=decompress();return{input:input.pipe(decompressor),streams:[input,decompressor]}}}function destroySource(source){source.streams.forEach(stream=>{typeof stream.destroy=="function"?stream.destroy():typeof stream.kill=="function"&&stream.kill()})}function runTar(filePath,createSource,job,onEntry){return new Promise((resolve,reject)=>{let extractor=tar.extract({filenameEncoding:"latin1"}),source=createSource(filePath),streams=[...source.streams,extractor],settled=!1,finish=(callback,value)=>{settled||(settled=!0,job&&job.child===cancelHandle&&(job.child=null),callback(value))},fail=error=>{destroySource(source),extractor.destroy();let archiveError=error.statusCode?error:createArchiveError(`Unable to read TAR archive: ${error.message}`,422);finish(reject,archiveError)},cancelHandle=job?{kill:()=>fail(createArchiveError("Archive job cancelled",499))}:null;job&&(job.child=cancelHandle),streams.forEach(stream=>stream.once("error",fail)),extractor.on("entry",(header,entryStream,next)=>{Promise.resolve().then(()=>{if(settled){entryStream.resume();return}return onEntry(header,entryStream,fail)}).then(()=>{settled||next()}).catch(fail)}),extractor.once("finish",()=>finish(resolve)),source.input.pipe(extractor)})}function resolveTarEntry(header){if(isTarMetadataEntry(header))return{skip:!0};let name=normalizeTarName(decodeTarString(header.name,!!(header.pax&&header.pax.path)));return name?isSafeArchiveEntry(name)?header.type==="symlink"?{symlink:!0,name,linkname:decodeTarString(header.linkname,!!(header.pax&&header.pax.linkpath))}:["file","directory"].includes(header.type)?{name,isDirectory:header.type==="directory"}:{special:!0,kind:header.type,name}:{unsafe:!0,name}:{skip:!0}}async function listEntries(filePath,createSource=createFileSource){let entries=[];return await runTar(filePath,createSource,null,(header,entryStream)=>new Promise((resolve,reject)=>{let resolved=resolveTarEntry(header);resolved.skip||entries.push({path:resolved.name,isDirectory:resolved.isDirectory===!0,isSymbolicLink:!!(resolved.unsafe||resolved.symlink),size:Number(header.size||0),packedSize:0,encrypted:!1,modified:header.mtime?new Date(header.mtime).toISOString():null,attributes:header.type||""}),entryStream.once("error",reject),entryStream.once("end",resolve),entryStream.resume()})),entries}async function extract(job,sourcePath,targetPath,createSource=createFileSource){let rootRealPath=realpathSync(targetPath),pendingWrites=new Set;try{await runTar(sourcePath,createSource,job,(header,entryStream)=>new Promise((resolve,reject)=>{let resolved=resolveTarEntry(header);if(resolved.skip){entryStream.once("error",reject),entryStream.once("end",resolve),entryStream.resume();return}if(resolved.unsafe){reject(createArchiveError("Archive contains an unsafe entry path",422));return}if(resolved.special){reject(createArchiveError("Archive contains hard links or device entries that cannot be extracted",422));return}let outputPath=path.join(rootRealPath,resolved.name);if(assertNoEscapingAncestor(rootRealPath,outputPath),resolved.symlink){let link=resolveSafeLinkTarget(rootRealPath,outputPath,resolved.linkname);mkdirSync(path.dirname(outputPath),{recursive:!0}),createSafeSymlink(outputPath,link.target,link.resolvedPath),entryStream.once("error",reject),entryStream.once("end",()=>{job.progress.processedEntries=Math.min(job.progress.totalEntries,job.progress.processedEntries+1),resolve()}),entryStream.resume();return}if(resolved.isDirectory){mkdirSync(outputPath,{recursive:!0}),entryStream.once("error",reject),entryStream.once("end",()=>{job.progress.processedEntries=Math.min(job.progress.totalEntries,job.progress.processedEntries+1),resolve()}),entryStream.resume();return}mkdirSync(path.dirname(outputPath),{recursive:!0});let write=pipeline(entryStream,createWriteStream(outputPath,{flags:"wx"}));pendingWrites.add(write),write.then(()=>{job.progress.processedEntries=Math.min(job.progress.totalEntries,job.progress.processedEntries+1),resolve()}).catch(reject).finally(()=>pendingWrites.delete(write))}))}catch(error){throw await Promise.allSettled([...pendingWrites]),error}verifyExtractedTree(rootRealPath)}module2.exports={createFileSource,createPipedSource,extract,listEntries}}});var require_pend=__commonJS({"node_modules/pend/index.js"(exports2,module2){module2.exports=Pend;function Pend(){this.pending=0,this.max=1/0,this.listeners=[],this.waiting=[],this.error=null}Pend.prototype.go=function(fn){this.pending<this.max?pendGo(this,fn):this.waiting.push(fn)};Pend.prototype.wait=function(cb){this.pending===0?cb(this.error):this.listeners.push(cb)};Pend.prototype.hold=function(){return pendHold(this)};function pendHold(self2){self2.pending+=1;var called=!1;return onCb;function onCb(err){if(called)throw new Error("callback called twice");if(called=!0,self2.error=self2.error||err,self2.pending-=1,self2.waiting.length>0&&self2.pending<self2.max)pendGo(self2,self2.waiting.shift());else if(self2.pending===0){var listeners=self2.listeners;self2.listeners=[],listeners.forEach(cbListener)}}function cbListener(listener){listener(self2.error)}}function pendGo(self2,fn){fn(pendHold(self2))}}});var require_fd_slicer=__commonJS({"node_modules/fd-slicer/index.js"(exports2){var fs=require("fs"),util=require("util"),stream=require("stream"),Readable=stream.Readable,Writable=stream.Writable,PassThrough=stream.PassThrough,Pend=require_pend(),EventEmitter=require("events").EventEmitter;exports2.createFromBuffer=createFromBuffer;exports2.createFromFd=createFromFd;exports2.BufferSlicer=BufferSlicer;exports2.FdSlicer=FdSlicer;util.inherits(FdSlicer,EventEmitter);function FdSlicer(fd,options){options=options||{},EventEmitter.call(this),this.fd=fd,this.pend=new Pend,this.pend.max=1,this.refCount=0,this.autoClose=!!options.autoClose}FdSlicer.prototype.read=function(buffer,offset,length,position,callback){var self2=this;self2.pend.go(function(cb){fs.read(self2.fd,buffer,offset,length,position,function(err,bytesRead,buffer2){cb(),callback(err,bytesRead,buffer2)})})};FdSlicer.prototype.write=function(buffer,offset,length,position,callback){var self2=this;self2.pend.go(function(cb){fs.write(self2.fd,buffer,offset,length,position,function(err,written,buffer2){cb(),callback(err,written,buffer2)})})};FdSlicer.prototype.createReadStream=function(options){return new ReadStream(this,options)};FdSlicer.prototype.createWriteStream=function(options){return new WriteStream(this,options)};FdSlicer.prototype.ref=function(){this.refCount+=1};FdSlicer.prototype.unref=function(){var self2=this;if(self2.refCount-=1,self2.refCount>0)return;if(self2.refCount<0)throw new Error("invalid unref");self2.autoClose&&fs.close(self2.fd,onCloseDone);function onCloseDone(err){err?self2.emit("error",err):self2.emit("close")}};util.inherits(ReadStream,Readable);function ReadStream(context,options){options=options||{},Readable.call(this,options),this.context=context,this.context.ref(),this.start=options.start||0,this.endOffset=options.end,this.pos=this.start,this.destroyed=!1}ReadStream.prototype._read=function(n){var self2=this;if(!self2.destroyed){var toRead=Math.min(self2._readableState.highWaterMark,n);if(self2.endOffset!=null&&(toRead=Math.min(toRead,self2.endOffset-self2.pos)),toRead<=0){self2.destroyed=!0,self2.push(null),self2.context.unref();return}self2.context.pend.go(function(cb){if(self2.destroyed)return cb();var buffer=new Buffer(toRead);fs.read(self2.context.fd,buffer,0,toRead,self2.pos,function(err,bytesRead){err?self2.destroy(err):bytesRead===0?(self2.destroyed=!0,self2.push(null),self2.context.unref()):(self2.pos+=bytesRead,self2.push(buffer.slice(0,bytesRead))),cb()})})}};ReadStream.prototype.destroy=function(err){this.destroyed||(err=err||new Error("stream destroyed"),this.destroyed=!0,this.emit("error",err),this.context.unref())};util.inherits(WriteStream,Writable);function WriteStream(context,options){options=options||{},Writable.call(this,options),this.context=context,this.context.ref(),this.start=options.start||0,this.endOffset=options.end==null?1/0:+options.end,this.bytesWritten=0,this.pos=this.start,this.destroyed=!1,this.on("finish",this.destroy.bind(this))}WriteStream.prototype._write=function(buffer,encoding,callback){var self2=this;if(!self2.destroyed){if(self2.pos+buffer.length>self2.endOffset){var err=new Error("maximum file length exceeded");err.code="ETOOBIG",self2.destroy(),callback(err);return}self2.context.pend.go(function(cb){if(self2.destroyed)return cb();fs.write(self2.context.fd,buffer,0,buffer.length,self2.pos,function(err2,bytes){err2?(self2.destroy(),cb(),callback(err2)):(self2.bytesWritten+=bytes,self2.pos+=bytes,self2.emit("progress"),cb(),callback())})})}};WriteStream.prototype.destroy=function(){this.destroyed||(this.destroyed=!0,this.context.unref())};util.inherits(BufferSlicer,EventEmitter);function BufferSlicer(buffer,options){EventEmitter.call(this),options=options||{},this.refCount=0,this.buffer=buffer,this.maxChunkSize=options.maxChunkSize||Number.MAX_SAFE_INTEGER}BufferSlicer.prototype.read=function(buffer,offset,length,position,callback){var end=position+length,delta=end-this.buffer.length,written=delta>0?delta:length;this.buffer.copy(buffer,offset,position,end),setImmediate(function(){callback(null,written)})};BufferSlicer.prototype.write=function(buffer,offset,length,position,callback){buffer.copy(this.buffer,position,offset,offset+length),setImmediate(function(){callback(null,length,buffer)})};BufferSlicer.prototype.createReadStream=function(options){options=options||{};var readStream=new PassThrough(options);readStream.destroyed=!1,readStream.start=options.start||0,readStream.endOffset=options.end,readStream.pos=readStream.endOffset||this.buffer.length;for(var entireSlice=this.buffer.slice(readStream.start,readStream.pos),offset=0;;){var nextOffset=offset+this.maxChunkSize;if(nextOffset>=entireSlice.length){offset<entireSlice.length&&readStream.write(entireSlice.slice(offset,entireSlice.length));break}readStream.write(entireSlice.slice(offset,nextOffset)),offset=nextOffset}return readStream.end(),readStream.destroy=function(){readStream.destroyed=!0},readStream};BufferSlicer.prototype.createWriteStream=function(options){var bufferSlicer=this;options=options||{};var writeStream=new Writable(options);return writeStream.start=options.start||0,writeStream.endOffset=options.end==null?this.buffer.length:+options.end,writeStream.bytesWritten=0,writeStream.pos=writeStream.start,writeStream.destroyed=!1,writeStream._write=function(buffer,encoding,callback){if(!writeStream.destroyed){var end=writeStream.pos+buffer.length;if(end>writeStream.endOffset){var err=new Error("maximum file length exceeded");err.code="ETOOBIG",writeStream.destroyed=!0,callback(err);return}buffer.copy(bufferSlicer.buffer,writeStream.pos,0,buffer.length),writeStream.bytesWritten+=buffer.length,writeStream.pos=end,writeStream.emit("progress"),callback()}},writeStream.destroy=function(){writeStream.destroyed=!0},writeStream};BufferSlicer.prototype.ref=function(){this.refCount+=1};BufferSlicer.prototype.unref=function(){if(this.refCount-=1,this.refCount<0)throw new Error("invalid unref")};function createFromBuffer(buffer,options){return new BufferSlicer(buffer,options)}function createFromFd(fd,options){return new FdSlicer(fd,options)}}});var require_buffer_crc32=__commonJS({"node_modules/yauzl/node_modules/buffer-crc32/index.js"(exports2,module2){var Buffer2=require("buffer").Buffer,CRC_TABLE=[0,1996959894,3993919788,2567524794,124634137,1886057615,3915621685,2657392035,249268274,2044508324,3772115230,2547177864,162941995,2125561021,3887607047,2428444049,498536548,1789927666,4089016648,2227061214,450548861,1843258603,4107580753,2211677639,325883990,1684777152,4251122042,2321926636,335633487,1661365465,4195302755,2366115317,997073096,1281953886,3579855332,2724688242,1006888145,1258607687,3524101629,2768942443,901097722,1119000684,3686517206,2898065728,853044451,1172266101,3705015759,2882616665,651767980,1373503546,3369554304,3218104598,565507253,1454621731,3485111705,3099436303,671266974,1594198024,3322730930,2970347812,795835527,1483230225,3244367275,3060149565,1994146192,31158534,2563907772,4023717930,1907459465,112637215,2680153253,3904427059,2013776290,251722036,2517215374,3775830040,2137656763,141376813,2439277719,3865271297,1802195444,476864866,2238001368,4066508878,1812370925,453092731,2181625025,4111451223,1706088902,314042704,2344532202,4240017532,1658658271,366619977,2362670323,4224994405,1303535960,984961486,2747007092,3569037538,1256170817,1037604311,2765210733,3554079995,1131014506,879679996,2909243462,3663771856,1141124467,855842277,2852801631,3708648649,1342533948,654459306,3188396048,3373015174,1466479909,544179635,3110523913,3462522015,1591671054,702138776,2966460450,3352799412,1504918807,783551873,3082640443,3233442989,3988292384,2596254646,62317068,1957810842,3939845945,2647816111,81470997,1943803523,3814918930,2489596804,225274430,2053790376,3826175755,2466906013,167816743,2097651377,4027552580,2265490386,503444072,1762050814,4150417245,2154129355,426522225,1852507879,4275313526,2312317920,282753626,1742555852,4189708143,2394877945,397917763,1622183637,3604390888,2714866558,953729732,1340076626,3518719985,2797360999,1068828381,1219638859,3624741850,2936675148,906185462,1090812512,3747672003,2825379669,829329135,1181335161,3412177804,3160834842,628085408,1382605366,3423369109,3138078467,570562233,1426400815,3317316542,2998733608,733239954,1555261956,3268935591,3050360625,752459403,1541320221,2607071920,3965973030,1969922972,40735498,2617837225,3943577151,1913087877,83908371,2512341634,3803740692,2075208622,213261112,2463272603,3855990285,2094854071,198958881,2262029012,4057260610,1759359992,534414190,2176718541,4139329115,1873836001,414664567,2282248934,4279200368,1711684554,285281116,2405801727,4167216745,1634467795,376229701,2685067896,3608007406,1308918612,956543938,2808555105,3495958263,1231636301,1047427035,2932959818,3654703836,1088359270,936918e3,2847714899,3736837829,1202900863,817233897,3183342108,3401237130,1404277552,615818150,3134207493,3453421203,1423857449,601450431,3009837614,3294710456,1567103746,711928724,3020668471,3272380065,1510334235,755167117];typeof Int32Array<"u"&&(CRC_TABLE=new Int32Array(CRC_TABLE));function ensureBuffer(input){if(Buffer2.isBuffer(input))return input;var hasNewBufferAPI=typeof Buffer2.alloc=="function"&&typeof Buffer2.from=="function";if(typeof input=="number")return hasNewBufferAPI?Buffer2.alloc(input):new Buffer2(input);if(typeof input=="string")return hasNewBufferAPI?Buffer2.from(input):new Buffer2(input);throw new Error("input must be buffer, number, or string, received "+typeof input)}function bufferizeInt(num){var tmp=ensureBuffer(4);return tmp.writeInt32BE(num,0),tmp}function _crc32(buf,previous){buf=ensureBuffer(buf),Buffer2.isBuffer(previous)&&(previous=previous.readUInt32BE(0));for(var crc=~~previous^-1,n=0;n<buf.length;n++)crc=CRC_TABLE[(crc^buf[n])&255]^crc>>>8;return crc^-1}function crc32(){return bufferizeInt(_crc32.apply(null,arguments))}crc32.signed=function(){return _crc32.apply(null,arguments)};crc32.unsigned=function(){return _crc32.apply(null,arguments)>>>0};module2.exports=crc32}});var require_yauzl=__commonJS({"node_modules/yauzl/index.js"(exports2){var fs=require("fs"),zlib=require("zlib"),fd_slicer=require_fd_slicer(),crc32=require_buffer_crc32(),util=require("util"),EventEmitter=require("events").EventEmitter,Transform=require("stream").Transform,PassThrough=require("stream").PassThrough,Writable=require("stream").Writable;exports2.open=open;exports2.fromFd=fromFd;exports2.fromBuffer=fromBuffer;exports2.fromRandomAccessReader=fromRandomAccessReader;exports2.dosDateTimeToDate=dosDateTimeToDate;exports2.validateFileName=validateFileName;exports2.ZipFile=ZipFile;exports2.Entry=Entry;exports2.RandomAccessReader=RandomAccessReader;function open(path,options,callback){typeof options=="function"&&(callback=options,options=null),options==null&&(options={}),options.autoClose==null&&(options.autoClose=!0),options.lazyEntries==null&&(options.lazyEntries=!1),options.decodeStrings==null&&(options.decodeStrings=!0),options.validateEntrySizes==null&&(options.validateEntrySizes=!0),options.strictFileNames==null&&(options.strictFileNames=!1),callback==null&&(callback=defaultCallback),fs.open(path,"r",function(err,fd){if(err)return callback(err);fromFd(fd,options,function(err2,zipfile){err2&&fs.close(fd,defaultCallback),callback(err2,zipfile)})})}function fromFd(fd,options,callback){typeof options=="function"&&(callback=options,options=null),options==null&&(options={}),options.autoClose==null&&(options.autoClose=!1),options.lazyEntries==null&&(options.lazyEntries=!1),options.decodeStrings==null&&(options.decodeStrings=!0),options.validateEntrySizes==null&&(options.validateEntrySizes=!0),options.strictFileNames==null&&(options.strictFileNames=!1),callback==null&&(callback=defaultCallback),fs.fstat(fd,function(err,stats){if(err)return callback(err);var reader=fd_slicer.createFromFd(fd,{autoClose:!0});fromRandomAccessReader(reader,stats.size,options,callback)})}function fromBuffer(buffer,options,callback){typeof options=="function"&&(callback=options,options=null),options==null&&(options={}),options.autoClose=!1,options.lazyEntries==null&&(options.lazyEntries=!1),options.decodeStrings==null&&(options.decodeStrings=!0),options.validateEntrySizes==null&&(options.validateEntrySizes=!0),options.strictFileNames==null&&(options.strictFileNames=!1);var reader=fd_slicer.createFromBuffer(buffer,{maxChunkSize:65536});fromRandomAccessReader(reader,buffer.length,options,callback)}function fromRandomAccessReader(reader,totalSize,options,callback){typeof options=="function"&&(callback=options,options=null),options==null&&(options={}),options.autoClose==null&&(options.autoClose=!0),options.lazyEntries==null&&(options.lazyEntries=!1),options.decodeStrings==null&&(options.decodeStrings=!0);var decodeStrings=!!options.decodeStrings;if(options.validateEntrySizes==null&&(options.validateEntrySizes=!0),options.strictFileNames==null&&(options.strictFileNames=!1),callback==null&&(callback=defaultCallback),typeof totalSize!="number")throw new Error("expected totalSize parameter to be a number");if(totalSize>Number.MAX_SAFE_INTEGER)throw new Error("zip file too large. only file sizes up to 2^52 are supported due to JavaScript's Number type being an IEEE 754 double.");reader.ref();var eocdrWithoutCommentSize=22,maxCommentSize=65535,bufferSize=Math.min(eocdrWithoutCommentSize+maxCommentSize,totalSize),buffer=newBuffer(bufferSize),bufferReadStart=totalSize-buffer.length;readAndAssertNoEof(reader,buffer,0,bufferSize,bufferReadStart,function(err){if(err)return callback(err);for(var i=bufferSize-eocdrWithoutCommentSize;i>=0;i-=1)if(buffer.readUInt32LE(i)===101010256){var eocdrBuffer=buffer.slice(i),diskNumber=eocdrBuffer.readUInt16LE(4);if(diskNumber!==0)return callback(new Error("multi-disk zip files are not supported: found disk number: "+diskNumber));var entryCount=eocdrBuffer.readUInt16LE(10),centralDirectoryOffset=eocdrBuffer.readUInt32LE(16),commentLength=eocdrBuffer.readUInt16LE(20),expectedCommentLength=eocdrBuffer.length-eocdrWithoutCommentSize;if(commentLength!==expectedCommentLength)return callback(new Error("invalid comment length. expected: "+expectedCommentLength+". found: "+commentLength));var comment=decodeStrings?decodeBuffer(eocdrBuffer,22,eocdrBuffer.length,!1):eocdrBuffer.slice(22);if(!(entryCount===65535||centralDirectoryOffset===4294967295))return callback(null,new ZipFile(reader,centralDirectoryOffset,totalSize,entryCount,comment,options.autoClose,options.lazyEntries,decodeStrings,options.validateEntrySizes,options.strictFileNames));var zip64EocdlBuffer=newBuffer(20),zip64EocdlOffset=bufferReadStart+i-zip64EocdlBuffer.length;readAndAssertNoEof(reader,zip64EocdlBuffer,0,zip64EocdlBuffer.length,zip64EocdlOffset,function(err2){if(err2)return callback(err2);if(zip64EocdlBuffer.readUInt32LE(0)!==117853008)return callback(new Error("invalid zip64 end of central directory locator signature"));var zip64EocdrOffset=readUInt64LE(zip64EocdlBuffer,8),zip64EocdrBuffer=newBuffer(56);readAndAssertNoEof(reader,zip64EocdrBuffer,0,zip64EocdrBuffer.length,zip64EocdrOffset,function(err3){return err3?callback(err3):zip64EocdrBuffer.readUInt32LE(0)!==101075792?callback(new Error("invalid zip64 end of central directory record signature")):(entryCount=readUInt64LE(zip64EocdrBuffer,32),centralDirectoryOffset=readUInt64LE(zip64EocdrBuffer,48),callback(null,new ZipFile(reader,centralDirectoryOffset,totalSize,entryCount,comment,options.autoClose,options.lazyEntries,decodeStrings,options.validateEntrySizes,options.strictFileNames)))})});return}callback(new Error("end of central directory record signature not found"))})}util.inherits(ZipFile,EventEmitter);function ZipFile(reader,centralDirectoryOffset,fileSize,entryCount,comment,autoClose,lazyEntries,decodeStrings,validateEntrySizes,strictFileNames){var self2=this;EventEmitter.call(self2),self2.reader=reader,self2.reader.on("error",function(err){emitError(self2,err)}),self2.reader.once("close",function(){self2.emit("close")}),self2.readEntryCursor=centralDirectoryOffset,self2.fileSize=fileSize,self2.entryCount=entryCount,self2.comment=comment,self2.entriesRead=0,self2.autoClose=!!autoClose,self2.lazyEntries=!!lazyEntries,self2.decodeStrings=!!decodeStrings,self2.validateEntrySizes=!!validateEntrySizes,self2.strictFileNames=!!strictFileNames,self2.isOpen=!0,self2.emittedError=!1,self2.lazyEntries||self2._readEntry()}ZipFile.prototype.close=function(){this.isOpen&&(this.isOpen=!1,this.reader.unref())};function emitErrorAndAutoClose(self2,err){self2.autoClose&&self2.close(),emitError(self2,err)}function emitError(self2,err){self2.emittedError||(self2.emittedError=!0,self2.emit("error",err))}ZipFile.prototype.readEntry=function(){if(!this.lazyEntries)throw new Error("readEntry() called without lazyEntries:true");this._readEntry()};ZipFile.prototype._readEntry=function(){var self2=this;if(self2.entryCount===self2.entriesRead){setImmediate(function(){self2.autoClose&&self2.close(),!self2.emittedError&&self2.emit("end")});return}if(!self2.emittedError){var buffer=newBuffer(46);readAndAssertNoEof(self2.reader,buffer,0,buffer.length,self2.readEntryCursor,function(err){if(err)return emitErrorAndAutoClose(self2,err);if(!self2.emittedError){var entry=new Entry,signature=buffer.readUInt32LE(0);if(signature!==33639248)return emitErrorAndAutoClose(self2,new Error("invalid central directory file header signature: 0x"+signature.toString(16)));if(entry.versionMadeBy=buffer.readUInt16LE(4),entry.versionNeededToExtract=buffer.readUInt16LE(6),entry.generalPurposeBitFlag=buffer.readUInt16LE(8),entry.compressionMethod=buffer.readUInt16LE(10),entry.lastModFileTime=buffer.readUInt16LE(12),entry.lastModFileDate=buffer.readUInt16LE(14),entry.crc32=buffer.readUInt32LE(16),entry.compressedSize=buffer.readUInt32LE(20),entry.uncompressedSize=buffer.readUInt32LE(24),entry.fileNameLength=buffer.readUInt16LE(28),entry.extraFieldLength=buffer.readUInt16LE(30),entry.fileCommentLength=buffer.readUInt16LE(32),entry.internalFileAttributes=buffer.readUInt16LE(36),entry.externalFileAttributes=buffer.readUInt32LE(38),entry.relativeOffsetOfLocalHeader=buffer.readUInt32LE(42),entry.generalPurposeBitFlag&64)return emitErrorAndAutoClose(self2,new Error("strong encryption is not supported"));self2.readEntryCursor+=46,buffer=newBuffer(entry.fileNameLength+entry.extraFieldLength+entry.fileCommentLength),readAndAssertNoEof(self2.reader,buffer,0,buffer.length,self2.readEntryCursor,function(err2){if(err2)return emitErrorAndAutoClose(self2,err2);if(!self2.emittedError){var isUtf8=(entry.generalPurposeBitFlag&2048)!==0;entry.fileName=self2.decodeStrings?decodeBuffer(buffer,0,entry.fileNameLength,isUtf8):buffer.slice(0,entry.fileNameLength);var fileCommentStart=entry.fileNameLength+entry.extraFieldLength,extraFieldBuffer=buffer.slice(entry.fileNameLength,fileCommentStart);entry.extraFields=[];for(var i=0;i<extraFieldBuffer.length-3;){var headerId=extraFieldBuffer.readUInt16LE(i+0),dataSize=extraFieldBuffer.readUInt16LE(i+2),dataStart=i+4,dataEnd=dataStart+dataSize;if(dataEnd>extraFieldBuffer.length)return emitErrorAndAutoClose(self2,new Error("extra field length exceeds extra field buffer size"));var dataBuffer=newBuffer(dataSize);extraFieldBuffer.copy(dataBuffer,0,dataStart,dataEnd),entry.extraFields.push({id:headerId,data:dataBuffer}),i=dataEnd}if(entry.fileComment=self2.decodeStrings?decodeBuffer(buffer,fileCommentStart,fileCommentStart+entry.fileCommentLength,isUtf8):buffer.slice(fileCommentStart,fileCommentStart+entry.fileCommentLength),entry.comment=entry.fileComment,self2.readEntryCursor+=buffer.length,self2.entriesRead+=1,entry.uncompressedSize===4294967295||entry.compressedSize===4294967295||entry.relativeOffsetOfLocalHeader===4294967295){for(var zip64EiefBuffer=null,i=0;i<entry.extraFields.length;i++){var extraField=entry.extraFields[i];if(extraField.id===1){zip64EiefBuffer=extraField.data;break}}if(zip64EiefBuffer==null)return emitErrorAndAutoClose(self2,new Error("expected zip64 extended information extra field"));var index=0;if(entry.uncompressedSize===4294967295){if(index+8>zip64EiefBuffer.length)return emitErrorAndAutoClose(self2,new Error("zip64 extended information extra field does not include uncompressed size"));entry.uncompressedSize=readUInt64LE(zip64EiefBuffer,index),index+=8}if(entry.compressedSize===4294967295){if(index+8>zip64EiefBuffer.length)return emitErrorAndAutoClose(self2,new Error("zip64 extended information extra field does not include compressed size"));entry.compressedSize=readUInt64LE(zip64EiefBuffer,index),index+=8}if(entry.relativeOffsetOfLocalHeader===4294967295){if(index+8>zip64EiefBuffer.length)return emitErrorAndAutoClose(self2,new Error("zip64 extended information extra field does not include relative header offset"));entry.relativeOffsetOfLocalHeader=readUInt64LE(zip64EiefBuffer,index),index+=8}}if(self2.decodeStrings)for(var i=0;i<entry.extraFields.length;i++){var extraField=entry.extraFields[i];if(extraField.id===28789){if(extraField.data.length<6||extraField.data.readUInt8(0)!==1)continue;var oldNameCrc32=extraField.data.readUInt32LE(1);if(crc32.unsigned(buffer.slice(0,entry.fileNameLength))!==oldNameCrc32)continue;entry.fileName=decodeBuffer(extraField.data,5,extraField.data.length,!0);break}}if(self2.validateEntrySizes&&entry.compressionMethod===0){var expectedCompressedSize=entry.uncompressedSize;if(entry.isEncrypted()&&(expectedCompressedSize+=12),entry.compressedSize!==expectedCompressedSize){var msg="compressed/uncompressed size mismatch for stored file: "+entry.compressedSize+" != "+entry.uncompressedSize;return emitErrorAndAutoClose(self2,new Error(msg))}}if(self2.decodeStrings){self2.strictFileNames||(entry.fileName=entry.fileName.replace(/\\/g,"/"));var errorMessage=validateFileName(entry.fileName,self2.validateFileNameOptions);if(errorMessage!=null)return emitErrorAndAutoClose(self2,new Error(errorMessage))}self2.emit("entry",entry),self2.lazyEntries||self2._readEntry()}})}})}};ZipFile.prototype.openReadStream=function(entry,options,callback){var self2=this,relativeStart=0,relativeEnd=entry.compressedSize;if(callback==null)callback=options,options={};else{if(options.decrypt!=null){if(!entry.isEncrypted())throw new Error("options.decrypt can only be specified for encrypted entries");if(options.decrypt!==!1)throw new Error("invalid options.decrypt value: "+options.decrypt);if(entry.isCompressed()&&options.decompress!==!1)throw new Error("entry is encrypted and compressed, and options.decompress !== false")}if(options.decompress!=null){if(!entry.isCompressed())throw new Error("options.decompress can only be specified for compressed entries");if(!(options.decompress===!1||options.decompress===!0))throw new Error("invalid options.decompress value: "+options.decompress)}if(options.start!=null||options.end!=null){if(entry.isCompressed()&&options.decompress!==!1)throw new Error("start/end range not allowed for compressed entry without options.decompress === false");if(entry.isEncrypted()&&options.decrypt!==!1)throw new Error("start/end range not allowed for encrypted entry without options.decrypt === false")}if(options.start!=null){if(relativeStart=options.start,relativeStart<0)throw new Error("options.start < 0");if(relativeStart>entry.compressedSize)throw new Error("options.start > entry.compressedSize")}if(options.end!=null){if(relativeEnd=options.end,relativeEnd<0)throw new Error("options.end < 0");if(relativeEnd>entry.compressedSize)throw new Error("options.end > entry.compressedSize");if(relativeEnd<relativeStart)throw new Error("options.end < options.start")}}if(!self2.isOpen)return callback(new Error("closed"));if(entry.isEncrypted()&&options.decrypt!==!1)return callback(new Error("entry is encrypted, and options.decrypt !== false"));self2.reader.ref();var buffer=newBuffer(30);readAndAssertNoEof(self2.reader,buffer,0,buffer.length,entry.relativeOffsetOfLocalHeader,function(err){try{if(err)return callback(err);var signature=buffer.readUInt32LE(0);if(signature!==67324752)return callback(new Error("invalid local file header signature: 0x"+signature.toString(16)));var fileNameLength=buffer.readUInt16LE(26),extraFieldLength=buffer.readUInt16LE(28),localFileHeaderEnd=entry.relativeOffsetOfLocalHeader+buffer.length+fileNameLength+extraFieldLength,decompress;if(entry.compressionMethod===0)decompress=!1;else if(entry.compressionMethod===8)decompress=options.decompress!=null?options.decompress:!0;else return callback(new Error("unsupported compression method: "+entry.compressionMethod));var fileDataStart=localFileHeaderEnd,fileDataEnd=fileDataStart+entry.compressedSize;if(entry.compressedSize!==0&&fileDataEnd>self2.fileSize)return callback(new Error("file data overflows file bounds: "+fileDataStart+" + "+entry.compressedSize+" > "+self2.fileSize));var readStream=self2.reader.createReadStream({start:fileDataStart+relativeStart,end:fileDataStart+relativeEnd}),endpointStream=readStream;if(decompress){var destroyed=!1,inflateFilter=zlib.createInflateRaw();readStream.on("error",function(err2){setImmediate(function(){destroyed||inflateFilter.emit("error",err2)})}),readStream.pipe(inflateFilter),self2.validateEntrySizes?(endpointStream=new AssertByteCountStream(entry.uncompressedSize),inflateFilter.on("error",function(err2){setImmediate(function(){destroyed||endpointStream.emit("error",err2)})}),inflateFilter.pipe(endpointStream)):endpointStream=inflateFilter,endpointStream.destroy=function(){destroyed=!0,inflateFilter!==endpointStream&&inflateFilter.unpipe(endpointStream),readStream.unpipe(inflateFilter),readStream.destroy()}}callback(null,endpointStream)}finally{self2.reader.unref()}})};function Entry(){}Entry.prototype.getLastModDate=function(){return dosDateTimeToDate(this.lastModFileDate,this.lastModFileTime)};Entry.prototype.isEncrypted=function(){return(this.generalPurposeBitFlag&1)!==0};Entry.prototype.isCompressed=function(){return this.compressionMethod===8};function dosDateTimeToDate(date,time){var day=date&31,month=(date>>5&15)-1,year=(date>>9&127)+1980,millisecond=0,second=(time&31)*2,minute=time>>5&63,hour=time>>11&31;return new Date(year,month,day,hour,minute,second,millisecond)}function validateFileName(fileName){return fileName.indexOf("\\")!==-1?"invalid characters in fileName: "+fileName:/^[a-zA-Z]:/.test(fileName)||/^\//.test(fileName)?"absolute path: "+fileName:fileName.split("/").indexOf("..")!==-1?"invalid relative path: "+fileName:null}function readAndAssertNoEof(reader,buffer,offset,length,position,callback){if(length===0)return setImmediate(function(){callback(null,newBuffer(0))});reader.read(buffer,offset,length,position,function(err,bytesRead){if(err)return callback(err);if(bytesRead<length)return callback(new Error("unexpected EOF"));callback()})}util.inherits(AssertByteCountStream,Transform);function AssertByteCountStream(byteCount){Transform.call(this),this.actualByteCount=0,this.expectedByteCount=byteCount}AssertByteCountStream.prototype._transform=function(chunk,encoding,cb){if(this.actualByteCount+=chunk.length,this.actualByteCount>this.expectedByteCount){var msg="too many bytes in the stream. expected "+this.expectedByteCount+". got at least "+this.actualByteCount;return cb(new Error(msg))}cb(null,chunk)};AssertByteCountStream.prototype._flush=function(cb){if(this.actualByteCount<this.expectedByteCount){var msg="not enough bytes in the stream. expected "+this.expectedByteCount+". got only "+this.actualByteCount;return cb(new Error(msg))}cb()};util.inherits(RandomAccessReader,EventEmitter);function RandomAccessReader(){EventEmitter.call(this),this.refCount=0}RandomAccessReader.prototype.ref=function(){this.refCount+=1};RandomAccessReader.prototype.unref=function(){var self2=this;if(self2.refCount-=1,self2.refCount>0)return;if(self2.refCount<0)throw new Error("invalid unref");self2.close(onCloseDone);function onCloseDone(err){if(err)return self2.emit("error",err);self2.emit("close")}};RandomAccessReader.prototype.createReadStream=function(options){var start=options.start,end=options.end;if(start===end){var emptyStream=new PassThrough;return setImmediate(function(){emptyStream.end()}),emptyStream}var stream=this._readStreamForRange(start,end),destroyed=!1,refUnrefFilter=new RefUnrefFilter(this);stream.on("error",function(err){setImmediate(function(){destroyed||refUnrefFilter.emit("error",err)})}),refUnrefFilter.destroy=function(){stream.unpipe(refUnrefFilter),refUnrefFilter.unref(),stream.destroy()};var byteCounter=new AssertByteCountStream(end-start);return refUnrefFilter.on("error",function(err){setImmediate(function(){destroyed||byteCounter.emit("error",err)})}),byteCounter.destroy=function(){destroyed=!0,refUnrefFilter.unpipe(byteCounter),refUnrefFilter.destroy()},stream.pipe(refUnrefFilter).pipe(byteCounter)};RandomAccessReader.prototype._readStreamForRange=function(start,end){throw new Error("not implemented")};RandomAccessReader.prototype.read=function(buffer,offset,length,position,callback){var readStream=this.createReadStream({start:position,end:position+length}),writeStream=new Writable,written=0;writeStream._write=function(chunk,encoding,cb){chunk.copy(buffer,offset+written,0,chunk.length),written+=chunk.length,cb()},writeStream.on("finish",callback),readStream.on("error",function(error){callback(error)}),readStream.pipe(writeStream)};RandomAccessReader.prototype.close=function(callback){setImmediate(callback)};util.inherits(RefUnrefFilter,PassThrough);function RefUnrefFilter(context){PassThrough.call(this),this.context=context,this.context.ref(),this.unreffedYet=!1}RefUnrefFilter.prototype._flush=function(cb){this.unref(),cb()};RefUnrefFilter.prototype.unref=function(cb){this.unreffedYet||(this.unreffedYet=!0,this.context.unref())};var cp437="\0\u263A\u263B\u2665\u2666\u2663\u2660\u2022\u25D8\u25CB\u25D9\u2642\u2640\u266A\u266B\u263C\u25BA\u25C4\u2195\u203C\xB6\xA7\u25AC\u21A8\u2191\u2193\u2192\u2190\u221F\u2194\u25B2\u25BC !\"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\\]^_`abcdefghijklmnopqrstuvwxyz{|}~\u2302\xC7\xFC\xE9\xE2\xE4\xE0\xE5\xE7\xEA\xEB\xE8\xEF\xEE\xEC\xC4\xC5\xC9\xE6\xC6\xF4\xF6\xF2\xFB\xF9\xFF\xD6\xDC\xA2\xA3\xA5\u20A7\u0192\xE1\xED\xF3\xFA\xF1\xD1\xAA\xBA\xBF\u2310\xAC\xBD\xBC\xA1\xAB\xBB\u2591\u2592\u2593\u2502\u2524\u2561\u2562\u2556\u2555\u2563\u2551\u2557\u255D\u255C\u255B\u2510\u2514\u2534\u252C\u251C\u2500\u253C\u255E\u255F\u255A\u2554\u2569\u2566\u2560\u2550\u256C\u2567\u2568\u2564\u2565\u2559\u2558\u2552\u2553\u256B\u256A\u2518\u250C\u2588\u2584\u258C\u2590\u2580\u03B1\xDF\u0393\u03C0\u03A3\u03C3\xB5\u03C4\u03A6\u0398\u03A9\u03B4\u221E\u03C6\u03B5\u2229\u2261\xB1\u2265\u2264\u2320\u2321\xF7\u2248\xB0\u2219\xB7\u221A\u207F\xB2\u25A0\xA0";function decodeBuffer(buffer,start,end,isUtf8){if(isUtf8)return buffer.toString("utf8",start,end);for(var result="",i=start;i<end;i++)result+=cp437[buffer[i]];return result}function readUInt64LE(buffer,offset){var lower32=buffer.readUInt32LE(offset),upper32=buffer.readUInt32LE(offset+4);return upper32*4294967296+lower32}var newBuffer;typeof Buffer.allocUnsafe=="function"?newBuffer=function(len){return Buffer.allocUnsafe(len)}:newBuffer=function(len){return new Buffer(len)};function defaultCallback(err){if(err)throw err}}});var require_zipArchive=__commonJS({"src/lib/archiveProviders/zipArchive.js"(exports2,module2){var{createWriteStream,mkdirSync,realpathSync}=require("fs"),path=require("path"),{pipeline}=require("stream/promises"),yauzl=require_yauzl(),{assertNoEscapingAncestor,createArchiveError,createSafeSymlink,decodeArchiveNameBytes,isSafeArchiveEntry,resolveSafeLinkTarget,verifyExtractedTree}=require_archiveShared(),UTF8_NAMES_FLAG=2048,INFOZIP_UNICODE_PATH_EXTRA=28789,MAX_SYMLINK_TARGET_BYTES=4096;function isZipDirectoryEntry(entry){let rawName=entry.fileName;if(Buffer.isBuffer(rawName)){let last=rawName[rawName.length-1];if(last===47||last===92)return!0}else if(typeof rawName=="string"&&/[\\/]$/.test(rawName))return!0;let hostSystem=Number(entry.versionMadeBy||0)>>8,externalAttributes=Number(entry.externalFileAttributes||0);return hostSystem===0&&externalAttributes&16?!0:(externalAttributes>>>16&61440)===16384}function isZipSymbolicLink(entry){return(Number(entry.externalFileAttributes||0)>>>16&61440)===40960}function isZipEncrypted(entry){return Number(entry.generalPurposeBitFlag||0)%2===1}function crc32(buffer){let crc=4294967295;for(let i=0;i<buffer.length;i++){crc^=buffer[i];for(let bit=0;bit<8;bit++)crc=crc>>>1^3988292384&-(crc&1)}return(crc^4294967295)>>>0}function readUnicodePathExtra(entry){let extras=entry.extraFields||[];for(let extra of extras){if(extra.id!==INFOZIP_UNICODE_PATH_EXTRA||extra.data.length<5)continue;let expectedCrc=extra.data.readUInt32LE(1);if(crc32(entry.fileName)===expectedCrc)return extra.data.slice(5).toString("utf8")}return null}function decodeZipEntryName(entry){let rawName=entry.fileName,decoded;return Buffer.isBuffer(rawName)?entry.generalPurposeBitFlag&UTF8_NAMES_FLAG?decoded=rawName.toString("utf8"):(decoded=readUnicodePathExtra(entry),decoded===null&&(decoded=decodeArchiveNameBytes(rawName))):decoded=String(rawName||""),decoded.replace(/\\/g,"/").replace(/^(?:\.\/)+/,"").replace(/\/+$/,"")}function openZip(filePath){return new Promise((resolve,reject)=>{yauzl.open(filePath,{autoClose:!0,lazyEntries:!0,decodeStrings:!1,validateEntrySizes:!0},(error,zipFile)=>{error?reject(createArchiveError(`Unable to read ZIP archive: ${error.message}`,422)):resolve(zipFile)})})}async function listEntries(filePath){let zipFile=await openZip(filePath);return new Promise((resolve,reject)=>{let entries=[],settled=!1,finish=(callback,value)=>{settled||(settled=!0,zipFile.close(),callback(value))};zipFile.on("entry",entry=>{let entryName=decodeZipEntryName(entry);if(!entryName){zipFile.readEntry();return}entries.push({path:entryName,isDirectory:isZipDirectoryEntry(entry),isSymbolicLink:isZipSymbolicLink(entry),size:Number(entry.uncompressedSize||0),packedSize:Number(entry.compressedSize||0),encrypted:isZipEncrypted(entry),modified:entry.getLastModDate().toISOString(),attributes:""}),zipFile.readEntry()}),zipFile.once("end",()=>finish(resolve,entries)),zipFile.once("error",error=>finish(reject,createArchiveError(`Unable to read ZIP archive: ${error.message}`,422))),zipFile.readEntry()})}function assertZipEntrySafe(entry,entryName){if(!isSafeArchiveEntry(entryName))throw createArchiveError("Archive contains an unsafe entry path",422);if(isZipEncrypted(entry))throw createArchiveError("Encrypted archives are not supported",422)}function readStreamBuffer(input,maxBytes){return new Promise((resolve,reject)=>{let chunks=[],length=0;input.on("data",chunk=>{if(length+=chunk.length,length>maxBytes){reject(createArchiveError("Archive contains a symbolic link with an invalid target",422)),input.destroy();return}chunks.push(chunk)}),input.on("end",()=>resolve(Buffer.concat(chunks))),input.on("error",reject)})}async function isSupportedArchive(filePath){let zipFile=await openZip(filePath);return new Promise((resolve,reject)=>{let settled=!1,finish=(callback,value)=>{settled||(settled=!0,zipFile.close(),callback(value))},supported=!0;zipFile.on("entry",entry=>{entry.compressionMethod!==0&&entry.compressionMethod!==8&&(supported=!1),zipFile.readEntry()}),zipFile.once("end",()=>finish(resolve,supported)),zipFile.once("error",error=>finish(reject,createArchiveError(`Unable to read ZIP archive: ${error.message}`,422))),zipFile.readEntry()})}async function extract(job,sourcePath,targetPath){let rootRealPath=realpathSync(targetPath),activeInputs=new Set,activeWrites=new Set,destroyActiveInputs=()=>{for(let input of activeInputs)try{input.destroy()}catch{}activeInputs.clear()},zipFile=await openZip(sourcePath);try{await new Promise((resolve,reject)=>{let settled=!1,finish=(callback,value)=>{settled||(settled=!0,job.child===cancelHandle&&(job.child=null),callback===reject&&destroyActiveInputs(),zipFile.close(),callback(value))},cancelHandle={kill:()=>finish(reject,createArchiveError("Archive job cancelled",499))};job.child=cancelHandle;let next=()=>{settled||zipFile.readEntry()},countEntry=()=>{job.progress.processedEntries=Math.min(job.progress.totalEntries,job.progress.processedEntries+1)},extractSymlink=(entry,outputPath)=>{if(Number(entry.uncompressedSize||0)>MAX_SYMLINK_TARGET_BYTES){finish(reject,createArchiveError("Archive contains a symbolic link with an invalid target",422));return}zipFile.openReadStream(entry,async(error,input)=>{if(error)return finish(reject,createArchiveError(`Unable to extract ZIP archive: ${error.message}`,422));if(settled){input.destroy();return}activeInputs.add(input);try{let link=resolveSafeLinkTarget(rootRealPath,outputPath,decodeArchiveNameBytes(await readStreamBuffer(input,MAX_SYMLINK_TARGET_BYTES)));mkdirSync(path.dirname(outputPath),{recursive:!0}),createSafeSymlink(outputPath,link.target,link.resolvedPath),countEntry(),next()}catch(streamError){finish(reject,streamError)}finally{activeInputs.delete(input)}})};zipFile.on("entry",entry=>{let entryName;try{if(entryName=decodeZipEntryName(entry),!entryName){next();return}assertZipEntrySafe(entry,entryName);let outputPath=path.join(rootRealPath,entryName);if(assertNoEscapingAncestor(rootRealPath,outputPath),isZipSymbolicLink(entry)){extractSymlink(entry,outputPath);return}if(isZipDirectoryEntry(entry)){mkdirSync(outputPath,{recursive:!0}),countEntry(),next();return}mkdirSync(path.dirname(outputPath),{recursive:!0}),zipFile.openReadStream(entry,async(error,input)=>{if(error)return finish(reject,createArchiveError(`Unable to extract ZIP archive: ${error.message}`,422));if(settled){input.destroy();return}activeInputs.add(input);let write=pipeline(input,createWriteStream(outputPath,{flags:"wx"}));activeWrites.add(write);try{await write,countEntry(),next()}catch(streamError){finish(reject,createArchiveError(`Unable to extract ZIP archive: ${streamError.message}`,422))}finally{activeInputs.delete(input),activeWrites.delete(write)}})}catch(error){finish(reject,error)}}),zipFile.once("end",()=>finish(resolve)),zipFile.once("error",error=>finish(reject,createArchiveError(`Unable to read ZIP archive: ${error.message}`,422))),zipFile.readEntry()})}catch(error){throw destroyActiveInputs(),await Promise.allSettled([...activeWrites]),error}verifyExtractedTree(rootRealPath)}module2.exports={extract,isSupportedArchive,listEntries}}});var require_light=__commonJS({"src/lib/archiveProviders/light.js"(exports2,module2){var{createGunzip}=require("zlib"),tarArchive=require_tarArchive(),zipArchive=require_zipArchive(),{hasArchiveExtension}=require_archiveShared(),extensions=[".tar.gz",".tgz",".zip",".tar"],capabilities={edition:"light",createFormats:["zip","tar.gz"],readExtensions:extensions.map(extension=>extension.slice(1))};function isArchivePath(filePath){return hasArchiveExtension(filePath,extensions)}function isZipPath(filePath){return String(filePath).toLowerCase().endsWith(".zip")}function isCompressedTarPath(filePath){return/\.(tar\.gz|tgz)$/i.test(filePath)}function tarSource(filePath){return isCompressedTarPath(filePath)?tarArchive.createPipedSource(createGunzip)(filePath):tarArchive.createFileSource(filePath)}function listEntries(filePath){return isZipPath(filePath)?zipArchive.listEntries(filePath):tarArchive.listEntries(filePath,tarSource)}function extract(job,sourcePath,targetPath){return isZipPath(sourcePath)?zipArchive.extract(job,sourcePath,targetPath):tarArchive.extract(job,sourcePath,targetPath,tarSource)}module2.exports={capabilities,extract,isArchivePath,listEntries}}});var require_archiveTask=__commonJS({"src/lib/archiveTask.js"(exports2,module2){var{createWriteStream,existsSync,lstatSync,mkdirSync,promises:fsPromises,renameSync,rmSync}=require("fs"),path=require("path"),archiver=require("archiver"),archiveProvider=require_light(),{createArchiveError,isInside,isSafeArchiveEntry,verifyExtractedTree}=require_archiveShared(),{validateEntryName}=require_utils4(),MAX_ARCHIVE_SIZE=2*1024*1024*1024,MAX_ARCHIVE_ENTRIES=1e4,MAX_COMPRESSION_RATIO=100;function pathExists(targetPath){try{return lstatSync(targetPath),!0}catch{return!1}}function assertArchiveFile(fullPath){if(!existsSync(fullPath))throw createArchiveError("Path not found",404);let stats=lstatSync(fullPath);if(!stats.isFile())throw createArchiveError("Archive path must be a file");if(!archiveProvider.isArchivePath(fullPath))throw createArchiveError("Unsupported archive format");if(stats.size>MAX_ARCHIVE_SIZE)throw createArchiveError("Archive exceeds 2GB limit",413)}function assertEntriesSafe(entries,fullPath){if(!entries.length)throw createArchiveError("Archive contains no entries",422);if(entries.length>MAX_ARCHIVE_ENTRIES)throw createArchiveError("Archive contains too many entries",413);if(entries.some(entry=>entry.encrypted))throw createArchiveError("Encrypted archives are not supported",422);if(entries.some(entry=>!isSafeArchiveEntry(entry.path)))throw createArchiveError("Archive contains an unsafe entry path",422);let totalSize=entries.reduce((total,entry)=>total+(Number(entry.size)||0),0),packedSize=Math.max(lstatSync(fullPath).size,1);if(totalSize>MAX_ARCHIVE_SIZE)throw createArchiveError("Archive expands beyond 2GB limit",413);if(totalSize/packedSize>MAX_COMPRESSION_RATIO)throw createArchiveError("Archive compression ratio exceeds limit",413)}async function listArchiveFile(fullPath){assertArchiveFile(fullPath);let entries=await archiveProvider.listEntries(fullPath);assertEntriesSafe(entries,fullPath);let totalSize=entries.reduce((total,entry)=>total+(Number(entry.size)||0),0),reportedPackedSize=entries.reduce((total,entry)=>total+(Number(entry.packedSize)||0),0);return{name:path.basename(fullPath),entries,totalEntries:entries.length,totalSize,totalPackedSize:reportedPackedSize||lstatSync(fullPath).size}}async function assertSourceTreeSafe(source){let stats=await fsPromises.lstat(source);if(stats.isSymbolicLink())throw createArchiveError("Symbolic links cannot be archived");if(!stats.isDirectory())return;let entries=await fsPromises.readdir(source,{withFileTypes:!0});await Promise.all(entries.map(entry=>assertSourceTreeSafe(path.join(source,entry.name))))}async function createArchiveFile({sourcePaths,destinationPath,name,format,job}){let normalizedFormat=format==="tar.gz"?"tar.gz":format;if(!archiveProvider.capabilities.createFormats.includes(normalizedFormat)){let formats=archiveProvider.capabilities.createFormats.join(" and ");throw createArchiveError(`Supported creation formats are ${formats}`)}if(!Array.isArray(sourcePaths)||sourcePaths.length===0)throw createArchiveError("Sources must be a non-empty array");if(!existsSync(destinationPath)||!lstatSync(destinationPath).isDirectory())throw createArchiveError("Archive destination must be an existing directory",404);sourcePaths.forEach(source=>{if(!existsSync(source))throw createArchiveError("Source path not found",404);if(lstatSync(source).isSymbolicLink())throw createArchiveError("Symbolic links cannot be archived")}),await Promise.all(sourcePaths.map(source=>assertSourceTreeSafe(source)));let entryKeys=sourcePaths.map(source=>path.basename(source)).map(entryName=>process.platform==="win32"?entryName.toLowerCase():entryName);if(new Set(entryKeys).size!==entryKeys.length)throw createArchiveError("Sources must have unique names");let archiveName=String(name||"").trim();if(!archiveName)throw createArchiveError("Archive name is required");let requiredExtension=normalizedFormat==="zip"?".zip":".tar.gz",safeName=archiveName.endsWith(requiredExtension)?archiveName:`${archiveName}${requiredExtension}`,nameError=validateEntryName(safeName);if(nameError)throw createArchiveError(`Invalid archive name: ${nameError}`);let outputPath=path.join(destinationPath,safeName);if(pathExists(outputPath))throw createArchiveError("Archive path already exists",409);if(sourcePaths.forEach(source=>{if(lstatSync(source).isDirectory()&&isInside(source,outputPath))throw createArchiveError("Archive output must be outside the source directory")}),job.progress.totalEntries=sourcePaths.length,await new Promise((resolve,reject)=>{let output=createWriteStream(outputPath,{flags:"wx"}),archive=normalizedFormat==="zip"?archiver("zip",{zlib:{level:9}}):archiver("tar",{gzip:!0,gzipOptions:{level:9}});job.archive=archive,output.on("close",resolve),output.on("error",reject),archive.on("error",reject),archive.on("progress",progress=>{job.progress.processedEntries=progress.entries.processed,job.progress.totalEntries=progress.entries.total}),archive.pipe(output),sourcePaths.forEach(source=>{lstatSync(source).isDirectory()?archive.directory(source,path.basename(source)):archive.file(source,{name:path.basename(source)})}),archive.finalize()}).catch(error=>{throw rmSync(outputPath,{force:!0,maxRetries:20,retryDelay:100}),error}),job.cancelled)throw rmSync(outputPath,{force:!0,maxRetries:20,retryDelay:100}),createArchiveError("Archive job cancelled",499);return{path:outputPath,name:path.basename(outputPath)}}async function extractArchiveFile({sourcePath,destinationPath,job}){if(!existsSync(destinationPath)||!lstatSync(destinationPath).isDirectory())throw createArchiveError("Extraction destination must be an existing directory",404);let listing=await listArchiveFile(sourcePath);job.progress.totalEntries=listing.totalEntries;let tempRoot=await fsPromises.mkdtemp(path.join(destinationPath,".mock-service-cli-archive-")),tempOutput=path.join(tempRoot,"output");mkdirSync(tempOutput);try{if(await archiveProvider.extract(job,sourcePath,tempOutput),job.cancelled)throw createArchiveError("Archive job cancelled",499);verifyExtractedTree(tempOutput);let outputEntries=await fsPromises.readdir(tempOutput);if(!outputEntries.length)throw createArchiveError("Archive produced no files",422);outputEntries.forEach(name=>{if(pathExists(path.join(destinationPath,name)))throw createArchiveError(`Destination already contains ${name}`,409)});for(let name of outputEntries)renameSync(path.join(tempOutput,name),path.join(destinationPath,name));return job.progress.processedEntries=job.progress.totalEntries,{destinationPath,entries:outputEntries}}finally{rmSync(tempRoot,{recursive:!0,force:!0,maxRetries:20,retryDelay:100})}}module2.exports={assertArchiveFile,createArchiveFile,extractArchiveFile,listArchiveFile}}});var require_cliArchive=__commonJS({"src/lib/cliArchive.js"(exports2,module2){var path=require("path"),{existsSync,lstatSync}=require("fs"),archiveProvider=require_light(),{createArchiveFile,extractArchiveFile}=require_archiveTask(),SERVER_MODE_FLAGS=["e","explorer","R","static-server","api-client","D","web-dir","d","f","file","static-config","S","socket-server","edit","auth","P","web-port","b","web-baseurl","spa-fallback","watch","watch-depth","watch-interval","p","port","o","cors-origin","H","cors-headers","A","append-headers","O","proxy-options","r","rewrite","a","api-stat","t","track","host","windows-hidden","w","open","v","version"],ArchiveUsageError=class extends Error{};function singleValue(value,flag){if(value!==void 0){if(value===!0||value===!1)throw new ArchiveUsageError(`${flag} requires a value`);if(Array.isArray(value))throw new ArchiveUsageError(`${flag} accepts a single value`);return String(value)}}function collectCreateSources(value,positionals){let sources=[];if(typeof value=="string")sources.push(value);else if(typeof value=="number")sources.push(String(value));else if(Array.isArray(value))value.forEach(item=>{(typeof item=="string"||typeof item=="number")&&sources.push(String(item))});else if(value!==void 0&&value!==!0&&value!==!1)throw new ArchiveUsageError("-c/--create requires file or directory paths");return positionals.forEach(item=>{(typeof item=="string"||typeof item=="number")&&sources.push(String(item))}),sources}function defaultArchiveName(sourcePaths){if(sourcePaths.length!==1)return"archive";let base=path.basename(sourcePaths[0]);return base.replace(/\.[^.]+$/,"")||base}function getArchiveCommand(argv){let extractValue=argv.x!==void 0?argv.x:argv.extract,createValue=argv.c!==void 0?argv.c:argv.create;if(extractValue===void 0&&createValue===void 0)return null;if(extractValue!==void 0&&createValue!==void 0)throw new ArchiveUsageError("-x/--extract and -c/--create cannot be combined");let conflict=SERVER_MODE_FLAGS.find(key=>argv[key]!==void 0&&argv[key]!==!1);if(conflict){let flag=conflict.length===1?`-${conflict}`:`--${conflict}`;throw new ArchiveUsageError(`-x/--extract and -c/--create cannot be combined with ${flag}`)}let outValue=singleValue(argv.out,"--out"),destinationPath=path.resolve(process.cwd(),outValue||".");if(!existsSync(destinationPath)||!lstatSync(destinationPath).isDirectory())throw new ArchiveUsageError(`Output directory not found or not a directory: ${destinationPath}`);let silent=!!(argv.s||argv.silent);if(extractValue!==void 0){let archive=singleValue(extractValue,"-x/--extract");if(argv._.length)throw new ArchiveUsageError(`Unexpected arguments: ${argv._.join(" ")}`);return{mode:"extract",archivePath:path.resolve(process.cwd(),archive),destinationPath,silent}}let sources=collectCreateSources(createValue,argv._);if(!sources.length)throw new ArchiveUsageError("-c/--create requires at least one file or directory");let format=singleValue(argv.format,"--format")||"zip";if(!archiveProvider.capabilities.createFormats.includes(format)){let formats=archiveProvider.capabilities.createFormats.join(", ");throw new ArchiveUsageError(`Unsupported format: ${format}. Supported formats: ${formats}`)}let name=singleValue(argv.name,"--name"),sourcePaths=sources.map(source=>path.resolve(process.cwd(),source));return{mode:"create",sourcePaths,destinationPath,format,name:name||defaultArchiveName(sourcePaths),silent}}async function runArchiveCommand(command){let job={progress:{processedEntries:0,totalEntries:0},cancelled:!1,child:null,archive:null},interrupted=!1,forceExitHandler=null,onSigint=()=>{interrupted||(interrupted=!0,job.cancelled=!0,job.child&&typeof job.child.kill=="function"&&job.child.kill("SIGTERM"),job.archive&&typeof job.archive.abort=="function"&&job.archive.abort(),forceExitHandler=()=>process.exit(130),process.once("SIGINT",forceExitHandler))};process.once("SIGINT",onSigint);try{if(command.mode==="extract")return await extractArchiveFile({sourcePath:command.archivePath,destinationPath:command.destinationPath,job}),command.silent||console.log(`Extracted ${job.progress.totalEntries} entries to ${command.destinationPath}`),0;let result=await createArchiveFile({sourcePaths:command.sourcePaths,destinationPath:command.destinationPath,name:command.name,format:command.format,job});return command.silent||console.log(`Created ${result.path}`),0}catch(error){return job.cancelled?(console.error("Archive operation cancelled"),130):(console.error(`Archive ${command.mode} failed: ${error.message}`),1)}finally{process.removeListener("SIGINT",onSigint),forceExitHandler&&process.removeListener("SIGINT",forceExitHandler)}}module2.exports={ArchiveUsageError,getArchiveCommand,runArchiveCommand}}});var require_mock_service_cli=__commonJS({"src/bin/mock-service-cli"(exports2){var colors=require_safe(),portfinder=require_portfinder(),{resolve}=require("path"),{existsSync}=require_lib3(),argv=require_minimist()(process.argv.slice(2)),{logger,parseHostAllowlist}=require_utils4(),{getPackageVersion}=require_packageInfo(),{shouldWaitForConsoleChildShutdown,createManagedConsoleInput}=require_processShutdown(),spawn=require("child_process").spawn,node=process.execPath;process.title="mock-service-cli";(argv.h||argv.help)&&(console.log(["usage: mock-service-cli [options]","","PS: Mock File\u4EC5\u652F\u6301commonjs\u89C4\u8303\u7684js\u3001cjs\u6587\u4EF6\uFF0C\u4E0D\u652F\u6301ES Module","options:"," -p --port Starting port for a free port search. API Client: 0 uses a system-assigned port. [8090]"," -d Specify mock directory, default [./mock] directory,"," Also watch js files changes and support hot reload"," -f --file Specify the input data source, support javascript "," The priority is over the directory watches"," -s --silent Suppress log messages from output"," -S --socket-server Whether start socket server or not, default false."," -a --api-stat Whether print api url and file path or not, default false."," -t --track Whether record operation info by write file, default false."," -o --cors-origin Allow origin by cors, list separated by commas, must not be * when withCredential is true",' .If specified, cors-headers will be "Authorization,Content-Type,Accept,Origin,User-Agent,DNT',' ,Cache-Control,X-Mx-ReqToken,X-Data-Type,X-Requested-With,X-Data-Type,X-Auth-Token,Token", default *.'," -H --cors-headers When start Mock Server, optionally provide CORS headers list separated by commas. default *"," -A --append-headers When start Mock/Web/Static Server, optionally add response headers list separated by commas."," For example: X-Frame-options=DENY,content-security-policy=frame-ancestors",""," -O --proxy-options Optionally provide proxy options list separated by commas."," -r --rewrite rewrite http or https request url prefix of proxy, default false.",""," -D --web-dir Enable web server, specify web directory, default [./dist] directory"," -P --web-port Web server port to use. If 0, look for open port. [9090]"," -b --web-baseurl Specify website public path when enabled web server.",""," -R --static-server Specify static resource file directory when enabled static server."," --watch-depth <n> Limit static server watch recursion depth (non-negative integer)."," --watch-interval <n> Static server polling interval in milliseconds (Windows Node 24+ only)."," --watch Enable static server file watching and live reload (off by default)."," --windows-hidden Read Windows OS hidden attributes for the index/explorer (off by default)."," --spa-fallback <path> Enable SPA fallback for -R mode using a root-relative HTML path."," --static-config <file> Self-contained static server configuration for root apps, mounts, proxy and fallback."," --host [file] Bind all web services to all IPv4 interfaces, or restrict them with an IP allowlist file."," --edit Enable file create, rename, and delete operations in file explorer."," --auth <password> Require a password for file explorer or API Client."," --api-client [dir] Start the HTTP API workbench. Default workspace: ./.mock-service-client",""," -h --help Print this list and exit."," -v --version Print the version and exit."," -w --open Open the available web page/API overview automatically, default false."," -e --explorer Enable file explorer server, specify directory to browse, default [./].",""," -x --extract <archive> Extract an archive into --out, then exit."," -c --create <path...> Create a ZIP/TAR.GZ archive from files or directories, then exit."," --out <dir> Output directory for --extract/--create, default [.]."," --format <format> Creation format: zip or tar.gz, default [zip]."," --name <name> Archive name for --create. Defaults to the source name or [archive]."].join(`
|
|
239
|
+
`)),process.exit());var archiveRequested=argv.x!==void 0||argv.extract!==void 0||argv.c!==void 0||argv.create!==void 0,archiveCommand=null;if(archiveRequested){let{getArchiveCommand,runArchiveCommand}=require_cliArchive();try{archiveCommand=getArchiveCommand(argv)}catch(error){console.error(error.message),process.exit(2)}runArchiveCommand(archiveCommand).then(code=>{process.exitCode=code},error=>{console.error(`Archive command failed: ${error.message}`),process.exitCode=1})}var apiClientArg=argv["api-client"],apiClientEnabled=apiClientArg!==void 0&&apiClientArg!==!1;if(apiClientEnabled){apiClientArg!==!0&&(typeof apiClientArg!="string"||!apiClientArg)&&(console.error("--api-client requires an optional workspace directory"),process.exit(1));let conflict=["e","explorer","d","f","file","D","web-dir","R","static-server","static-config","S","socket-server","O","proxy-options","r","rewrite","edit","P","web-port","b","web-baseurl","spa-fallback","watch","watch-depth","watch-interval","a","api-stat","t","track","o","cors-origin","H","cors-headers","A","append-headers"].find(key=>argv[key]!==void 0&&argv[key]!==!1);conflict&&(console.error(`--api-client cannot be combined with ${conflict.length===1?"-":"--"}${conflict}`),process.exit(1));let requestedPort=argv.p??argv.port??8090;(typeof requestedPort=="boolean"||!Number.isInteger(Number(requestedPort))||Number(requestedPort)<0||Number(requestedPort)>65535)&&(console.error("--port requires an integer from 0 to 65535"),process.exit(1))}argv.host!==void 0&&typeof argv.host!="boolean"&&typeof argv.host!="string"&&(console.error("--host must be a boolean flag or an IP allowlist file path"),process.exit(1));argv.edit!==void 0&&typeof argv.edit!="boolean"&&(console.error("--edit is a boolean flag"),process.exit(1));argv.auth!==void 0&&(typeof argv.auth!="string"||!argv.auth)&&(console.error("--auth requires a non-empty password string"),process.exit(1));argv.auth&&!(argv.e||argv.explorer||argv["api-client"])&&(console.error("--auth can only be used with --explorer or --api-client"),process.exit(1));argv["static-config"]!==void 0&&(typeof argv["static-config"]!="string"||!argv["static-config"])&&(console.error("--static-config requires a JSON file path"),process.exit(1));var staticDirectoryArg=argv.R!==void 0?argv.R:argv["static-server"];staticDirectoryArg!==void 0&&staticDirectoryArg!==!0&&typeof staticDirectoryArg!="string"&&(console.error("-R/--static-server requires a directory path"),process.exit(1));argv["spa-fallback"]!==void 0&&(typeof argv["spa-fallback"]!="string"||!argv["spa-fallback"])&&(console.error("--spa-fallback requires a root-relative HTML path"),process.exit(1));if(argv["watch-depth"]!==void 0){let watchDepth=Number(argv["watch-depth"]);(!Number.isInteger(watchDepth)||watchDepth<0)&&(console.error("--watch-depth requires a non-negative integer"),process.exit(1)),process.env.WATCH_DEPTH=String(watchDepth)}if(argv["watch-interval"]!==void 0){let watchInterval=Number(argv["watch-interval"]);(typeof argv["watch-interval"]=="boolean"||!Number.isInteger(watchInterval)||watchInterval<1)&&(console.error("--watch-interval requires a positive integer"),process.exit(1)),process.env.WATCH_INTERVAL=String(watchInterval)}argv.watch===!0&&(process.env.WATCH_ENABLED="true");argv["windows-hidden"]===!0&&(process.env.OS_HIDDEN_ENABLED="true");argv["static-config"]&&typeof staticDirectoryArg=="string"&&(console.error("--static-config cannot be combined with -R <directory>"),process.exit(1));!argv["static-config"]&&staticDirectoryArg===!0&&(console.error("-R requires a directory path unless --static-config is provided"),process.exit(1));argv["static-config"]&&(argv.O||argv["proxy-options"]||argv.r||argv.rewrite)&&(console.error("--proxy-options/--rewrite cannot be used with --static-config"),process.exit(1));var hostAllowlist=[];if(typeof argv.host=="string"){let allowlistPath=resolve(process.cwd(),argv.host);existsSync(allowlistPath)||(console.error(`host allowlist file does not exist: ${allowlistPath}`),process.exit(1));try{hostAllowlist=parseHostAllowlist(allowlistPath).map(rule=>`${rule.address}/${rule.prefix}`)}catch(error){console.error(`Invalid host allowlist file: ${error.message}`),process.exit(1)}}var explorerAuthPassword=argv.auth;delete argv.auth;process.env.ARGV=JSON.stringify(argv);var port=argv.p||argv.port,watchDir=argv.d,specifiedFile=argv.f||argv.file,version=argv.v||argv.version,isStartSocketServer=argv.S||!1,rewrite=argv.r||argv.rewrite||!1,isOpenApiOverview=argv.w||argv.open||!1,explorerDir=argv.e||argv.explorer,log=null,managedServerProcess=null,managedServerShutdown=!1,managedServerShutdownTimer=null,MANAGED_SERVER_SHUTDOWN_TIMEOUT=5e3;!archiveCommand&&!argv.s&&!argv.silent?log=logger(!1):colors&&(process.env.SILENT=!0,log=logger(!0));var injectEnvVariable=(envName,envArgs)=>{envArgs&&(process.env[envName]=envArgs)};function resolveServerEntry(fileName){let builtEntry=resolve(__dirname,`./${fileName}.js`);if(existsSync(builtEntry))return builtEntry;let sourceEntry=resolve(__dirname,`../lib/${fileName}.js`);return existsSync(sourceEntry)?sourceEntry:builtEntry}isStartSocketServer&&(process.env.SOCKET_SERVER=!0);isOpenApiOverview&&(process.env.OPEN_API_OVERVIEW=!0);version&&(log.info("v"+getPackageVersion()),process.exit());injectEnvVariable("PREFIX_REWRITE",rewrite);injectEnvVariable("CORS_ORIGIN",argv.o||argv["cors-origin"]);injectEnvVariable("CORS_HEADERS",argv.H||argv["cors-headers"]);injectEnvVariable("WEB_PUBLIC_PATH",argv.b||argv["web-baseurl"]);typeof staticDirectoryArg=="string"&&injectEnvVariable("STATIC_DIRECTORY",staticDirectoryArg);if(argv["static-config"]){let staticConfigPath=resolve(process.cwd(),argv["static-config"]);existsSync(staticConfigPath)||(console.error(`static-config: \u6587\u4EF6 ${staticConfigPath} \u4E0D\u5B58\u5728`),process.exit(1)),process.env.STATIC_CONFIG=staticConfigPath}injectEnvVariable("EXPLORER_DIRECTORY",explorerDir);process.env.SERVER_HOST=argv.host===!0||hostAllowlist.length>0?"0.0.0.0":"127.0.0.1";hostAllowlist.length>0&&(process.env.HOST_ALLOWLIST=JSON.stringify(hostAllowlist));process.env.EXPLORER_EDIT=argv.edit===!0?"true":"false";apiClientEnabled&&(process.env.API_CLIENT_DIRECTORY=resolve(process.cwd(),apiClientArg===!0?".mock-service-client":apiClientArg),process.env.API_CLIENT_AUTH=explorerAuthPassword||"");explorerAuthPassword&&!apiClientEnabled&&(process.env.EXPLORER_AUTH=explorerAuthPassword);var proxyArg=argv.O||argv["proxy-options"];if(proxyArg){let proxyTable={};if(proxyArg.endsWith(".js")||proxyArg.endsWith(".json")){let proxyOptFile=resolve(process.cwd(),proxyArg);existsSync(proxyOptFile)||(console.error(`proxy-options: \u6587\u4EF6 ${proxyOptFile} \u4E0D\u5B58\u5728`),process.exit());let proxyObj=require(proxyOptFile);Object.keys(proxyObj).forEach(function(h){proxyTable[h]=proxyObj[h]},exports2)}else try{proxyArg.split(/\s*,\s*/).forEach(function(h){let[origin,target]=h.split("|");proxyTable[origin]=target},exports2)}catch(error){throw console.warn(colors.yellow(`
|
|
240
|
+
Parse web proxy options Failed:`,error)),error}process.env.PROXY_OPTIONS=JSON.stringify(proxyTable)}if(!archiveCommand)if(apiClientEnabled){let requestedPort=Number(argv.p??argv.port??8090);requestedPort===0?(process.env.PORT="0",initServe()):portfinder.getPort({port:requestedPort,host:process.env.SERVER_HOST},(error,availablePort)=>{if(error){console.error(`API Client \u542F\u52A8\u5931\u8D25\uFF1A\u65E0\u6CD5\u4ECE\u7AEF\u53E3 ${requestedPort} \u5F00\u59CB\u627E\u5230\u53EF\u7528\u7AEF\u53E3\uFF0C\u8BF7\u5C1D\u8BD5 --port 0\u3002`),process.exitCode=1;return}process.env.PORT=String(availablePort),initServe()})}else argv.D||argv["web-dir"]?(process.env.WEB_ROOT=resolve(process.cwd(),argv.D||argv["web-dir"]),existsSync(process.env.WEB_ROOT)||(console.error(`web-dir: \u76EE\u5F55 ${process.env.WEB_ROOT} \u4E0D\u5B58\u5728`),process.exit()),portfinder.basePort=argv.P||argv["web-port"]||9090,portfinder.getPort(function(err,webPort){if(err)throw err;process.env.WEB_PORT=webPort,portfinder.basePort=port||8090,portfinder.getPort(function(err2,port2){if(err2)throw err2;process.env.PORT=port2,initServe()})})):(portfinder.basePort=port||8090,portfinder.getPort(function(err,port2){if(err)throw err;process.env.PORT=port2,initServe()}));function watchMockFiles(watchDir2){let nodemon=require("nodemon");nodemon({script:resolveServerEntry("mockServer"),watch:[watchDir2],ext:"cjs,js,json"}),nodemon.on("start",function(){}).on("quit",function(){process.exit()}).on("restart",function(files){process.env.RESTARTED=!0,log.info([colors.green(`
|
|
238
241
|
nodemon: mockServer restarted due to: `),files,colors.green(" have changed"),`
|
|
239
242
|
`].join(""))})}function startManagedServer(fileName){managedServerProcess=spawn(node,[resolveServerEntry(fileName)],{stdio:"inherit"});let managedConsoleInput=null,closeManagedConsoleInput=()=>{managedConsoleInput&&(managedConsoleInput.close(),managedConsoleInput=null)},exitWithManagedServer=(code,signal)=>{closeManagedConsoleInput(),process.exit(signal?1:code||0)},shutdown=signal=>{if(!managedServerShutdown){if(managedServerShutdown=!0,closeManagedConsoleInput(),!shouldWaitForConsoleChildShutdown(process.platform,fileName,signal)){managedServerProcess.kill(signal);return}if(managedServerProcess.exitCode!==null||managedServerProcess.signalCode!==null){exitWithManagedServer(managedServerProcess.exitCode,managedServerProcess.signalCode);return}managedServerShutdownTimer=setTimeout(()=>{managedServerProcess.exitCode===null&&managedServerProcess.kill("SIGTERM")},MANAGED_SERVER_SHUTDOWN_TIMEOUT)}};process.once("SIGINT",()=>shutdown("SIGINT")),process.once("SIGTERM",()=>shutdown("SIGTERM")),managedServerProcess.once("exit",(code,signal)=>{clearTimeout(managedServerShutdownTimer),closeManagedConsoleInput(),(managedServerShutdown||apiClientEnabled)&&exitWithManagedServer(code,signal)}),managedServerProcess.once("error",error=>{closeManagedConsoleInput(),console.error(colors.red(`Unable to start ${fileName}: ${error.message}`)),process.exit(1)}),managedConsoleInput=createManagedConsoleInput({platform:process.platform,serverName:fileName,input:process.stdin,output:process.stdout})}function startMockServer(){startManagedServer("mockServer")}function startStaticServer(){startManagedServer("staticServer")}function startFileExplorerServer(){startManagedServer("fileExplorerServer")}function initServe(){apiClientEnabled?startManagedServer("apiClientServer"):explorerDir?(process.env.EXPLORER_DIRECTORY=resolve(process.cwd(),explorerDir),existsSync(process.env.EXPLORER_DIRECTORY)||(console.error(`explorer: \u76EE\u5F55 ${process.env.EXPLORER_DIRECTORY} \u4E0D\u5B58\u5728`),process.exit()),startFileExplorerServer()):specifiedFile?(process.env.SPECIFIED_FILE=resolve(process.cwd(),specifiedFile),isStartSocketServer?startMockServer():watchMockFiles(process.env.SPECIFIED_FILE)):watchDir?(process.env.SPECIFIED_DIR=resolve(process.cwd(),watchDir),isStartSocketServer?startMockServer():watchMockFiles(process.env.SPECIFIED_DIR)):process.env.STATIC_DIRECTORY||process.env.STATIC_CONFIG?(process.env.STATIC_DIRECTORY&&(process.env.STATIC_DIRECTORY=resolve(process.cwd(),process.env.STATIC_DIRECTORY)),startStaticServer()):(watchDir=process.env.SPECIFIED_DIR=resolve(process.cwd(),"./mock"),isStartSocketServer||(process.env.STATIC_DIRECTORY||process.env.WEB_ROOT)&&!existsSync(resolve(process.cwd(),watchDir))?startMockServer():watchMockFiles(watchDir))}}});var require_eventemitter3=__commonJS({"node_modules/eventemitter3/index.js"(exports2,module2){"use strict";var has=Object.prototype.hasOwnProperty,prefix="~";function Events(){}Object.create&&(Events.prototype=Object.create(null),new Events().__proto__||(prefix=!1));function EE(fn,context,once){this.fn=fn,this.context=context,this.once=once||!1}function addListener(emitter,event,fn,context,once){if(typeof fn!="function")throw new TypeError("The listener must be a function");var listener=new EE(fn,context||emitter,once),evt=prefix?prefix+event:event;return emitter._events[evt]?emitter._events[evt].fn?emitter._events[evt]=[emitter._events[evt],listener]:emitter._events[evt].push(listener):(emitter._events[evt]=listener,emitter._eventsCount++),emitter}function clearEvent(emitter,evt){--emitter._eventsCount===0?emitter._events=new Events:delete emitter._events[evt]}function EventEmitter(){this._events=new Events,this._eventsCount=0}EventEmitter.prototype.eventNames=function(){var names=[],events,name;if(this._eventsCount===0)return names;for(name in events=this._events)has.call(events,name)&&names.push(prefix?name.slice(1):name);return Object.getOwnPropertySymbols?names.concat(Object.getOwnPropertySymbols(events)):names};EventEmitter.prototype.listeners=function(event){var evt=prefix?prefix+event:event,handlers=this._events[evt];if(!handlers)return[];if(handlers.fn)return[handlers.fn];for(var i=0,l=handlers.length,ee=new Array(l);i<l;i++)ee[i]=handlers[i].fn;return ee};EventEmitter.prototype.listenerCount=function(event){var evt=prefix?prefix+event:event,listeners=this._events[evt];return listeners?listeners.fn?1:listeners.length:0};EventEmitter.prototype.emit=function(event,a1,a2,a3,a4,a5){var evt=prefix?prefix+event:event;if(!this._events[evt])return!1;var listeners=this._events[evt],len=arguments.length,args,i;if(listeners.fn){switch(listeners.once&&this.removeListener(event,listeners.fn,void 0,!0),len){case 1:return listeners.fn.call(listeners.context),!0;case 2:return listeners.fn.call(listeners.context,a1),!0;case 3:return listeners.fn.call(listeners.context,a1,a2),!0;case 4:return listeners.fn.call(listeners.context,a1,a2,a3),!0;case 5:return listeners.fn.call(listeners.context,a1,a2,a3,a4),!0;case 6:return listeners.fn.call(listeners.context,a1,a2,a3,a4,a5),!0}for(i=1,args=new Array(len-1);i<len;i++)args[i-1]=arguments[i];listeners.fn.apply(listeners.context,args)}else{var length=listeners.length,j;for(i=0;i<length;i++)switch(listeners[i].once&&this.removeListener(event,listeners[i].fn,void 0,!0),len){case 1:listeners[i].fn.call(listeners[i].context);break;case 2:listeners[i].fn.call(listeners[i].context,a1);break;case 3:listeners[i].fn.call(listeners[i].context,a1,a2);break;case 4:listeners[i].fn.call(listeners[i].context,a1,a2,a3);break;default:if(!args)for(j=1,args=new Array(len-1);j<len;j++)args[j-1]=arguments[j];listeners[i].fn.apply(listeners[i].context,args)}}return!0};EventEmitter.prototype.on=function(event,fn,context){return addListener(this,event,fn,context,!1)};EventEmitter.prototype.once=function(event,fn,context){return addListener(this,event,fn,context,!0)};EventEmitter.prototype.removeListener=function(event,fn,context,once){var evt=prefix?prefix+event:event;if(!this._events[evt])return this;if(!fn)return clearEvent(this,evt),this;var listeners=this._events[evt];if(listeners.fn)listeners.fn===fn&&(!once||listeners.once)&&(!context||listeners.context===context)&&clearEvent(this,evt);else{for(var i=0,events=[],length=listeners.length;i<length;i++)(listeners[i].fn!==fn||once&&!listeners[i].once||context&&listeners[i].context!==context)&&events.push(listeners[i]);events.length?this._events[evt]=events.length===1?events[0]:events:clearEvent(this,evt)}return this};EventEmitter.prototype.removeAllListeners=function(event){var evt;return event?(evt=prefix?prefix+event:event,this._events[evt]&&clearEvent(this,evt)):(this._events=new Events,this._eventsCount=0),this};EventEmitter.prototype.off=EventEmitter.prototype.removeListener;EventEmitter.prototype.addListener=EventEmitter.prototype.on;EventEmitter.prefixed=prefix;EventEmitter.EventEmitter=EventEmitter;typeof module2<"u"&&(module2.exports=EventEmitter)}});var require_requires_port=__commonJS({"node_modules/requires-port/index.js"(exports2,module2){"use strict";module2.exports=function(port,protocol){if(protocol=protocol.split(":")[0],port=+port,!port)return!1;switch(protocol){case"http":case"ws":return port!==80;case"https":case"wss":return port!==443;case"ftp":return port!==21;case"gopher":return port!==70;case"file":return!1}return port!==0}}});var require_common2=__commonJS({"node_modules/http-proxy/lib/http-proxy/common.js"(exports2){var common=exports2,url=require("url"),extend=require("util")._extend,required=require_requires_port(),upgradeHeader=/(^|,)\s*upgrade\s*($|,)/i,isSSL=/^https|wss/;common.isSSL=isSSL;common.setupOutgoing=function(outgoing,options,req,forward){outgoing.port=options[forward||"target"].port||(isSSL.test(options[forward||"target"].protocol)?443:80),["host","hostname","socketPath","pfx","key","passphrase","cert","ca","ciphers","secureProtocol"].forEach(function(e){outgoing[e]=options[forward||"target"][e]}),outgoing.method=options.method||req.method,outgoing.headers=extend({},req.headers),options.headers&&extend(outgoing.headers,options.headers),options.auth&&(outgoing.auth=options.auth),options.ca&&(outgoing.ca=options.ca),isSSL.test(options[forward||"target"].protocol)&&(outgoing.rejectUnauthorized=typeof options.secure>"u"?!0:options.secure),outgoing.agent=options.agent||!1,outgoing.localAddress=options.localAddress,outgoing.agent||(outgoing.headers=outgoing.headers||{},(typeof outgoing.headers.connection!="string"||!upgradeHeader.test(outgoing.headers.connection))&&(outgoing.headers.connection="close"));var target=options[forward||"target"],targetPath=target&&options.prependPath!==!1&&target.path||"",outgoingPath=options.toProxy?req.url:url.parse(req.url).path||"";return outgoingPath=options.ignorePath?"":outgoingPath,outgoing.path=common.urlJoin(targetPath,outgoingPath),options.changeOrigin&&(outgoing.headers.host=required(outgoing.port,options[forward||"target"].protocol)&&!hasPort(outgoing.host)?outgoing.host+":"+outgoing.port:outgoing.host),outgoing};common.setupSocket=function(socket){return socket.setTimeout(0),socket.setNoDelay(!0),socket.setKeepAlive(!0,0),socket};common.getPort=function(req){var res=req.headers.host?req.headers.host.match(/:(\d+)/):"";return res?res[1]:common.hasEncryptedConnection(req)?"443":"80"};common.hasEncryptedConnection=function(req){return!!(req.connection.encrypted||req.connection.pair)};common.urlJoin=function(){var args=Array.prototype.slice.call(arguments),lastIndex=args.length-1,last=args[lastIndex],lastSegs=last.split("?"),retSegs;return args[lastIndex]=lastSegs.shift(),retSegs=[args.filter(Boolean).join("/").replace(/\/+/g,"/").replace("http:/","http://").replace("https:/","https://")],retSegs.push.apply(retSegs,lastSegs),retSegs.join("?")};common.rewriteCookieProperty=function rewriteCookieProperty(header,config,property){return Array.isArray(header)?header.map(function(headerElement){return rewriteCookieProperty(headerElement,config,property)}):header.replace(new RegExp("(;\\s*"+property+"=)([^;]+)","i"),function(match,prefix,previousValue){var newValue;if(previousValue in config)newValue=config[previousValue];else if("*"in config)newValue=config["*"];else return match;return newValue?prefix+newValue:""})};function hasPort(host){return!!~host.indexOf(":")}}});var require_web_outgoing=__commonJS({"node_modules/http-proxy/lib/http-proxy/passes/web-outgoing.js"(exports2,module2){var url=require("url"),common=require_common2(),redirectRegex=/^201|30(1|2|7|8)$/;module2.exports={removeChunked:function(req,res,proxyRes){req.httpVersion==="1.0"&&delete proxyRes.headers["transfer-encoding"]},setConnection:function(req,res,proxyRes){req.httpVersion==="1.0"?proxyRes.headers.connection=req.headers.connection||"close":req.httpVersion!=="2.0"&&!proxyRes.headers.connection&&(proxyRes.headers.connection=req.headers.connection||"keep-alive")},setRedirectHostRewrite:function(req,res,proxyRes,options){if((options.hostRewrite||options.autoRewrite||options.protocolRewrite)&&proxyRes.headers.location&&redirectRegex.test(proxyRes.statusCode)){var target=url.parse(options.target),u=url.parse(proxyRes.headers.location);if(target.host!=u.host)return;options.hostRewrite?u.host=options.hostRewrite:options.autoRewrite&&(u.host=req.headers.host),options.protocolRewrite&&(u.protocol=options.protocolRewrite),proxyRes.headers.location=u.format()}},writeHeaders:function(req,res,proxyRes,options){var rewriteCookieDomainConfig=options.cookieDomainRewrite,rewriteCookiePathConfig=options.cookiePathRewrite,preserveHeaderKeyCase=options.preserveHeaderKeyCase,rawHeaderKeyMap,setHeader=function(key2,header){header!=null&&(rewriteCookieDomainConfig&&key2.toLowerCase()==="set-cookie"&&(header=common.rewriteCookieProperty(header,rewriteCookieDomainConfig,"domain")),rewriteCookiePathConfig&&key2.toLowerCase()==="set-cookie"&&(header=common.rewriteCookieProperty(header,rewriteCookiePathConfig,"path")),res.setHeader(String(key2).trim(),header))};if(typeof rewriteCookieDomainConfig=="string"&&(rewriteCookieDomainConfig={"*":rewriteCookieDomainConfig}),typeof rewriteCookiePathConfig=="string"&&(rewriteCookiePathConfig={"*":rewriteCookiePathConfig}),preserveHeaderKeyCase&&proxyRes.rawHeaders!=null){rawHeaderKeyMap={};for(var i=0;i<proxyRes.rawHeaders.length;i+=2){var key=proxyRes.rawHeaders[i];rawHeaderKeyMap[key.toLowerCase()]=key}}Object.keys(proxyRes.headers).forEach(function(key2){var header=proxyRes.headers[key2];preserveHeaderKeyCase&&rawHeaderKeyMap&&(key2=rawHeaderKeyMap[key2]||key2),setHeader(key2,header)})},writeStatusCode:function(req,res,proxyRes){proxyRes.statusMessage?(res.statusCode=proxyRes.statusCode,res.statusMessage=proxyRes.statusMessage):res.statusCode=proxyRes.statusCode}}}});var require_ms6=__commonJS({"node_modules/debug/node_modules/ms/index.js"(exports2,module2){var s=1e3,m=s*60,h=m*60,d=h*24,w=d*7,y=d*365.25;module2.exports=function(val,options){options=options||{};var type=typeof val;if(type==="string"&&val.length>0)return parse(val);if(type==="number"&&isFinite(val))return options.long?fmtLong(val):fmtShort(val);throw new Error("val is not a non-empty string or a valid number. val="+JSON.stringify(val))};function parse(str){if(str=String(str),!(str.length>100)){var match=/^(-?(?:\d+)?\.?\d+) *(milliseconds?|msecs?|ms|seconds?|secs?|s|minutes?|mins?|m|hours?|hrs?|h|days?|d|weeks?|w|years?|yrs?|y)?$/i.exec(str);if(match){var n=parseFloat(match[1]),type=(match[2]||"ms").toLowerCase();switch(type){case"years":case"year":case"yrs":case"yr":case"y":return n*y;case"weeks":case"week":case"w":return n*w;case"days":case"day":case"d":return n*d;case"hours":case"hour":case"hrs":case"hr":case"h":return n*h;case"minutes":case"minute":case"mins":case"min":case"m":return n*m;case"seconds":case"second":case"secs":case"sec":case"s":return n*s;case"milliseconds":case"millisecond":case"msecs":case"msec":case"ms":return n;default:return}}}}function fmtShort(ms){var msAbs=Math.abs(ms);return msAbs>=d?Math.round(ms/d)+"d":msAbs>=h?Math.round(ms/h)+"h":msAbs>=m?Math.round(ms/m)+"m":msAbs>=s?Math.round(ms/s)+"s":ms+"ms"}function fmtLong(ms){var msAbs=Math.abs(ms);return msAbs>=d?plural(ms,msAbs,d,"day"):msAbs>=h?plural(ms,msAbs,h,"hour"):msAbs>=m?plural(ms,msAbs,m,"minute"):msAbs>=s?plural(ms,msAbs,s,"second"):ms+" ms"}function plural(ms,msAbs,n,name){var isPlural=msAbs>=n*1.5;return Math.round(ms/n)+" "+name+(isPlural?"s":"")}}});var require_common3=__commonJS({"node_modules/debug/src/common.js"(exports2,module2){function setup(env){createDebug.debug=createDebug,createDebug.default=createDebug,createDebug.coerce=coerce,createDebug.disable=disable,createDebug.enable=enable,createDebug.enabled=enabled,createDebug.humanize=require_ms6(),createDebug.destroy=destroy,Object.keys(env).forEach(key=>{createDebug[key]=env[key]}),createDebug.names=[],createDebug.skips=[],createDebug.formatters={};function selectColor(namespace){let hash=0;for(let i=0;i<namespace.length;i++)hash=(hash<<5)-hash+namespace.charCodeAt(i),hash|=0;return createDebug.colors[Math.abs(hash)%createDebug.colors.length]}createDebug.selectColor=selectColor;function createDebug(namespace){let prevTime,enableOverride=null,namespacesCache,enabledCache;function debug(...args){if(!debug.enabled)return;let self2=debug,curr=Number(new Date),ms=curr-(prevTime||curr);self2.diff=ms,self2.prev=prevTime,self2.curr=curr,prevTime=curr,args[0]=createDebug.coerce(args[0]),typeof args[0]!="string"&&args.unshift("%O");let index=0;args[0]=args[0].replace(/%([a-zA-Z%])/g,(match,format)=>{if(match==="%%")return"%";index++;let formatter=createDebug.formatters[format];if(typeof formatter=="function"){let val=args[index];match=formatter.call(self2,val),args.splice(index,1),index--}return match}),createDebug.formatArgs.call(self2,args),(self2.log||createDebug.log).apply(self2,args)}return debug.namespace=namespace,debug.useColors=createDebug.useColors(),debug.color=createDebug.selectColor(namespace),debug.extend=extend,debug.destroy=createDebug.destroy,Object.defineProperty(debug,"enabled",{enumerable:!0,configurable:!1,get:()=>enableOverride!==null?enableOverride:(namespacesCache!==createDebug.namespaces&&(namespacesCache=createDebug.namespaces,enabledCache=createDebug.enabled(namespace)),enabledCache),set:v=>{enableOverride=v}}),typeof createDebug.init=="function"&&createDebug.init(debug),debug}function extend(namespace,delimiter){let newDebug=createDebug(this.namespace+(typeof delimiter>"u"?":":delimiter)+namespace);return newDebug.log=this.log,newDebug}function enable(namespaces){createDebug.save(namespaces),createDebug.namespaces=namespaces,createDebug.names=[],createDebug.skips=[];let i,split=(typeof namespaces=="string"?namespaces:"").split(/[\s,]+/),len=split.length;for(i=0;i<len;i++)split[i]&&(namespaces=split[i].replace(/\*/g,".*?"),namespaces[0]==="-"?createDebug.skips.push(new RegExp("^"+namespaces.slice(1)+"$")):createDebug.names.push(new RegExp("^"+namespaces+"$")))}function disable(){let namespaces=[...createDebug.names.map(toNamespace),...createDebug.skips.map(toNamespace).map(namespace=>"-"+namespace)].join(",");return createDebug.enable(""),namespaces}function enabled(name){if(name[name.length-1]==="*")return!0;let i,len;for(i=0,len=createDebug.skips.length;i<len;i++)if(createDebug.skips[i].test(name))return!1;for(i=0,len=createDebug.names.length;i<len;i++)if(createDebug.names[i].test(name))return!0;return!1}function toNamespace(regexp){return regexp.toString().substring(2,regexp.toString().length-2).replace(/\.\*\?$/,"*")}function coerce(val){return val instanceof Error?val.stack||val.message:val}function destroy(){console.warn("Instance method `debug.destroy()` is deprecated and no longer does anything. It will be removed in the next major version of `debug`.")}return createDebug.enable(createDebug.load()),createDebug}module2.exports=setup}});var require_browser6=__commonJS({"node_modules/debug/src/browser.js"(exports2,module2){exports2.formatArgs=formatArgs;exports2.save=save;exports2.load=load2;exports2.useColors=useColors;exports2.storage=localstorage();exports2.destroy=(()=>{let warned=!1;return()=>{warned||(warned=!0,console.warn("Instance method `debug.destroy()` is deprecated and no longer does anything. It will be removed in the next major version of `debug`."))}})();exports2.colors=["#0000CC","#0000FF","#0033CC","#0033FF","#0066CC","#0066FF","#0099CC","#0099FF","#00CC00","#00CC33","#00CC66","#00CC99","#00CCCC","#00CCFF","#3300CC","#3300FF","#3333CC","#3333FF","#3366CC","#3366FF","#3399CC","#3399FF","#33CC00","#33CC33","#33CC66","#33CC99","#33CCCC","#33CCFF","#6600CC","#6600FF","#6633CC","#6633FF","#66CC00","#66CC33","#9900CC","#9900FF","#9933CC","#9933FF","#99CC00","#99CC33","#CC0000","#CC0033","#CC0066","#CC0099","#CC00CC","#CC00FF","#CC3300","#CC3333","#CC3366","#CC3399","#CC33CC","#CC33FF","#CC6600","#CC6633","#CC9900","#CC9933","#CCCC00","#CCCC33","#FF0000","#FF0033","#FF0066","#FF0099","#FF00CC","#FF00FF","#FF3300","#FF3333","#FF3366","#FF3399","#FF33CC","#FF33FF","#FF6600","#FF6633","#FF9900","#FF9933","#FFCC00","#FFCC33"];function useColors(){return typeof window<"u"&&window.process&&(window.process.type==="renderer"||window.process.__nwjs)?!0:typeof navigator<"u"&&navigator.userAgent&&navigator.userAgent.toLowerCase().match(/(edge|trident)\/(\d+)/)?!1:typeof document<"u"&&document.documentElement&&document.documentElement.style&&document.documentElement.style.WebkitAppearance||typeof window<"u"&&window.console&&(window.console.firebug||window.console.exception&&window.console.table)||typeof navigator<"u"&&navigator.userAgent&&navigator.userAgent.toLowerCase().match(/firefox\/(\d+)/)&&parseInt(RegExp.$1,10)>=31||typeof navigator<"u"&&navigator.userAgent&&navigator.userAgent.toLowerCase().match(/applewebkit\/(\d+)/)}function formatArgs(args){if(args[0]=(this.useColors?"%c":"")+this.namespace+(this.useColors?" %c":" ")+args[0]+(this.useColors?"%c ":" ")+"+"+module2.exports.humanize(this.diff),!this.useColors)return;let c="color: "+this.color;args.splice(1,0,c,"color: inherit");let index=0,lastC=0;args[0].replace(/%[a-zA-Z%]/g,match=>{match!=="%%"&&(index++,match==="%c"&&(lastC=index))}),args.splice(lastC,0,c)}exports2.log=console.debug||console.log||(()=>{});function save(namespaces){try{namespaces?exports2.storage.setItem("debug",namespaces):exports2.storage.removeItem("debug")}catch{}}function load2(){let r;try{r=exports2.storage.getItem("debug")}catch{}return!r&&typeof process<"u"&&"env"in process&&(r=process.env.DEBUG),r}function localstorage(){try{return localStorage}catch{}}module2.exports=require_common3()(exports2);var{formatters}=module2.exports;formatters.j=function(v){try{return JSON.stringify(v)}catch(error){return"[UnexpectedJSONParseError]: "+error.message}}}});var require_node6=__commonJS({"node_modules/debug/src/node.js"(exports2,module2){var tty=require("tty"),util=require("util");exports2.init=init;exports2.log=log;exports2.formatArgs=formatArgs;exports2.save=save;exports2.load=load2;exports2.useColors=useColors;exports2.destroy=util.deprecate(()=>{},"Instance method `debug.destroy()` is deprecated and no longer does anything. It will be removed in the next major version of `debug`.");exports2.colors=[6,2,3,4,5,1];try{let supportsColor=require_supports_color();supportsColor&&(supportsColor.stderr||supportsColor).level>=2&&(exports2.colors=[20,21,26,27,32,33,38,39,40,41,42,43,44,45,56,57,62,63,68,69,74,75,76,77,78,79,80,81,92,93,98,99,112,113,128,129,134,135,148,149,160,161,162,163,164,165,166,167,168,169,170,171,172,173,178,179,184,185,196,197,198,199,200,201,202,203,204,205,206,207,208,209,214,215,220,221])}catch{}exports2.inspectOpts=Object.keys(process.env).filter(key=>/^debug_/i.test(key)).reduce((obj,key)=>{let prop=key.substring(6).toLowerCase().replace(/_([a-z])/g,(_,k)=>k.toUpperCase()),val=process.env[key];return/^(yes|on|true|enabled)$/i.test(val)?val=!0:/^(no|off|false|disabled)$/i.test(val)?val=!1:val==="null"?val=null:val=Number(val),obj[prop]=val,obj},{});function useColors(){return"colors"in exports2.inspectOpts?!!exports2.inspectOpts.colors:tty.isatty(process.stderr.fd)}function formatArgs(args){let{namespace:name,useColors:useColors2}=this;if(useColors2){let c=this.color,colorCode="\x1B[3"+(c<8?c:"8;5;"+c),prefix=` ${colorCode};1m${name} \x1B[0m`;args[0]=prefix+args[0].split(`
|
|
240
243
|
`).join(`
|
|
@@ -243,13 +246,13 @@ nodemon: mockServer restarted due to: `),files,colors.green(" have changed"),`
|
|
|
243
246
|
`).map(str=>str.trim()).join(" ")};formatters.O=function(v){return this.inspectOpts.colors=this.useColors,util.inspect(v,this.inspectOpts)}}});var require_src6=__commonJS({"node_modules/debug/src/index.js"(exports2,module2){typeof process>"u"||process.type==="renderer"||process.browser===!0||process.__nwjs?module2.exports=require_browser6():module2.exports=require_node6()}});var require_debug5=__commonJS({"node_modules/follow-redirects/debug.js"(exports2,module2){var debug;module2.exports=function(){if(!debug){try{debug=require_src6()("follow-redirects")}catch{}typeof debug!="function"&&(debug=function(){})}debug.apply(null,arguments)}}});var require_follow_redirects=__commonJS({"node_modules/follow-redirects/index.js"(exports2,module2){var url=require("url"),URL2=url.URL,http=require("http"),https=require("https"),Writable=require("stream").Writable,assert=require("assert"),debug=require_debug5(),events=["abort","aborted","connect","error","socket","timeout"],eventHandlers=Object.create(null);events.forEach(function(event){eventHandlers[event]=function(arg1,arg2,arg3){this._redirectable.emit(event,arg1,arg2,arg3)}});var InvalidUrlError=createErrorType("ERR_INVALID_URL","Invalid URL",TypeError),RedirectionError=createErrorType("ERR_FR_REDIRECTION_FAILURE","Redirected request failed"),TooManyRedirectsError=createErrorType("ERR_FR_TOO_MANY_REDIRECTS","Maximum number of redirects exceeded"),MaxBodyLengthExceededError=createErrorType("ERR_FR_MAX_BODY_LENGTH_EXCEEDED","Request body larger than maxBodyLength limit"),WriteAfterEndError=createErrorType("ERR_STREAM_WRITE_AFTER_END","write after end");function RedirectableRequest(options,responseCallback){Writable.call(this),this._sanitizeOptions(options),this._options=options,this._ended=!1,this._ending=!1,this._redirectCount=0,this._redirects=[],this._requestBodyLength=0,this._requestBodyBuffers=[],responseCallback&&this.on("response",responseCallback);var self2=this;this._onNativeResponse=function(response){self2._processResponse(response)},this._performRequest()}RedirectableRequest.prototype=Object.create(Writable.prototype);RedirectableRequest.prototype.abort=function(){abortRequest(this._currentRequest),this.emit("abort")};RedirectableRequest.prototype.write=function(data,encoding,callback){if(this._ending)throw new WriteAfterEndError;if(!isString(data)&&!isBuffer(data))throw new TypeError("data should be a string, Buffer or Uint8Array");if(isFunction(encoding)&&(callback=encoding,encoding=null),data.length===0){callback&&callback();return}this._requestBodyLength+data.length<=this._options.maxBodyLength?(this._requestBodyLength+=data.length,this._requestBodyBuffers.push({data,encoding}),this._currentRequest.write(data,encoding,callback)):(this.emit("error",new MaxBodyLengthExceededError),this.abort())};RedirectableRequest.prototype.end=function(data,encoding,callback){if(isFunction(data)?(callback=data,data=encoding=null):isFunction(encoding)&&(callback=encoding,encoding=null),!data)this._ended=this._ending=!0,this._currentRequest.end(null,null,callback);else{var self2=this,currentRequest=this._currentRequest;this.write(data,encoding,function(){self2._ended=!0,currentRequest.end(null,null,callback)}),this._ending=!0}};RedirectableRequest.prototype.setHeader=function(name,value){this._options.headers[name]=value,this._currentRequest.setHeader(name,value)};RedirectableRequest.prototype.removeHeader=function(name){delete this._options.headers[name],this._currentRequest.removeHeader(name)};RedirectableRequest.prototype.setTimeout=function(msecs,callback){var self2=this;function destroyOnTimeout(socket){socket.setTimeout(msecs),socket.removeListener("timeout",socket.destroy),socket.addListener("timeout",socket.destroy)}function startTimer(socket){self2._timeout&&clearTimeout(self2._timeout),self2._timeout=setTimeout(function(){self2.emit("timeout"),clearTimer()},msecs),destroyOnTimeout(socket)}function clearTimer(){self2._timeout&&(clearTimeout(self2._timeout),self2._timeout=null),self2.removeListener("abort",clearTimer),self2.removeListener("error",clearTimer),self2.removeListener("response",clearTimer),callback&&self2.removeListener("timeout",callback),self2.socket||self2._currentRequest.removeListener("socket",startTimer)}return callback&&this.on("timeout",callback),this.socket?startTimer(this.socket):this._currentRequest.once("socket",startTimer),this.on("socket",destroyOnTimeout),this.on("abort",clearTimer),this.on("error",clearTimer),this.on("response",clearTimer),this};["flushHeaders","getHeader","setNoDelay","setSocketKeepAlive"].forEach(function(method){RedirectableRequest.prototype[method]=function(a,b){return this._currentRequest[method](a,b)}});["aborted","connection","socket"].forEach(function(property){Object.defineProperty(RedirectableRequest.prototype,property,{get:function(){return this._currentRequest[property]}})});RedirectableRequest.prototype._sanitizeOptions=function(options){if(options.headers||(options.headers={}),options.host&&(options.hostname||(options.hostname=options.host),delete options.host),!options.pathname&&options.path){var searchPos=options.path.indexOf("?");searchPos<0?options.pathname=options.path:(options.pathname=options.path.substring(0,searchPos),options.search=options.path.substring(searchPos))}};RedirectableRequest.prototype._performRequest=function(){var protocol=this._options.protocol,nativeProtocol=this._options.nativeProtocols[protocol];if(!nativeProtocol){this.emit("error",new TypeError("Unsupported protocol "+protocol));return}if(this._options.agents){var scheme=protocol.slice(0,-1);this._options.agent=this._options.agents[scheme]}var request=this._currentRequest=nativeProtocol.request(this._options,this._onNativeResponse);request._redirectable=this;for(var event of events)request.on(event,eventHandlers[event]);if(this._currentUrl=/^\//.test(this._options.path)?url.format(this._options):this._options.path,this._isRedirect){var i=0,self2=this,buffers=this._requestBodyBuffers;(function writeNext(error){if(request===self2._currentRequest)if(error)self2.emit("error",error);else if(i<buffers.length){var buffer=buffers[i++];request.finished||request.write(buffer.data,buffer.encoding,writeNext)}else self2._ended&&request.end()})()}};RedirectableRequest.prototype._processResponse=function(response){var statusCode=response.statusCode;this._options.trackRedirects&&this._redirects.push({url:this._currentUrl,headers:response.headers,statusCode});var location=response.headers.location;if(!location||this._options.followRedirects===!1||statusCode<300||statusCode>=400){response.responseUrl=this._currentUrl,response.redirects=this._redirects,this.emit("response",response),this._requestBodyBuffers=[];return}if(abortRequest(this._currentRequest),response.destroy(),++this._redirectCount>this._options.maxRedirects){this.emit("error",new TooManyRedirectsError);return}var requestHeaders,beforeRedirect=this._options.beforeRedirect;beforeRedirect&&(requestHeaders=Object.assign({Host:response.req.getHeader("host")},this._options.headers));var method=this._options.method;((statusCode===301||statusCode===302)&&this._options.method==="POST"||statusCode===303&&!/^(?:GET|HEAD)$/.test(this._options.method))&&(this._options.method="GET",this._requestBodyBuffers=[],removeMatchingHeaders(/^content-/i,this._options.headers));var currentHostHeader=removeMatchingHeaders(/^host$/i,this._options.headers),currentUrlParts=url.parse(this._currentUrl),currentHost=currentHostHeader||currentUrlParts.host,currentUrl=/^\w+:/.test(location)?this._currentUrl:url.format(Object.assign(currentUrlParts,{host:currentHost})),redirectUrl;try{redirectUrl=url.resolve(currentUrl,location)}catch(cause){this.emit("error",new RedirectionError({cause}));return}debug("redirecting to",redirectUrl),this._isRedirect=!0;var redirectUrlParts=url.parse(redirectUrl);if(Object.assign(this._options,redirectUrlParts),(redirectUrlParts.protocol!==currentUrlParts.protocol&&redirectUrlParts.protocol!=="https:"||redirectUrlParts.host!==currentHost&&!isSubdomain(redirectUrlParts.host,currentHost))&&removeMatchingHeaders(/^(?:authorization|cookie)$/i,this._options.headers),isFunction(beforeRedirect)){var responseDetails={headers:response.headers,statusCode},requestDetails={url:currentUrl,method,headers:requestHeaders};try{beforeRedirect(this._options,responseDetails,requestDetails)}catch(err){this.emit("error",err);return}this._sanitizeOptions(this._options)}try{this._performRequest()}catch(cause){this.emit("error",new RedirectionError({cause}))}};function wrap(protocols){var exports3={maxRedirects:21,maxBodyLength:10485760},nativeProtocols={};return Object.keys(protocols).forEach(function(scheme){var protocol=scheme+":",nativeProtocol=nativeProtocols[protocol]=protocols[scheme],wrappedProtocol=exports3[scheme]=Object.create(nativeProtocol);function request(input,options,callback){if(isString(input)){var parsed;try{parsed=urlToOptions(new URL2(input))}catch{parsed=url.parse(input)}if(!isString(parsed.protocol))throw new InvalidUrlError({input});input=parsed}else URL2&&input instanceof URL2?input=urlToOptions(input):(callback=options,options=input,input={protocol});return isFunction(options)&&(callback=options,options=null),options=Object.assign({maxRedirects:exports3.maxRedirects,maxBodyLength:exports3.maxBodyLength},input,options),options.nativeProtocols=nativeProtocols,!isString(options.host)&&!isString(options.hostname)&&(options.hostname="::1"),assert.equal(options.protocol,protocol,"protocol mismatch"),debug("options",options),new RedirectableRequest(options,callback)}function get(input,options,callback){var wrappedRequest=wrappedProtocol.request(input,options,callback);return wrappedRequest.end(),wrappedRequest}Object.defineProperties(wrappedProtocol,{request:{value:request,configurable:!0,enumerable:!0,writable:!0},get:{value:get,configurable:!0,enumerable:!0,writable:!0}})}),exports3}function noop(){}function urlToOptions(urlObject){var options={protocol:urlObject.protocol,hostname:urlObject.hostname.startsWith("[")?urlObject.hostname.slice(1,-1):urlObject.hostname,hash:urlObject.hash,search:urlObject.search,pathname:urlObject.pathname,path:urlObject.pathname+urlObject.search,href:urlObject.href};return urlObject.port!==""&&(options.port=Number(urlObject.port)),options}function removeMatchingHeaders(regex,headers){var lastValue;for(var header in headers)regex.test(header)&&(lastValue=headers[header],delete headers[header]);return lastValue===null||typeof lastValue>"u"?void 0:String(lastValue).trim()}function createErrorType(code,message,baseClass){function CustomError(properties){Error.captureStackTrace(this,this.constructor),Object.assign(this,properties||{}),this.code=code,this.message=this.cause?message+": "+this.cause.message:message}return CustomError.prototype=new(baseClass||Error),CustomError.prototype.constructor=CustomError,CustomError.prototype.name="Error ["+code+"]",CustomError}function abortRequest(request){for(var event of events)request.removeListener(event,eventHandlers[event]);request.on("error",noop),request.abort()}function isSubdomain(subdomain,domain){assert(isString(subdomain)&&isString(domain));var dot=subdomain.length-domain.length-1;return dot>0&&subdomain[dot]==="."&&subdomain.endsWith(domain)}function isString(value){return typeof value=="string"||value instanceof String}function isFunction(value){return typeof value=="function"}function isBuffer(value){return typeof value=="object"&&"length"in value}module2.exports=wrap({http,https});module2.exports.wrap=wrap}});var require_web_incoming=__commonJS({"node_modules/http-proxy/lib/http-proxy/passes/web-incoming.js"(exports2,module2){var httpNative=require("http"),httpsNative=require("https"),web_o=require_web_outgoing(),common=require_common2(),followRedirects=require_follow_redirects();web_o=Object.keys(web_o).map(function(pass){return web_o[pass]});var nativeAgents={http:httpNative,https:httpsNative};module2.exports={deleteLength:function(req,res,options){(req.method==="DELETE"||req.method==="OPTIONS")&&!req.headers["content-length"]&&(req.headers["content-length"]="0",delete req.headers["transfer-encoding"])},timeout:function(req,res,options){options.timeout&&req.socket.setTimeout(options.timeout)},XHeaders:function(req,res,options){if(options.xfwd){var encrypted=req.isSpdy||common.hasEncryptedConnection(req),values={for:req.connection.remoteAddress||req.socket.remoteAddress,port:common.getPort(req),proto:encrypted?"https":"http"};["for","port","proto"].forEach(function(header){req.headers["x-forwarded-"+header]=(req.headers["x-forwarded-"+header]||"")+(req.headers["x-forwarded-"+header]?",":"")+values[header]}),req.headers["x-forwarded-host"]=req.headers["x-forwarded-host"]||req.headers.host||""}},stream:function(req,res,options,_,server,clb){server.emit("start",req,res,options.target||options.forward);var agents=options.followRedirects?followRedirects:nativeAgents,http=agents.http,https=agents.https;if(options.forward){var forwardReq=(options.forward.protocol==="https:"?https:http).request(common.setupOutgoing(options.ssl||{},options,req,"forward")),forwardError=createErrorHandler(forwardReq,options.forward);if(req.on("error",forwardError),forwardReq.on("error",forwardError),(options.buffer||req).pipe(forwardReq),!options.target)return res.end()}var proxyReq=(options.target.protocol==="https:"?https:http).request(common.setupOutgoing(options.ssl||{},options,req));proxyReq.on("socket",function(socket){server&&!proxyReq.getHeader("expect")&&server.emit("proxyReq",proxyReq,req,res,options)}),options.proxyTimeout&&proxyReq.setTimeout(options.proxyTimeout,function(){proxyReq.abort()}),req.on("aborted",function(){proxyReq.abort()});var proxyError=createErrorHandler(proxyReq,options.target);req.on("error",proxyError),proxyReq.on("error",proxyError);function createErrorHandler(proxyReq2,url){return function(err){if(req.socket.destroyed&&err.code==="ECONNRESET")return server.emit("econnreset",err,req,res,url),proxyReq2.abort();clb?clb(err,req,res,url):server.emit("error",err,req,res,url)}}(options.buffer||req).pipe(proxyReq),proxyReq.on("response",function(proxyRes){if(server&&server.emit("proxyRes",proxyRes,req,res),!res.headersSent&&!options.selfHandleResponse)for(var i=0;i<web_o.length&&!web_o[i](req,res,proxyRes,options);i++);res.finished?server&&server.emit("end",req,res,proxyRes):(proxyRes.on("end",function(){server&&server.emit("end",req,res,proxyRes)}),options.selfHandleResponse||proxyRes.pipe(res))})}}}});var require_ws_incoming=__commonJS({"node_modules/http-proxy/lib/http-proxy/passes/ws-incoming.js"(exports2,module2){var http=require("http"),https=require("https"),common=require_common2();module2.exports={checkMethodAndHeader:function(req,socket){if(req.method!=="GET"||!req.headers.upgrade||req.headers.upgrade.toLowerCase()!=="websocket")return socket.destroy(),!0},XHeaders:function(req,socket,options){if(options.xfwd){var values={for:req.connection.remoteAddress||req.socket.remoteAddress,port:common.getPort(req),proto:common.hasEncryptedConnection(req)?"wss":"ws"};["for","port","proto"].forEach(function(header){req.headers["x-forwarded-"+header]=(req.headers["x-forwarded-"+header]||"")+(req.headers["x-forwarded-"+header]?",":"")+values[header]})}},stream:function(req,socket,options,head,server,clb){var createHttpHeader=function(line,headers){return Object.keys(headers).reduce(function(head2,key){var value=headers[key];if(!Array.isArray(value))return head2.push(key+": "+value),head2;for(var i=0;i<value.length;i++)head2.push(key+": "+value[i]);return head2},[line]).join(`\r
|
|
244
247
|
`)+`\r
|
|
245
248
|
\r
|
|
246
|
-
`};common.setupSocket(socket),head&&head.length&&socket.unshift(head);var proxyReq=(common.isSSL.test(options.target.protocol)?https:http).request(common.setupOutgoing(options.ssl||{},options,req));return server&&server.emit("proxyReqWs",proxyReq,req,socket,options,head),proxyReq.on("error",onOutgoingError),proxyReq.on("response",function(res){res.upgrade||(socket.write(createHttpHeader("HTTP/"+res.httpVersion+" "+res.statusCode+" "+res.statusMessage,res.headers)),res.pipe(socket))}),proxyReq.on("upgrade",function(proxyRes,proxySocket,proxyHead){proxySocket.on("error",onOutgoingError),proxySocket.on("end",function(){server.emit("close",proxyRes,proxySocket,proxyHead)}),socket.on("error",function(){proxySocket.end()}),common.setupSocket(proxySocket),proxyHead&&proxyHead.length&&proxySocket.unshift(proxyHead),socket.write(createHttpHeader("HTTP/1.1 101 Switching Protocols",proxyRes.headers)),proxySocket.pipe(socket).pipe(proxySocket),server.emit("open",proxySocket),server.emit("proxySocket",proxySocket)}),proxyReq.end();function onOutgoingError(err){clb?clb(err,req,socket):server.emit("error",err,req,socket),socket.end()}}}}});var require_http_proxy=__commonJS({"node_modules/http-proxy/lib/http-proxy/index.js"(exports2,module2){var httpProxy=module2.exports,extend=require("util")._extend,parse_url=require("url").parse,EE3=require_eventemitter3(),http=require("http"),https=require("https"),web=require_web_incoming(),ws=require_ws_incoming();httpProxy.Server=ProxyServer;function createRightProxy(type){return function(options){return function(req,res){var passes=type==="ws"?this.wsPasses:this.webPasses,args=[].slice.call(arguments),cntr=args.length-1,head,cbl;typeof args[cntr]=="function"&&(cbl=args[cntr],cntr--);var requestOptions=options;if(!(args[cntr]instanceof Buffer)&&args[cntr]!==res&&(requestOptions=extend({},options),extend(requestOptions,args[cntr]),cntr--),args[cntr]instanceof Buffer&&(head=args[cntr]),["target","forward"].forEach(function(e){typeof requestOptions[e]=="string"&&(requestOptions[e]=parse_url(requestOptions[e]))}),!requestOptions.target&&!requestOptions.forward)return this.emit("error",new Error("Must provide a proper URL as target"));for(var i=0;i<passes.length&&!passes[i](req,res,requestOptions,head,this,cbl);i++);}}}httpProxy.createRightProxy=createRightProxy;function ProxyServer(options){EE3.call(this),options=options||{},options.prependPath=options.prependPath!==!1,this.web=this.proxyRequest=createRightProxy("web")(options),this.ws=this.proxyWebsocketRequest=createRightProxy("ws")(options),this.options=options,this.webPasses=Object.keys(web).map(function(pass){return web[pass]}),this.wsPasses=Object.keys(ws).map(function(pass){return ws[pass]}),this.on("error",this.onError,this)}require("util").inherits(ProxyServer,EE3);ProxyServer.prototype.onError=function(err){if(this.listeners("error").length===1)throw err};ProxyServer.prototype.listen=function(port,hostname){var self2=this,closure=function(req,res){self2.web(req,res)};return this._server=this.options.ssl?https.createServer(this.options.ssl,closure):http.createServer(closure),this.options.ws&&this._server.on("upgrade",function(req,socket,head){self2.ws(req,socket,head)}),this._server.listen(port,hostname),this};ProxyServer.prototype.close=function(callback){var self2=this;this._server&&this._server.close(done);function done(){self2._server=null,callback&&callback.apply(null,arguments)}};ProxyServer.prototype.before=function(type,passName,callback){if(type!=="ws"&&type!=="web")throw new Error("type must be `web` or `ws`");var passes=type==="ws"?this.wsPasses:this.webPasses,i=!1;if(passes.forEach(function(v,idx){v.name===passName&&(i=idx)}),i===!1)throw new Error("No such pass");passes.splice(i,0,callback)};ProxyServer.prototype.after=function(type,passName,callback){if(type!=="ws"&&type!=="web")throw new Error("type must be `web` or `ws`");var passes=type==="ws"?this.wsPasses:this.webPasses,i=!1;if(passes.forEach(function(v,idx){v.name===passName&&(i=idx)}),i===!1)throw new Error("No such pass");passes.splice(i++,0,callback)}}});var require_http_proxy2=__commonJS({"node_modules/http-proxy/lib/http-proxy.js"(exports2,module2){var ProxyServer=require_http_proxy().Server;function createProxyServer(options){return new ProxyServer(options)}ProxyServer.createProxyServer=createProxyServer;ProxyServer.createServer=createProxyServer;ProxyServer.createProxy=createProxyServer;module2.exports=ProxyServer}});var require_http_proxy3=__commonJS({"node_modules/http-proxy/index.js"(exports2,module2){module2.exports=require_http_proxy2()}});var require_is_plain_obj=__commonJS({"node_modules/http-proxy-middleware/node_modules/is-plain-obj/index.js"(exports2,module2){"use strict";module2.exports=value=>{if(Object.prototype.toString.call(value)!=="[object Object]")return!1;let prototype=Object.getPrototypeOf(value);return prototype===null||prototype===Object.prototype}}});var require_errors2=__commonJS({"node_modules/http-proxy-middleware/dist/errors.js"(exports2){"use strict";Object.defineProperty(exports2,"__esModule",{value:!0});exports2.ERRORS=void 0;var ERRORS;(function(ERRORS2){ERRORS2.ERR_CONFIG_FACTORY_TARGET_MISSING='[HPM] Missing "target" option. Example: {target: "http://www.example.org"}',ERRORS2.ERR_CONTEXT_MATCHER_GENERIC='[HPM] Invalid context. Expecting something like: "/api" or ["/api", "/ajax"]',ERRORS2.ERR_CONTEXT_MATCHER_INVALID_ARRAY='[HPM] Invalid context. Expecting something like: ["/api", "/ajax"] or ["/api/**", "!**.html"]',ERRORS2.ERR_PATH_REWRITER_CONFIG="[HPM] Invalid pathRewrite config. Expecting object with pathRewrite config or a rewrite function"})(ERRORS=exports2.ERRORS||(exports2.ERRORS={}))}});var require_logger=__commonJS({"node_modules/http-proxy-middleware/dist/logger.js"(exports2){"use strict";Object.defineProperty(exports2,"__esModule",{value:!0});exports2.getArrow=exports2.getInstance=void 0;var util=require("util"),loggerInstance,defaultProvider={log:console.log,debug:console.log,info:console.info,warn:console.warn,error:console.error},LEVELS;(function(LEVELS2){LEVELS2[LEVELS2.debug=10]="debug",LEVELS2[LEVELS2.info=20]="info",LEVELS2[LEVELS2.warn=30]="warn",LEVELS2[LEVELS2.error=50]="error",LEVELS2[LEVELS2.silent=80]="silent"})(LEVELS||(LEVELS={}));function getInstance(){return loggerInstance||(loggerInstance=new Logger),loggerInstance}exports2.getInstance=getInstance;var Logger=class{constructor(){this.setLevel("info"),this.setProvider(()=>defaultProvider)}log(){this.provider.log(this._interpolate.apply(null,arguments))}debug(){this._showLevel("debug")&&this.provider.debug(this._interpolate.apply(null,arguments))}info(){this._showLevel("info")&&this.provider.info(this._interpolate.apply(null,arguments))}warn(){this._showLevel("warn")&&this.provider.warn(this._interpolate.apply(null,arguments))}error(){this._showLevel("error")&&this.provider.error(this._interpolate.apply(null,arguments))}setLevel(v){this.isValidLevel(v)&&(this.logLevel=v)}setProvider(fn){fn&&this.isValidProvider(fn)&&(this.provider=fn(defaultProvider))}isValidProvider(fnProvider){if(fnProvider&&typeof fnProvider!="function")throw new Error("[HPM] Log provider config error. Expecting a function.");return!0}isValidLevel(levelName){let isValid=Object.keys(LEVELS).includes(levelName);if(!isValid)throw new Error("[HPM] Log level error. Invalid logLevel.");return isValid}_showLevel(showLevel){let result=!1,currentLogLevel=LEVELS[this.logLevel];return currentLogLevel&¤tLogLevel<=LEVELS[showLevel]&&(result=!0),result}_interpolate(format,...args){return util.format(format,...args)}};function getArrow(originalPath,newPath,originalTarget,newTarget){let arrow=[">"],isNewTarget=originalTarget!==newTarget,isNewPath=originalPath!==newPath;return isNewPath&&!isNewTarget?arrow.unshift("~"):!isNewPath&&isNewTarget?arrow.unshift("="):isNewPath&&isNewTarget?arrow.unshift("\u2248"):arrow.unshift("-"),arrow.join("")}exports2.getArrow=getArrow}});var require_config_factory=__commonJS({"node_modules/http-proxy-middleware/dist/config-factory.js"(exports2){"use strict";Object.defineProperty(exports2,"__esModule",{value:!0});exports2.createConfig=void 0;var isPlainObj=require_is_plain_obj(),url=require("url"),errors_1=require_errors2(),logger_1=require_logger(),logger=(0,logger_1.getInstance)();function createConfig(context,opts){let config={context:void 0,options:{}};if(isContextless(context,opts))config.context="/",config.options=Object.assign(config.options,context);else if(isStringShortHand(context)){let oUrl=url.parse(context),target=[oUrl.protocol,"//",oUrl.host].join("");config.context=oUrl.pathname||"/",config.options=Object.assign(config.options,{target},opts),(oUrl.protocol==="ws:"||oUrl.protocol==="wss:")&&(config.options.ws=!0)}else config.context=context,config.options=Object.assign(config.options,opts);if(configureLogger(config.options),!config.options.target&&!config.options.router)throw new Error(errors_1.ERRORS.ERR_CONFIG_FACTORY_TARGET_MISSING);return config}exports2.createConfig=createConfig;function isStringShortHand(context){if(typeof context=="string")return!!url.parse(context).host}function isContextless(context,opts){return isPlainObj(context)&&(opts==null||Object.keys(opts).length===0)}function configureLogger(options){options.logLevel&&logger.setLevel(options.logLevel),options.logProvider&&logger.setProvider(options.logProvider)}}});var require_is_extglob=__commonJS({"node_modules/is-extglob/index.js"(exports2,module2){module2.exports=function(str){if(typeof str!="string"||str==="")return!1;for(var match;match=/(\\).|([@?!+*]\(.*\))/g.exec(str);){if(match[2])return!0;str=str.slice(match.index+match[0].length)}return!1}}});var require_is_glob=__commonJS({"node_modules/is-glob/index.js"(exports2,module2){var isExtglob=require_is_extglob(),chars={"{":"}","(":")","[":"]"},strictCheck=function(str){if(str[0]==="!")return!0;for(var index=0,pipeIndex=-2,closeSquareIndex=-2,closeCurlyIndex=-2,closeParenIndex=-2,backSlashIndex=-2;index<str.length;){if(str[index]==="*"||str[index+1]==="?"&&/[\].+)]/.test(str[index])||closeSquareIndex!==-1&&str[index]==="["&&str[index+1]!=="]"&&(closeSquareIndex<index&&(closeSquareIndex=str.indexOf("]",index)),closeSquareIndex>index&&(backSlashIndex===-1||backSlashIndex>closeSquareIndex||(backSlashIndex=str.indexOf("\\",index),backSlashIndex===-1||backSlashIndex>closeSquareIndex)))||closeCurlyIndex!==-1&&str[index]==="{"&&str[index+1]!=="}"&&(closeCurlyIndex=str.indexOf("}",index),closeCurlyIndex>index&&(backSlashIndex=str.indexOf("\\",index),backSlashIndex===-1||backSlashIndex>closeCurlyIndex))||closeParenIndex!==-1&&str[index]==="("&&str[index+1]==="?"&&/[:!=]/.test(str[index+2])&&str[index+3]!==")"&&(closeParenIndex=str.indexOf(")",index),closeParenIndex>index&&(backSlashIndex=str.indexOf("\\",index),backSlashIndex===-1||backSlashIndex>closeParenIndex))||pipeIndex!==-1&&str[index]==="("&&str[index+1]!=="|"&&(pipeIndex<index&&(pipeIndex=str.indexOf("|",index)),pipeIndex!==-1&&str[pipeIndex+1]!==")"&&(closeParenIndex=str.indexOf(")",pipeIndex),closeParenIndex>pipeIndex&&(backSlashIndex=str.indexOf("\\",pipeIndex),backSlashIndex===-1||backSlashIndex>closeParenIndex))))return!0;if(str[index]==="\\"){var open=str[index+1];index+=2;var close=chars[open];if(close){var n=str.indexOf(close,index);n!==-1&&(index=n+1)}if(str[index]==="!")return!0}else index++}return!1},relaxedCheck=function(str){if(str[0]==="!")return!0;for(var index=0;index<str.length;){if(/[*?{}()[\]]/.test(str[index]))return!0;if(str[index]==="\\"){var open=str[index+1];index+=2;var close=chars[open];if(close){var n=str.indexOf(close,index);n!==-1&&(index=n+1)}if(str[index]==="!")return!0}else index++}return!1};module2.exports=function(str,options){if(typeof str!="string"||str==="")return!1;if(isExtglob(str))return!0;var check=strictCheck;return options&&options.strict===!1&&(check=relaxedCheck),check(str)}}});var require_utils7=__commonJS({"node_modules/braces/lib/utils.js"(exports2){"use strict";exports2.isInteger=num=>typeof num=="number"?Number.isInteger(num):typeof num=="string"&&num.trim()!==""?Number.isInteger(Number(num)):!1;exports2.find=(node,type)=>node.nodes.find(node2=>node2.type===type);exports2.exceedsLimit=(min,max,step=1,limit)=>limit===!1||!exports2.isInteger(min)||!exports2.isInteger(max)?!1:(Number(max)-Number(min))/Number(step)>=limit;exports2.escapeNode=(block,n=0,type)=>{let node=block.nodes[n];node&&(type&&node.type===type||node.type==="open"||node.type==="close")&&node.escaped!==!0&&(node.value="\\"+node.value,node.escaped=!0)};exports2.encloseBrace=node=>node.type!=="brace"?!1:node.commas>>0+node.ranges>>0===0?(node.invalid=!0,!0):!1;exports2.isInvalidBrace=block=>block.type!=="brace"?!1:block.invalid===!0||block.dollar?!0:block.commas>>0+block.ranges>>0===0||block.open!==!0||block.close!==!0?(block.invalid=!0,!0):!1;exports2.isOpenOrClose=node=>node.type==="open"||node.type==="close"?!0:node.open===!0||node.close===!0;exports2.reduce=nodes=>nodes.reduce((acc,node)=>(node.type==="text"&&acc.push(node.value),node.type==="range"&&(node.type="text"),acc),[]);exports2.flatten=(...args)=>{let result=[],flat=arr=>{for(let i=0;i<arr.length;i++){let ele=arr[i];if(Array.isArray(ele)){flat(ele);continue}ele!==void 0&&result.push(ele)}return result};return flat(args),result}}});var require_stringify3=__commonJS({"node_modules/braces/lib/stringify.js"(exports2,module2){"use strict";var utils=require_utils7();module2.exports=(ast,options={})=>{let stringify=(node,parent={})=>{let invalidBlock=options.escapeInvalid&&utils.isInvalidBrace(parent),invalidNode=node.invalid===!0&&options.escapeInvalid===!0,output="";if(node.value)return(invalidBlock||invalidNode)&&utils.isOpenOrClose(node)?"\\"+node.value:node.value;if(node.value)return node.value;if(node.nodes)for(let child of node.nodes)output+=stringify(child);return output};return stringify(ast)}}});var require_is_number=__commonJS({"node_modules/is-number/index.js"(exports2,module2){"use strict";module2.exports=function(num){return typeof num=="number"?num-num===0:typeof num=="string"&&num.trim()!==""?Number.isFinite?Number.isFinite(+num):isFinite(+num):!1}}});var require_to_regex_range=__commonJS({"node_modules/to-regex-range/index.js"(exports2,module2){"use strict";var isNumber=require_is_number(),toRegexRange=(min,max,options)=>{if(isNumber(min)===!1)throw new TypeError("toRegexRange: expected the first argument to be a number");if(max===void 0||min===max)return String(min);if(isNumber(max)===!1)throw new TypeError("toRegexRange: expected the second argument to be a number.");let opts={relaxZeros:!0,...options};typeof opts.strictZeros=="boolean"&&(opts.relaxZeros=opts.strictZeros===!1);let relax=String(opts.relaxZeros),shorthand=String(opts.shorthand),capture=String(opts.capture),wrap=String(opts.wrap),cacheKey=min+":"+max+"="+relax+shorthand+capture+wrap;if(toRegexRange.cache.hasOwnProperty(cacheKey))return toRegexRange.cache[cacheKey].result;let a=Math.min(min,max),b=Math.max(min,max);if(Math.abs(a-b)===1){let result=min+"|"+max;return opts.capture?`(${result})`:opts.wrap===!1?result:`(?:${result})`}let isPadded=hasPadding(min)||hasPadding(max),state={min,max,a,b},positives=[],negatives=[];if(isPadded&&(state.isPadded=isPadded,state.maxLen=String(state.max).length),a<0){let newMin=b<0?Math.abs(b):1;negatives=splitToPatterns(newMin,Math.abs(a),state,opts),a=state.a=0}return b>=0&&(positives=splitToPatterns(a,b,state,opts)),state.negatives=negatives,state.positives=positives,state.result=collatePatterns(negatives,positives,opts),opts.capture===!0?state.result=`(${state.result})`:opts.wrap!==!1&&positives.length+negatives.length>1&&(state.result=`(?:${state.result})`),toRegexRange.cache[cacheKey]=state,state.result};function collatePatterns(neg,pos,options){let onlyNegative=filterPatterns(neg,pos,"-",!1,options)||[],onlyPositive=filterPatterns(pos,neg,"",!1,options)||[],intersected=filterPatterns(neg,pos,"-?",!0,options)||[];return onlyNegative.concat(intersected).concat(onlyPositive).join("|")}function splitToRanges(min,max){let nines=1,zeros=1,stop=countNines(min,nines),stops=new Set([max]);for(;min<=stop&&stop<=max;)stops.add(stop),nines+=1,stop=countNines(min,nines);for(stop=countZeros(max+1,zeros)-1;min<stop&&stop<=max;)stops.add(stop),zeros+=1,stop=countZeros(max+1,zeros)-1;return stops=[...stops],stops.sort(compare),stops}function rangeToPattern(start,stop,options){if(start===stop)return{pattern:start,count:[],digits:0};let zipped=zip(start,stop),digits=zipped.length,pattern="",count=0;for(let i=0;i<digits;i++){let[startDigit,stopDigit]=zipped[i];startDigit===stopDigit?pattern+=startDigit:startDigit!=="0"||stopDigit!=="9"?pattern+=toCharacterClass(startDigit,stopDigit,options):count++}return count&&(pattern+=options.shorthand===!0?"\\d":"[0-9]"),{pattern,count:[count],digits}}function splitToPatterns(min,max,tok,options){let ranges=splitToRanges(min,max),tokens=[],start=min,prev;for(let i=0;i<ranges.length;i++){let max2=ranges[i],obj=rangeToPattern(String(start),String(max2),options),zeros="";if(!tok.isPadded&&prev&&prev.pattern===obj.pattern){prev.count.length>1&&prev.count.pop(),prev.count.push(obj.count[0]),prev.string=prev.pattern+toQuantifier(prev.count),start=max2+1;continue}tok.isPadded&&(zeros=padZeros(max2,tok,options)),obj.string=zeros+obj.pattern+toQuantifier(obj.count),tokens.push(obj),start=max2+1,prev=obj}return tokens}function filterPatterns(arr,comparison,prefix,intersection,options){let result=[];for(let ele of arr){let{string}=ele;!intersection&&!contains(comparison,"string",string)&&result.push(prefix+string),intersection&&contains(comparison,"string",string)&&result.push(prefix+string)}return result}function zip(a,b){let arr=[];for(let i=0;i<a.length;i++)arr.push([a[i],b[i]]);return arr}function compare(a,b){return a>b?1:b>a?-1:0}function contains(arr,key,val){return arr.some(ele=>ele[key]===val)}function countNines(min,len){return Number(String(min).slice(0,-len)+"9".repeat(len))}function countZeros(integer,zeros){return integer-integer%Math.pow(10,zeros)}function toQuantifier(digits){let[start=0,stop=""]=digits;return stop||start>1?`{${start+(stop?","+stop:"")}}`:""}function toCharacterClass(a,b,options){return`[${a}${b-a===1?"":"-"}${b}]`}function hasPadding(str){return/^-?(0+)\d/.test(str)}function padZeros(value,tok,options){if(!tok.isPadded)return value;let diff=Math.abs(tok.maxLen-String(value).length),relax=options.relaxZeros!==!1;switch(diff){case 0:return"";case 1:return relax?"0?":"0";case 2:return relax?"0{0,2}":"00";default:return relax?`0{0,${diff}}`:`0{${diff}}`}}toRegexRange.cache={};toRegexRange.clearCache=()=>toRegexRange.cache={};module2.exports=toRegexRange}});var require_fill_range=__commonJS({"node_modules/fill-range/index.js"(exports2,module2){"use strict";var util=require("util"),toRegexRange=require_to_regex_range(),isObject=val=>val!==null&&typeof val=="object"&&!Array.isArray(val),transform=toNumber=>value=>toNumber===!0?Number(value):String(value),isValidValue=value=>typeof value=="number"||typeof value=="string"&&value!=="",isNumber=num=>Number.isInteger(+num),zeros=input=>{let value=`${input}`,index=-1;if(value[0]==="-"&&(value=value.slice(1)),value==="0")return!1;for(;value[++index]==="0";);return index>0},stringify=(start,end,options)=>typeof start=="string"||typeof end=="string"?!0:options.stringify===!0,pad=(input,maxLength,toNumber)=>{if(maxLength>0){let dash=input[0]==="-"?"-":"";dash&&(input=input.slice(1)),input=dash+input.padStart(dash?maxLength-1:maxLength,"0")}return toNumber===!1?String(input):input},toMaxLen=(input,maxLength)=>{let negative=input[0]==="-"?"-":"";for(negative&&(input=input.slice(1),maxLength--);input.length<maxLength;)input="0"+input;return negative?"-"+input:input},toSequence=(parts,options,maxLen)=>{parts.negatives.sort((a,b)=>a<b?-1:a>b?1:0),parts.positives.sort((a,b)=>a<b?-1:a>b?1:0);let prefix=options.capture?"":"?:",positives="",negatives="",result;return parts.positives.length&&(positives=parts.positives.map(v=>toMaxLen(String(v),maxLen)).join("|")),parts.negatives.length&&(negatives=`-(${prefix}${parts.negatives.map(v=>toMaxLen(String(v),maxLen)).join("|")})`),positives&&negatives?result=`${positives}|${negatives}`:result=positives||negatives,options.wrap?`(${prefix}${result})`:result},toRange=(a,b,isNumbers,options)=>{if(isNumbers)return toRegexRange(a,b,{wrap:!1,...options});let start=String.fromCharCode(a);if(a===b)return start;let stop=String.fromCharCode(b);return`[${start}-${stop}]`},toRegex=(start,end,options)=>{if(Array.isArray(start)){let wrap=options.wrap===!0,prefix=options.capture?"":"?:";return wrap?`(${prefix}${start.join("|")})`:start.join("|")}return toRegexRange(start,end,options)},rangeError=(...args)=>new RangeError("Invalid range arguments: "+util.inspect(...args)),invalidRange=(start,end,options)=>{if(options.strictRanges===!0)throw rangeError([start,end]);return[]},invalidStep=(step,options)=>{if(options.strictRanges===!0)throw new TypeError(`Expected step "${step}" to be a number`);return[]},fillNumbers=(start,end,step=1,options={})=>{let a=Number(start),b=Number(end);if(!Number.isInteger(a)||!Number.isInteger(b)){if(options.strictRanges===!0)throw rangeError([start,end]);return[]}a===0&&(a=0),b===0&&(b=0);let descending=a>b,startString=String(start),endString=String(end),stepString=String(step);step=Math.max(Math.abs(step),1);let padded=zeros(startString)||zeros(endString)||zeros(stepString),maxLen=padded?Math.max(startString.length,endString.length,stepString.length):0,toNumber=padded===!1&&stringify(start,end,options)===!1,format=options.transform||transform(toNumber);if(options.toRegex&&step===1)return toRange(toMaxLen(start,maxLen),toMaxLen(end,maxLen),!0,options);let parts={negatives:[],positives:[]},push=num=>parts[num<0?"negatives":"positives"].push(Math.abs(num)),range=[],index=0;for(;descending?a>=b:a<=b;)options.toRegex===!0&&step>1?push(a):range.push(pad(format(a,index),maxLen,toNumber)),a=descending?a-step:a+step,index++;return options.toRegex===!0?step>1?toSequence(parts,options,maxLen):toRegex(range,null,{wrap:!1,...options}):range},fillLetters=(start,end,step=1,options={})=>{if(!isNumber(start)&&start.length>1||!isNumber(end)&&end.length>1)return invalidRange(start,end,options);let format=options.transform||(val=>String.fromCharCode(val)),a=`${start}`.charCodeAt(0),b=`${end}`.charCodeAt(0),descending=a>b,min=Math.min(a,b),max=Math.max(a,b);if(options.toRegex&&step===1)return toRange(min,max,!1,options);let range=[],index=0;for(;descending?a>=b:a<=b;)range.push(format(a,index)),a=descending?a-step:a+step,index++;return options.toRegex===!0?toRegex(range,null,{wrap:!1,options}):range},fill=(start,end,step,options={})=>{if(end==null&&isValidValue(start))return[start];if(!isValidValue(start)||!isValidValue(end))return invalidRange(start,end,options);if(typeof step=="function")return fill(start,end,1,{transform:step});if(isObject(step))return fill(start,end,0,step);let opts={...options};return opts.capture===!0&&(opts.wrap=!0),step=step||opts.step||1,isNumber(step)?isNumber(start)&&isNumber(end)?fillNumbers(start,end,step,opts):fillLetters(start,end,Math.max(Math.abs(step),1),opts):step!=null&&!isObject(step)?invalidStep(step,opts):fill(start,end,1,step)};module2.exports=fill}});var require_compile=__commonJS({"node_modules/braces/lib/compile.js"(exports2,module2){"use strict";var fill=require_fill_range(),utils=require_utils7(),compile=(ast,options={})=>{let walk=(node,parent={})=>{let invalidBlock=utils.isInvalidBrace(parent),invalidNode=node.invalid===!0&&options.escapeInvalid===!0,invalid=invalidBlock===!0||invalidNode===!0,prefix=options.escapeInvalid===!0?"\\":"",output="";if(node.isOpen===!0)return prefix+node.value;if(node.isClose===!0)return console.log("node.isClose",prefix,node.value),prefix+node.value;if(node.type==="open")return invalid?prefix+node.value:"(";if(node.type==="close")return invalid?prefix+node.value:")";if(node.type==="comma")return node.prev.type==="comma"?"":invalid?node.value:"|";if(node.value)return node.value;if(node.nodes&&node.ranges>0){let args=utils.reduce(node.nodes),range=fill(...args,{...options,wrap:!1,toRegex:!0,strictZeros:!0});if(range.length!==0)return args.length>1&&range.length>1?`(${range})`:range}if(node.nodes)for(let child of node.nodes)output+=walk(child,node);return output};return walk(ast)};module2.exports=compile}});var require_expand=__commonJS({"node_modules/braces/lib/expand.js"(exports2,module2){"use strict";var fill=require_fill_range(),stringify=require_stringify3(),utils=require_utils7(),append=(queue="",stash="",enclose=!1)=>{let result=[];if(queue=[].concat(queue),stash=[].concat(stash),!stash.length)return queue;if(!queue.length)return enclose?utils.flatten(stash).map(ele=>`{${ele}}`):stash;for(let item of queue)if(Array.isArray(item))for(let value of item)result.push(append(value,stash,enclose));else for(let ele of stash)enclose===!0&&typeof ele=="string"&&(ele=`{${ele}}`),result.push(Array.isArray(ele)?append(item,ele,enclose):item+ele);return utils.flatten(result)},expand=(ast,options={})=>{let rangeLimit=options.rangeLimit===void 0?1e3:options.rangeLimit,walk=(node,parent={})=>{node.queue=[];let p=parent,q=parent.queue;for(;p.type!=="brace"&&p.type!=="root"&&p.parent;)p=p.parent,q=p.queue;if(node.invalid||node.dollar){q.push(append(q.pop(),stringify(node,options)));return}if(node.type==="brace"&&node.invalid!==!0&&node.nodes.length===2){q.push(append(q.pop(),["{}"]));return}if(node.nodes&&node.ranges>0){let args=utils.reduce(node.nodes);if(utils.exceedsLimit(...args,options.step,rangeLimit))throw new RangeError("expanded array length exceeds range limit. Use options.rangeLimit to increase or disable the limit.");let range=fill(...args,options);range.length===0&&(range=stringify(node,options)),q.push(append(q.pop(),range)),node.nodes=[];return}let enclose=utils.encloseBrace(node),queue=node.queue,block=node;for(;block.type!=="brace"&&block.type!=="root"&&block.parent;)block=block.parent,queue=block.queue;for(let i=0;i<node.nodes.length;i++){let child=node.nodes[i];if(child.type==="comma"&&node.type==="brace"){i===1&&queue.push(""),queue.push("");continue}if(child.type==="close"){q.push(append(q.pop(),queue,enclose));continue}if(child.value&&child.type!=="open"){queue.push(append(queue.pop(),child.value));continue}child.nodes&&walk(child,node)}return queue};return utils.flatten(walk(ast))};module2.exports=expand}});var require_constants2=__commonJS({"node_modules/braces/lib/constants.js"(exports2,module2){"use strict";module2.exports={MAX_LENGTH:1e4,CHAR_0:"0",CHAR_9:"9",CHAR_UPPERCASE_A:"A",CHAR_LOWERCASE_A:"a",CHAR_UPPERCASE_Z:"Z",CHAR_LOWERCASE_Z:"z",CHAR_LEFT_PARENTHESES:"(",CHAR_RIGHT_PARENTHESES:")",CHAR_ASTERISK:"*",CHAR_AMPERSAND:"&",CHAR_AT:"@",CHAR_BACKSLASH:"\\",CHAR_BACKTICK:"`",CHAR_CARRIAGE_RETURN:"\r",CHAR_CIRCUMFLEX_ACCENT:"^",CHAR_COLON:":",CHAR_COMMA:",",CHAR_DOLLAR:"$",CHAR_DOT:".",CHAR_DOUBLE_QUOTE:'"',CHAR_EQUAL:"=",CHAR_EXCLAMATION_MARK:"!",CHAR_FORM_FEED:"\f",CHAR_FORWARD_SLASH:"/",CHAR_HASH:"#",CHAR_HYPHEN_MINUS:"-",CHAR_LEFT_ANGLE_BRACKET:"<",CHAR_LEFT_CURLY_BRACE:"{",CHAR_LEFT_SQUARE_BRACKET:"[",CHAR_LINE_FEED:`
|
|
247
|
-
`,CHAR_NO_BREAK_SPACE:"\xA0",CHAR_PERCENT:"%",CHAR_PLUS:"+",CHAR_QUESTION_MARK:"?",CHAR_RIGHT_ANGLE_BRACKET:">",CHAR_RIGHT_CURLY_BRACE:"}",CHAR_RIGHT_SQUARE_BRACKET:"]",CHAR_SEMICOLON:";",CHAR_SINGLE_QUOTE:"'",CHAR_SPACE:" ",CHAR_TAB:" ",CHAR_UNDERSCORE:"_",CHAR_VERTICAL_LINE:"|",CHAR_ZERO_WIDTH_NOBREAK_SPACE:"\uFEFF"}}});var require_parse2=__commonJS({"node_modules/braces/lib/parse.js"(exports2,module2){"use strict";var stringify=require_stringify3(),{MAX_LENGTH,CHAR_BACKSLASH,CHAR_BACKTICK,CHAR_COMMA,CHAR_DOT,CHAR_LEFT_PARENTHESES,CHAR_RIGHT_PARENTHESES,CHAR_LEFT_CURLY_BRACE,CHAR_RIGHT_CURLY_BRACE,CHAR_LEFT_SQUARE_BRACKET,CHAR_RIGHT_SQUARE_BRACKET,CHAR_DOUBLE_QUOTE,CHAR_SINGLE_QUOTE,CHAR_NO_BREAK_SPACE,CHAR_ZERO_WIDTH_NOBREAK_SPACE}=require_constants2(),parse=(input,options={})=>{if(typeof input!="string")throw new TypeError("Expected a string");let opts=options||{},max=typeof opts.maxLength=="number"?Math.min(MAX_LENGTH,opts.maxLength):MAX_LENGTH;if(input.length>max)throw new SyntaxError(`Input length (${input.length}), exceeds max characters (${max})`);let ast={type:"root",input,nodes:[]},stack=[ast],block=ast,prev=ast,brackets=0,length=input.length,index=0,depth=0,value,advance=()=>input[index++],push=node=>{if(node.type==="text"&&prev.type==="dot"&&(prev.type="text"),prev&&prev.type==="text"&&node.type==="text"){prev.value+=node.value;return}return block.nodes.push(node),node.parent=block,node.prev=prev,prev=node,node};for(push({type:"bos"});index<length;)if(block=stack[stack.length-1],value=advance(),!(value===CHAR_ZERO_WIDTH_NOBREAK_SPACE||value===CHAR_NO_BREAK_SPACE)){if(value===CHAR_BACKSLASH){push({type:"text",value:(options.keepEscaping?value:"")+advance()});continue}if(value===CHAR_RIGHT_SQUARE_BRACKET){push({type:"text",value:"\\"+value});continue}if(value===CHAR_LEFT_SQUARE_BRACKET){brackets++;let next;for(;index<length&&(next=advance());){if(value+=next,next===CHAR_LEFT_SQUARE_BRACKET){brackets++;continue}if(next===CHAR_BACKSLASH){value+=advance();continue}if(next===CHAR_RIGHT_SQUARE_BRACKET&&(brackets--,brackets===0))break}push({type:"text",value});continue}if(value===CHAR_LEFT_PARENTHESES){block=push({type:"paren",nodes:[]}),stack.push(block),push({type:"text",value});continue}if(value===CHAR_RIGHT_PARENTHESES){if(block.type!=="paren"){push({type:"text",value});continue}block=stack.pop(),push({type:"text",value}),block=stack[stack.length-1];continue}if(value===CHAR_DOUBLE_QUOTE||value===CHAR_SINGLE_QUOTE||value===CHAR_BACKTICK){let open=value,next;for(options.keepQuotes!==!0&&(value="");index<length&&(next=advance());){if(next===CHAR_BACKSLASH){value+=next+advance();continue}if(next===open){options.keepQuotes===!0&&(value+=next);break}value+=next}push({type:"text",value});continue}if(value===CHAR_LEFT_CURLY_BRACE){depth++;let brace={type:"brace",open:!0,close:!1,dollar:prev.value&&prev.value.slice(-1)==="$"||block.dollar===!0,depth,commas:0,ranges:0,nodes:[]};block=push(brace),stack.push(block),push({type:"open",value});continue}if(value===CHAR_RIGHT_CURLY_BRACE){if(block.type!=="brace"){push({type:"text",value});continue}let type="close";block=stack.pop(),block.close=!0,push({type,value}),depth--,block=stack[stack.length-1];continue}if(value===CHAR_COMMA&&depth>0){if(block.ranges>0){block.ranges=0;let open=block.nodes.shift();block.nodes=[open,{type:"text",value:stringify(block)}]}push({type:"comma",value}),block.commas++;continue}if(value===CHAR_DOT&&depth>0&&block.commas===0){let siblings=block.nodes;if(depth===0||siblings.length===0){push({type:"text",value});continue}if(prev.type==="dot"){if(block.range=[],prev.value+=value,prev.type="range",block.nodes.length!==3&&block.nodes.length!==5){block.invalid=!0,block.ranges=0,prev.type="text";continue}block.ranges++,block.args=[];continue}if(prev.type==="range"){siblings.pop();let before=siblings[siblings.length-1];before.value+=prev.value+value,prev=before,block.ranges--;continue}push({type:"dot",value});continue}push({type:"text",value})}do if(block=stack.pop(),block.type!=="root"){block.nodes.forEach(node=>{node.nodes||(node.type==="open"&&(node.isOpen=!0),node.type==="close"&&(node.isClose=!0),node.nodes||(node.type="text"),node.invalid=!0)});let parent=stack[stack.length-1],index2=parent.nodes.indexOf(block);parent.nodes.splice(index2,1,...block.nodes)}while(stack.length>0);return push({type:"eos"}),ast};module2.exports=parse}});var require_braces=__commonJS({"node_modules/braces/index.js"(exports2,module2){"use strict";var stringify=require_stringify3(),compile=require_compile(),expand=require_expand(),parse=require_parse2(),braces=(input,options={})=>{let output=[];if(Array.isArray(input))for(let pattern of input){let result=braces.create(pattern,options);Array.isArray(result)?output.push(...result):output.push(result)}else output=[].concat(braces.create(input,options));return options&&options.expand===!0&&options.nodupes===!0&&(output=[...new Set(output)]),output};braces.parse=(input,options={})=>parse(input,options);braces.stringify=(input,options={})=>stringify(typeof input=="string"?braces.parse(input,options):input,options);braces.compile=(input,options={})=>(typeof input=="string"&&(input=braces.parse(input,options)),compile(input,options));braces.expand=(input,options={})=>{typeof input=="string"&&(input=braces.parse(input,options));let result=expand(input,options);return options.noempty===!0&&(result=result.filter(Boolean)),options.nodupes===!0&&(result=[...new Set(result)]),result};braces.create=(input,options={})=>input===""||input.length<3?[input]:options.expand!==!0?braces.compile(input,options):braces.expand(input,options);module2.exports=braces}});var require_constants3=__commonJS({"node_modules/picomatch/lib/constants.js"(exports2,module2){"use strict";var path=require("path"),WIN_SLASH="\\\\/",WIN_NO_SLASH=`[^${WIN_SLASH}]`,DOT_LITERAL="\\.",PLUS_LITERAL="\\+",QMARK_LITERAL="\\?",SLASH_LITERAL="\\/",ONE_CHAR="(?=.)",QMARK="[^/]",END_ANCHOR=`(?:${SLASH_LITERAL}|$)`,START_ANCHOR=`(?:^|${SLASH_LITERAL})`,DOTS_SLASH=`${DOT_LITERAL}{1,2}${END_ANCHOR}`,NO_DOT=`(?!${DOT_LITERAL})`,NO_DOTS=`(?!${START_ANCHOR}${DOTS_SLASH})`,NO_DOT_SLASH=`(?!${DOT_LITERAL}{0,1}${END_ANCHOR})`,NO_DOTS_SLASH=`(?!${DOTS_SLASH})`,QMARK_NO_DOT=`[^.${SLASH_LITERAL}]`,STAR=`${QMARK}*?`,POSIX_CHARS={DOT_LITERAL,PLUS_LITERAL,QMARK_LITERAL,SLASH_LITERAL,ONE_CHAR,QMARK,END_ANCHOR,DOTS_SLASH,NO_DOT,NO_DOTS,NO_DOT_SLASH,NO_DOTS_SLASH,QMARK_NO_DOT,STAR,START_ANCHOR},WINDOWS_CHARS={...POSIX_CHARS,SLASH_LITERAL:`[${WIN_SLASH}]`,QMARK:WIN_NO_SLASH,STAR:`${WIN_NO_SLASH}*?`,DOTS_SLASH:`${DOT_LITERAL}{1,2}(?:[${WIN_SLASH}]|$)`,NO_DOT:`(?!${DOT_LITERAL})`,NO_DOTS:`(?!(?:^|[${WIN_SLASH}])${DOT_LITERAL}{1,2}(?:[${WIN_SLASH}]|$))`,NO_DOT_SLASH:`(?!${DOT_LITERAL}{0,1}(?:[${WIN_SLASH}]|$))`,NO_DOTS_SLASH:`(?!${DOT_LITERAL}{1,2}(?:[${WIN_SLASH}]|$))`,QMARK_NO_DOT:`[^.${WIN_SLASH}]`,START_ANCHOR:`(?:^|[${WIN_SLASH}])`,END_ANCHOR:`(?:[${WIN_SLASH}]|$)`},POSIX_REGEX_SOURCE={alnum:"a-zA-Z0-9",alpha:"a-zA-Z",ascii:"\\x00-\\x7F",blank:" \\t",cntrl:"\\x00-\\x1F\\x7F",digit:"0-9",graph:"\\x21-\\x7E",lower:"a-z",print:"\\x20-\\x7E ",punct:"\\-!\"#$%&'()\\*+,./:;<=>?@[\\]^_`{|}~",space:" \\t\\r\\n\\v\\f",upper:"A-Z",word:"A-Za-z0-9_",xdigit:"A-Fa-f0-9"};module2.exports={MAX_LENGTH:1024*64,POSIX_REGEX_SOURCE,REGEX_BACKSLASH:/\\(?![*+?^${}(|)[\]])/g,REGEX_NON_SPECIAL_CHARS:/^[^@![\].,$*+?^{}()|\\/]+/,REGEX_SPECIAL_CHARS:/[-*+?.^${}(|)[\]]/,REGEX_SPECIAL_CHARS_BACKREF:/(\\?)((\W)(\3*))/g,REGEX_SPECIAL_CHARS_GLOBAL:/([-*+?.^${}(|)[\]])/g,REGEX_REMOVE_BACKSLASH:/(?:\[.*?[^\\]\]|\\(?=.))/g,REPLACEMENTS:{"***":"*","**/**":"**","**/**/**":"**"},CHAR_0:48,CHAR_9:57,CHAR_UPPERCASE_A:65,CHAR_LOWERCASE_A:97,CHAR_UPPERCASE_Z:90,CHAR_LOWERCASE_Z:122,CHAR_LEFT_PARENTHESES:40,CHAR_RIGHT_PARENTHESES:41,CHAR_ASTERISK:42,CHAR_AMPERSAND:38,CHAR_AT:64,CHAR_BACKWARD_SLASH:92,CHAR_CARRIAGE_RETURN:13,CHAR_CIRCUMFLEX_ACCENT:94,CHAR_COLON:58,CHAR_COMMA:44,CHAR_DOT:46,CHAR_DOUBLE_QUOTE:34,CHAR_EQUAL:61,CHAR_EXCLAMATION_MARK:33,CHAR_FORM_FEED:12,CHAR_FORWARD_SLASH:47,CHAR_GRAVE_ACCENT:96,CHAR_HASH:35,CHAR_HYPHEN_MINUS:45,CHAR_LEFT_ANGLE_BRACKET:60,CHAR_LEFT_CURLY_BRACE:123,CHAR_LEFT_SQUARE_BRACKET:91,CHAR_LINE_FEED:10,CHAR_NO_BREAK_SPACE:160,CHAR_PERCENT:37,CHAR_PLUS:43,CHAR_QUESTION_MARK:63,CHAR_RIGHT_ANGLE_BRACKET:62,CHAR_RIGHT_CURLY_BRACE:125,CHAR_RIGHT_SQUARE_BRACKET:93,CHAR_SEMICOLON:59,CHAR_SINGLE_QUOTE:39,CHAR_SPACE:32,CHAR_TAB:9,CHAR_UNDERSCORE:95,CHAR_VERTICAL_LINE:124,CHAR_ZERO_WIDTH_NOBREAK_SPACE:65279,SEP:path.sep,extglobChars(chars){return{"!":{type:"negate",open:"(?:(?!(?:",close:`))${chars.STAR})`},"?":{type:"qmark",open:"(?:",close:")?"},"+":{type:"plus",open:"(?:",close:")+"},"*":{type:"star",open:"(?:",close:")*"},"@":{type:"at",open:"(?:",close:")"}}},globChars(win32){return win32===!0?WINDOWS_CHARS:POSIX_CHARS}}}});var require_utils8=__commonJS({"node_modules/picomatch/lib/utils.js"(exports2){"use strict";var path=require("path"),win32=process.platform==="win32",{REGEX_BACKSLASH,REGEX_REMOVE_BACKSLASH,REGEX_SPECIAL_CHARS,REGEX_SPECIAL_CHARS_GLOBAL}=require_constants3();exports2.isObject=val=>val!==null&&typeof val=="object"&&!Array.isArray(val);exports2.hasRegexChars=str=>REGEX_SPECIAL_CHARS.test(str);exports2.isRegexChar=str=>str.length===1&&exports2.hasRegexChars(str);exports2.escapeRegex=str=>str.replace(REGEX_SPECIAL_CHARS_GLOBAL,"\\$1");exports2.toPosixSlashes=str=>str.replace(REGEX_BACKSLASH,"/");exports2.removeBackslashes=str=>str.replace(REGEX_REMOVE_BACKSLASH,match=>match==="\\"?"":match);exports2.supportsLookbehinds=()=>{let segs=process.version.slice(1).split(".").map(Number);return segs.length===3&&segs[0]>=9||segs[0]===8&&segs[1]>=10};exports2.isWindows=options=>options&&typeof options.windows=="boolean"?options.windows:win32===!0||path.sep==="\\";exports2.escapeLast=(input,char,lastIdx)=>{let idx=input.lastIndexOf(char,lastIdx);return idx===-1?input:input[idx-1]==="\\"?exports2.escapeLast(input,char,idx-1):`${input.slice(0,idx)}\\${input.slice(idx)}`};exports2.removePrefix=(input,state={})=>{let output=input;return output.startsWith("./")&&(output=output.slice(2),state.prefix="./"),output};exports2.wrapOutput=(input,state={},options={})=>{let prepend=options.contains?"":"^",append=options.contains?"":"$",output=`${prepend}(?:${input})${append}`;return state.negated===!0&&(output=`(?:^(?!${output}).*$)`),output}}});var require_scan=__commonJS({"node_modules/picomatch/lib/scan.js"(exports2,module2){"use strict";var utils=require_utils8(),{CHAR_ASTERISK,CHAR_AT,CHAR_BACKWARD_SLASH,CHAR_COMMA,CHAR_DOT,CHAR_EXCLAMATION_MARK,CHAR_FORWARD_SLASH,CHAR_LEFT_CURLY_BRACE,CHAR_LEFT_PARENTHESES,CHAR_LEFT_SQUARE_BRACKET,CHAR_PLUS,CHAR_QUESTION_MARK,CHAR_RIGHT_CURLY_BRACE,CHAR_RIGHT_PARENTHESES,CHAR_RIGHT_SQUARE_BRACKET}=require_constants3(),isPathSeparator=code=>code===CHAR_FORWARD_SLASH||code===CHAR_BACKWARD_SLASH,depth=token=>{token.isPrefix!==!0&&(token.depth=token.isGlobstar?1/0:1)},scan=(input,options)=>{let opts=options||{},length=input.length-1,scanToEnd=opts.parts===!0||opts.scanToEnd===!0,slashes=[],tokens=[],parts=[],str=input,index=-1,start=0,lastIndex=0,isBrace=!1,isBracket=!1,isGlob=!1,isExtglob=!1,isGlobstar=!1,braceEscaped=!1,backslashes=!1,negated=!1,negatedExtglob=!1,finished=!1,braces=0,prev,code,token={value:"",depth:0,isGlob:!1},eos=()=>index>=length,peek=()=>str.charCodeAt(index+1),advance=()=>(prev=code,str.charCodeAt(++index));for(;index<length;){code=advance();let next;if(code===CHAR_BACKWARD_SLASH){backslashes=token.backslashes=!0,code=advance(),code===CHAR_LEFT_CURLY_BRACE&&(braceEscaped=!0);continue}if(braceEscaped===!0||code===CHAR_LEFT_CURLY_BRACE){for(braces++;eos()!==!0&&(code=advance());){if(code===CHAR_BACKWARD_SLASH){backslashes=token.backslashes=!0,advance();continue}if(code===CHAR_LEFT_CURLY_BRACE){braces++;continue}if(braceEscaped!==!0&&code===CHAR_DOT&&(code=advance())===CHAR_DOT){if(isBrace=token.isBrace=!0,isGlob=token.isGlob=!0,finished=!0,scanToEnd===!0)continue;break}if(braceEscaped!==!0&&code===CHAR_COMMA){if(isBrace=token.isBrace=!0,isGlob=token.isGlob=!0,finished=!0,scanToEnd===!0)continue;break}if(code===CHAR_RIGHT_CURLY_BRACE&&(braces--,braces===0)){braceEscaped=!1,isBrace=token.isBrace=!0,finished=!0;break}}if(scanToEnd===!0)continue;break}if(code===CHAR_FORWARD_SLASH){if(slashes.push(index),tokens.push(token),token={value:"",depth:0,isGlob:!1},finished===!0)continue;if(prev===CHAR_DOT&&index===start+1){start+=2;continue}lastIndex=index+1;continue}if(opts.noext!==!0&&(code===CHAR_PLUS||code===CHAR_AT||code===CHAR_ASTERISK||code===CHAR_QUESTION_MARK||code===CHAR_EXCLAMATION_MARK)===!0&&peek()===CHAR_LEFT_PARENTHESES){if(isGlob=token.isGlob=!0,isExtglob=token.isExtglob=!0,finished=!0,code===CHAR_EXCLAMATION_MARK&&index===start&&(negatedExtglob=!0),scanToEnd===!0){for(;eos()!==!0&&(code=advance());){if(code===CHAR_BACKWARD_SLASH){backslashes=token.backslashes=!0,code=advance();continue}if(code===CHAR_RIGHT_PARENTHESES){isGlob=token.isGlob=!0,finished=!0;break}}continue}break}if(code===CHAR_ASTERISK){if(prev===CHAR_ASTERISK&&(isGlobstar=token.isGlobstar=!0),isGlob=token.isGlob=!0,finished=!0,scanToEnd===!0)continue;break}if(code===CHAR_QUESTION_MARK){if(isGlob=token.isGlob=!0,finished=!0,scanToEnd===!0)continue;break}if(code===CHAR_LEFT_SQUARE_BRACKET){for(;eos()!==!0&&(next=advance());){if(next===CHAR_BACKWARD_SLASH){backslashes=token.backslashes=!0,advance();continue}if(next===CHAR_RIGHT_SQUARE_BRACKET){isBracket=token.isBracket=!0,isGlob=token.isGlob=!0,finished=!0;break}}if(scanToEnd===!0)continue;break}if(opts.nonegate!==!0&&code===CHAR_EXCLAMATION_MARK&&index===start){negated=token.negated=!0,start++;continue}if(opts.noparen!==!0&&code===CHAR_LEFT_PARENTHESES){if(isGlob=token.isGlob=!0,scanToEnd===!0){for(;eos()!==!0&&(code=advance());){if(code===CHAR_LEFT_PARENTHESES){backslashes=token.backslashes=!0,code=advance();continue}if(code===CHAR_RIGHT_PARENTHESES){finished=!0;break}}continue}break}if(isGlob===!0){if(finished=!0,scanToEnd===!0)continue;break}}opts.noext===!0&&(isExtglob=!1,isGlob=!1);let base=str,prefix="",glob="";start>0&&(prefix=str.slice(0,start),str=str.slice(start),lastIndex-=start),base&&isGlob===!0&&lastIndex>0?(base=str.slice(0,lastIndex),glob=str.slice(lastIndex)):isGlob===!0?(base="",glob=str):base=str,base&&base!==""&&base!=="/"&&base!==str&&isPathSeparator(base.charCodeAt(base.length-1))&&(base=base.slice(0,-1)),opts.unescape===!0&&(glob&&(glob=utils.removeBackslashes(glob)),base&&backslashes===!0&&(base=utils.removeBackslashes(base)));let state={prefix,input,start,base,glob,isBrace,isBracket,isGlob,isExtglob,isGlobstar,negated,negatedExtglob};if(opts.tokens===!0&&(state.maxDepth=0,isPathSeparator(code)||tokens.push(token),state.tokens=tokens),opts.parts===!0||opts.tokens===!0){let prevIndex;for(let idx=0;idx<slashes.length;idx++){let n=prevIndex?prevIndex+1:start,i=slashes[idx],value=input.slice(n,i);opts.tokens&&(idx===0&&start!==0?(tokens[idx].isPrefix=!0,tokens[idx].value=prefix):tokens[idx].value=value,depth(tokens[idx]),state.maxDepth+=tokens[idx].depth),(idx!==0||value!=="")&&parts.push(value),prevIndex=i}if(prevIndex&&prevIndex+1<input.length){let value=input.slice(prevIndex+1);parts.push(value),opts.tokens&&(tokens[tokens.length-1].value=value,depth(tokens[tokens.length-1]),state.maxDepth+=tokens[tokens.length-1].depth)}state.slashes=slashes,state.parts=parts}return state};module2.exports=scan}});var require_parse3=__commonJS({"node_modules/picomatch/lib/parse.js"(exports2,module2){"use strict";var constants=require_constants3(),utils=require_utils8(),{MAX_LENGTH,POSIX_REGEX_SOURCE,REGEX_NON_SPECIAL_CHARS,REGEX_SPECIAL_CHARS_BACKREF,REPLACEMENTS}=constants,expandRange=(args,options)=>{if(typeof options.expandRange=="function")return options.expandRange(...args,options);args.sort();let value=`[${args.join("-")}]`;try{new RegExp(value)}catch{return args.map(v=>utils.escapeRegex(v)).join("..")}return value},syntaxError=(type,char)=>`Missing ${type}: "${char}" - use "\\\\${char}" to match literal characters`,parse=(input,options)=>{if(typeof input!="string")throw new TypeError("Expected a string");input=REPLACEMENTS[input]||input;let opts={...options},max=typeof opts.maxLength=="number"?Math.min(MAX_LENGTH,opts.maxLength):MAX_LENGTH,len=input.length;if(len>max)throw new SyntaxError(`Input length: ${len}, exceeds maximum allowed length: ${max}`);let bos={type:"bos",value:"",output:opts.prepend||""},tokens=[bos],capture=opts.capture?"":"?:",win32=utils.isWindows(options),PLATFORM_CHARS=constants.globChars(win32),EXTGLOB_CHARS=constants.extglobChars(PLATFORM_CHARS),{DOT_LITERAL,PLUS_LITERAL,SLASH_LITERAL,ONE_CHAR,DOTS_SLASH,NO_DOT,NO_DOT_SLASH,NO_DOTS_SLASH,QMARK,QMARK_NO_DOT,STAR,START_ANCHOR}=PLATFORM_CHARS,globstar=opts2=>`(${capture}(?:(?!${START_ANCHOR}${opts2.dot?DOTS_SLASH:DOT_LITERAL}).)*?)`,nodot=opts.dot?"":NO_DOT,qmarkNoDot=opts.dot?QMARK:QMARK_NO_DOT,star=opts.bash===!0?globstar(opts):STAR;opts.capture&&(star=`(${star})`),typeof opts.noext=="boolean"&&(opts.noextglob=opts.noext);let state={input,index:-1,start:0,dot:opts.dot===!0,consumed:"",output:"",prefix:"",backtrack:!1,negated:!1,brackets:0,braces:0,parens:0,quotes:0,globstar:!1,tokens};input=utils.removePrefix(input,state),len=input.length;let extglobs=[],braces=[],stack=[],prev=bos,value,eos=()=>state.index===len-1,peek=state.peek=(n=1)=>input[state.index+n],advance=state.advance=()=>input[++state.index]||"",remaining=()=>input.slice(state.index+1),consume=(value2="",num=0)=>{state.consumed+=value2,state.index+=num},append=token=>{state.output+=token.output!=null?token.output:token.value,consume(token.value)},negate=()=>{let count=1;for(;peek()==="!"&&(peek(2)!=="("||peek(3)==="?");)advance(),state.start++,count++;return count%2===0?!1:(state.negated=!0,state.start++,!0)},increment=type=>{state[type]++,stack.push(type)},decrement=type=>{state[type]--,stack.pop()},push=tok=>{if(prev.type==="globstar"){let isBrace=state.braces>0&&(tok.type==="comma"||tok.type==="brace"),isExtglob=tok.extglob===!0||extglobs.length&&(tok.type==="pipe"||tok.type==="paren");tok.type!=="slash"&&tok.type!=="paren"&&!isBrace&&!isExtglob&&(state.output=state.output.slice(0,-prev.output.length),prev.type="star",prev.value="*",prev.output=star,state.output+=prev.output)}if(extglobs.length&&tok.type!=="paren"&&(extglobs[extglobs.length-1].inner+=tok.value),(tok.value||tok.output)&&append(tok),prev&&prev.type==="text"&&tok.type==="text"){prev.value+=tok.value,prev.output=(prev.output||"")+tok.value;return}tok.prev=prev,tokens.push(tok),prev=tok},extglobOpen=(type,value2)=>{let token={...EXTGLOB_CHARS[value2],conditions:1,inner:""};token.prev=prev,token.parens=state.parens,token.output=state.output;let output=(opts.capture?"(":"")+token.open;increment("parens"),push({type,value:value2,output:state.output?"":ONE_CHAR}),push({type:"paren",extglob:!0,value:advance(),output}),extglobs.push(token)},extglobClose=token=>{let output=token.close+(opts.capture?")":""),rest;if(token.type==="negate"){let extglobStar=star;if(token.inner&&token.inner.length>1&&token.inner.includes("/")&&(extglobStar=globstar(opts)),(extglobStar!==star||eos()||/^\)+$/.test(remaining()))&&(output=token.close=`)$))${extglobStar}`),token.inner.includes("*")&&(rest=remaining())&&/^\.[^\\/.]+$/.test(rest)){let expression=parse(rest,{...options,fastpaths:!1}).output;output=token.close=`)${expression})${extglobStar})`}token.prev.type==="bos"&&(state.negatedExtglob=!0)}push({type:"paren",extglob:!0,value,output}),decrement("parens")};if(opts.fastpaths!==!1&&!/(^[*!]|[/()[\]{}"])/.test(input)){let backslashes=!1,output=input.replace(REGEX_SPECIAL_CHARS_BACKREF,(m,esc,chars,first,rest,index)=>first==="\\"?(backslashes=!0,m):first==="?"?esc?esc+first+(rest?QMARK.repeat(rest.length):""):index===0?qmarkNoDot+(rest?QMARK.repeat(rest.length):""):QMARK.repeat(chars.length):first==="."?DOT_LITERAL.repeat(chars.length):first==="*"?esc?esc+first+(rest?star:""):star:esc?m:`\\${m}`);return backslashes===!0&&(opts.unescape===!0?output=output.replace(/\\/g,""):output=output.replace(/\\+/g,m=>m.length%2===0?"\\\\":m?"\\":"")),output===input&&opts.contains===!0?(state.output=input,state):(state.output=utils.wrapOutput(output,state,options),state)}for(;!eos();){if(value=advance(),value==="\0")continue;if(value==="\\"){let next=peek();if(next==="/"&&opts.bash!==!0||next==="."||next===";")continue;if(!next){value+="\\",push({type:"text",value});continue}let match=/^\\+/.exec(remaining()),slashes=0;if(match&&match[0].length>2&&(slashes=match[0].length,state.index+=slashes,slashes%2!==0&&(value+="\\")),opts.unescape===!0?value=advance():value+=advance(),state.brackets===0){push({type:"text",value});continue}}if(state.brackets>0&&(value!=="]"||prev.value==="["||prev.value==="[^")){if(opts.posix!==!1&&value===":"){let inner=prev.value.slice(1);if(inner.includes("[")&&(prev.posix=!0,inner.includes(":"))){let idx=prev.value.lastIndexOf("["),pre=prev.value.slice(0,idx),rest2=prev.value.slice(idx+2),posix=POSIX_REGEX_SOURCE[rest2];if(posix){prev.value=pre+posix,state.backtrack=!0,advance(),!bos.output&&tokens.indexOf(prev)===1&&(bos.output=ONE_CHAR);continue}}}(value==="["&&peek()!==":"||value==="-"&&peek()==="]")&&(value=`\\${value}`),value==="]"&&(prev.value==="["||prev.value==="[^")&&(value=`\\${value}`),opts.posix===!0&&value==="!"&&prev.value==="["&&(value="^"),prev.value+=value,append({value});continue}if(state.quotes===1&&value!=='"'){value=utils.escapeRegex(value),prev.value+=value,append({value});continue}if(value==='"'){state.quotes=state.quotes===1?0:1,opts.keepQuotes===!0&&push({type:"text",value});continue}if(value==="("){increment("parens"),push({type:"paren",value});continue}if(value===")"){if(state.parens===0&&opts.strictBrackets===!0)throw new SyntaxError(syntaxError("opening","("));let extglob=extglobs[extglobs.length-1];if(extglob&&state.parens===extglob.parens+1){extglobClose(extglobs.pop());continue}push({type:"paren",value,output:state.parens?")":"\\)"}),decrement("parens");continue}if(value==="["){if(opts.nobracket===!0||!remaining().includes("]")){if(opts.nobracket!==!0&&opts.strictBrackets===!0)throw new SyntaxError(syntaxError("closing","]"));value=`\\${value}`}else increment("brackets");push({type:"bracket",value});continue}if(value==="]"){if(opts.nobracket===!0||prev&&prev.type==="bracket"&&prev.value.length===1){push({type:"text",value,output:`\\${value}`});continue}if(state.brackets===0){if(opts.strictBrackets===!0)throw new SyntaxError(syntaxError("opening","["));push({type:"text",value,output:`\\${value}`});continue}decrement("brackets");let prevValue=prev.value.slice(1);if(prev.posix!==!0&&prevValue[0]==="^"&&!prevValue.includes("/")&&(value=`/${value}`),prev.value+=value,append({value}),opts.literalBrackets===!1||utils.hasRegexChars(prevValue))continue;let escaped=utils.escapeRegex(prev.value);if(state.output=state.output.slice(0,-prev.value.length),opts.literalBrackets===!0){state.output+=escaped,prev.value=escaped;continue}prev.value=`(${capture}${escaped}|${prev.value})`,state.output+=prev.value;continue}if(value==="{"&&opts.nobrace!==!0){increment("braces");let open={type:"brace",value,output:"(",outputIndex:state.output.length,tokensIndex:state.tokens.length};braces.push(open),push(open);continue}if(value==="}"){let brace=braces[braces.length-1];if(opts.nobrace===!0||!brace){push({type:"text",value,output:value});continue}let output=")";if(brace.dots===!0){let arr=tokens.slice(),range=[];for(let i=arr.length-1;i>=0&&(tokens.pop(),arr[i].type!=="brace");i--)arr[i].type!=="dots"&&range.unshift(arr[i].value);output=expandRange(range,opts),state.backtrack=!0}if(brace.comma!==!0&&brace.dots!==!0){let out=state.output.slice(0,brace.outputIndex),toks=state.tokens.slice(brace.tokensIndex);brace.value=brace.output="\\{",value=output="\\}",state.output=out;for(let t of toks)state.output+=t.output||t.value}push({type:"brace",value,output}),decrement("braces"),braces.pop();continue}if(value==="|"){extglobs.length>0&&extglobs[extglobs.length-1].conditions++,push({type:"text",value});continue}if(value===","){let output=value,brace=braces[braces.length-1];brace&&stack[stack.length-1]==="braces"&&(brace.comma=!0,output="|"),push({type:"comma",value,output});continue}if(value==="/"){if(prev.type==="dot"&&state.index===state.start+1){state.start=state.index+1,state.consumed="",state.output="",tokens.pop(),prev=bos;continue}push({type:"slash",value,output:SLASH_LITERAL});continue}if(value==="."){if(state.braces>0&&prev.type==="dot"){prev.value==="."&&(prev.output=DOT_LITERAL);let brace=braces[braces.length-1];prev.type="dots",prev.output+=value,prev.value+=value,brace.dots=!0;continue}if(state.braces+state.parens===0&&prev.type!=="bos"&&prev.type!=="slash"){push({type:"text",value,output:DOT_LITERAL});continue}push({type:"dot",value,output:DOT_LITERAL});continue}if(value==="?"){if(!(prev&&prev.value==="(")&&opts.noextglob!==!0&&peek()==="("&&peek(2)!=="?"){extglobOpen("qmark",value);continue}if(prev&&prev.type==="paren"){let next=peek(),output=value;if(next==="<"&&!utils.supportsLookbehinds())throw new Error("Node.js v10 or higher is required for regex lookbehinds");(prev.value==="("&&!/[!=<:]/.test(next)||next==="<"&&!/<([!=]|\w+>)/.test(remaining()))&&(output=`\\${value}`),push({type:"text",value,output});continue}if(opts.dot!==!0&&(prev.type==="slash"||prev.type==="bos")){push({type:"qmark",value,output:QMARK_NO_DOT});continue}push({type:"qmark",value,output:QMARK});continue}if(value==="!"){if(opts.noextglob!==!0&&peek()==="("&&(peek(2)!=="?"||!/[!=<:]/.test(peek(3)))){extglobOpen("negate",value);continue}if(opts.nonegate!==!0&&state.index===0){negate();continue}}if(value==="+"){if(opts.noextglob!==!0&&peek()==="("&&peek(2)!=="?"){extglobOpen("plus",value);continue}if(prev&&prev.value==="("||opts.regex===!1){push({type:"plus",value,output:PLUS_LITERAL});continue}if(prev&&(prev.type==="bracket"||prev.type==="paren"||prev.type==="brace")||state.parens>0){push({type:"plus",value});continue}push({type:"plus",value:PLUS_LITERAL});continue}if(value==="@"){if(opts.noextglob!==!0&&peek()==="("&&peek(2)!=="?"){push({type:"at",extglob:!0,value,output:""});continue}push({type:"text",value});continue}if(value!=="*"){(value==="$"||value==="^")&&(value=`\\${value}`);let match=REGEX_NON_SPECIAL_CHARS.exec(remaining());match&&(value+=match[0],state.index+=match[0].length),push({type:"text",value});continue}if(prev&&(prev.type==="globstar"||prev.star===!0)){prev.type="star",prev.star=!0,prev.value+=value,prev.output=star,state.backtrack=!0,state.globstar=!0,consume(value);continue}let rest=remaining();if(opts.noextglob!==!0&&/^\([^?]/.test(rest)){extglobOpen("star",value);continue}if(prev.type==="star"){if(opts.noglobstar===!0){consume(value);continue}let prior=prev.prev,before=prior.prev,isStart=prior.type==="slash"||prior.type==="bos",afterStar=before&&(before.type==="star"||before.type==="globstar");if(opts.bash===!0&&(!isStart||rest[0]&&rest[0]!=="/")){push({type:"star",value,output:""});continue}let isBrace=state.braces>0&&(prior.type==="comma"||prior.type==="brace"),isExtglob=extglobs.length&&(prior.type==="pipe"||prior.type==="paren");if(!isStart&&prior.type!=="paren"&&!isBrace&&!isExtglob){push({type:"star",value,output:""});continue}for(;rest.slice(0,3)==="/**";){let after=input[state.index+4];if(after&&after!=="/")break;rest=rest.slice(3),consume("/**",3)}if(prior.type==="bos"&&eos()){prev.type="globstar",prev.value+=value,prev.output=globstar(opts),state.output=prev.output,state.globstar=!0,consume(value);continue}if(prior.type==="slash"&&prior.prev.type!=="bos"&&!afterStar&&eos()){state.output=state.output.slice(0,-(prior.output+prev.output).length),prior.output=`(?:${prior.output}`,prev.type="globstar",prev.output=globstar(opts)+(opts.strictSlashes?")":"|$)"),prev.value+=value,state.globstar=!0,state.output+=prior.output+prev.output,consume(value);continue}if(prior.type==="slash"&&prior.prev.type!=="bos"&&rest[0]==="/"){let end=rest[1]!==void 0?"|$":"";state.output=state.output.slice(0,-(prior.output+prev.output).length),prior.output=`(?:${prior.output}`,prev.type="globstar",prev.output=`${globstar(opts)}${SLASH_LITERAL}|${SLASH_LITERAL}${end})`,prev.value+=value,state.output+=prior.output+prev.output,state.globstar=!0,consume(value+advance()),push({type:"slash",value:"/",output:""});continue}if(prior.type==="bos"&&rest[0]==="/"){prev.type="globstar",prev.value+=value,prev.output=`(?:^|${SLASH_LITERAL}|${globstar(opts)}${SLASH_LITERAL})`,state.output=prev.output,state.globstar=!0,consume(value+advance()),push({type:"slash",value:"/",output:""});continue}state.output=state.output.slice(0,-prev.output.length),prev.type="globstar",prev.output=globstar(opts),prev.value+=value,state.output+=prev.output,state.globstar=!0,consume(value);continue}let token={type:"star",value,output:star};if(opts.bash===!0){token.output=".*?",(prev.type==="bos"||prev.type==="slash")&&(token.output=nodot+token.output),push(token);continue}if(prev&&(prev.type==="bracket"||prev.type==="paren")&&opts.regex===!0){token.output=value,push(token);continue}(state.index===state.start||prev.type==="slash"||prev.type==="dot")&&(prev.type==="dot"?(state.output+=NO_DOT_SLASH,prev.output+=NO_DOT_SLASH):opts.dot===!0?(state.output+=NO_DOTS_SLASH,prev.output+=NO_DOTS_SLASH):(state.output+=nodot,prev.output+=nodot),peek()!=="*"&&(state.output+=ONE_CHAR,prev.output+=ONE_CHAR)),push(token)}for(;state.brackets>0;){if(opts.strictBrackets===!0)throw new SyntaxError(syntaxError("closing","]"));state.output=utils.escapeLast(state.output,"["),decrement("brackets")}for(;state.parens>0;){if(opts.strictBrackets===!0)throw new SyntaxError(syntaxError("closing",")"));state.output=utils.escapeLast(state.output,"("),decrement("parens")}for(;state.braces>0;){if(opts.strictBrackets===!0)throw new SyntaxError(syntaxError("closing","}"));state.output=utils.escapeLast(state.output,"{"),decrement("braces")}if(opts.strictSlashes!==!0&&(prev.type==="star"||prev.type==="bracket")&&push({type:"maybe_slash",value:"",output:`${SLASH_LITERAL}?`}),state.backtrack===!0){state.output="";for(let token of state.tokens)state.output+=token.output!=null?token.output:token.value,token.suffix&&(state.output+=token.suffix)}return state};parse.fastpaths=(input,options)=>{let opts={...options},max=typeof opts.maxLength=="number"?Math.min(MAX_LENGTH,opts.maxLength):MAX_LENGTH,len=input.length;if(len>max)throw new SyntaxError(`Input length: ${len}, exceeds maximum allowed length: ${max}`);input=REPLACEMENTS[input]||input;let win32=utils.isWindows(options),{DOT_LITERAL,SLASH_LITERAL,ONE_CHAR,DOTS_SLASH,NO_DOT,NO_DOTS,NO_DOTS_SLASH,STAR,START_ANCHOR}=constants.globChars(win32),nodot=opts.dot?NO_DOTS:NO_DOT,slashDot=opts.dot?NO_DOTS_SLASH:NO_DOT,capture=opts.capture?"":"?:",state={negated:!1,prefix:""},star=opts.bash===!0?".*?":STAR;opts.capture&&(star=`(${star})`);let globstar=opts2=>opts2.noglobstar===!0?star:`(${capture}(?:(?!${START_ANCHOR}${opts2.dot?DOTS_SLASH:DOT_LITERAL}).)*?)`,create=str=>{switch(str){case"*":return`${nodot}${ONE_CHAR}${star}`;case".*":return`${DOT_LITERAL}${ONE_CHAR}${star}`;case"*.*":return`${nodot}${star}${DOT_LITERAL}${ONE_CHAR}${star}`;case"*/*":return`${nodot}${star}${SLASH_LITERAL}${ONE_CHAR}${slashDot}${star}`;case"**":return nodot+globstar(opts);case"**/*":return`(?:${nodot}${globstar(opts)}${SLASH_LITERAL})?${slashDot}${ONE_CHAR}${star}`;case"**/*.*":return`(?:${nodot}${globstar(opts)}${SLASH_LITERAL})?${slashDot}${star}${DOT_LITERAL}${ONE_CHAR}${star}`;case"**/.*":return`(?:${nodot}${globstar(opts)}${SLASH_LITERAL})?${DOT_LITERAL}${ONE_CHAR}${star}`;default:{let match=/^(.*?)\.(\w+)$/.exec(str);if(!match)return;let source2=create(match[1]);return source2?source2+DOT_LITERAL+match[2]:void 0}}},output=utils.removePrefix(input,state),source=create(output);return source&&opts.strictSlashes!==!0&&(source+=`${SLASH_LITERAL}?`),source};module2.exports=parse}});var require_picomatch=__commonJS({"node_modules/picomatch/lib/picomatch.js"(exports2,module2){"use strict";var path=require("path"),scan=require_scan(),parse=require_parse3(),utils=require_utils8(),constants=require_constants3(),isObject=val=>val&&typeof val=="object"&&!Array.isArray(val),picomatch=(glob,options,returnState=!1)=>{if(Array.isArray(glob)){let fns=glob.map(input=>picomatch(input,options,returnState));return str=>{for(let isMatch of fns){let state2=isMatch(str);if(state2)return state2}return!1}}let isState=isObject(glob)&&glob.tokens&&glob.input;if(glob===""||typeof glob!="string"&&!isState)throw new TypeError("Expected pattern to be a non-empty string");let opts=options||{},posix=utils.isWindows(options),regex=isState?picomatch.compileRe(glob,options):picomatch.makeRe(glob,options,!1,!0),state=regex.state;delete regex.state;let isIgnored=()=>!1;if(opts.ignore){let ignoreOpts={...options,ignore:null,onMatch:null,onResult:null};isIgnored=picomatch(opts.ignore,ignoreOpts,returnState)}let matcher=(input,returnObject=!1)=>{let{isMatch,match,output}=picomatch.test(input,regex,options,{glob,posix}),result={glob,state,regex,posix,input,output,match,isMatch};return typeof opts.onResult=="function"&&opts.onResult(result),isMatch===!1?(result.isMatch=!1,returnObject?result:!1):isIgnored(input)?(typeof opts.onIgnore=="function"&&opts.onIgnore(result),result.isMatch=!1,returnObject?result:!1):(typeof opts.onMatch=="function"&&opts.onMatch(result),returnObject?result:!0)};return returnState&&(matcher.state=state),matcher};picomatch.test=(input,regex,options,{glob,posix}={})=>{if(typeof input!="string")throw new TypeError("Expected input to be a string");if(input==="")return{isMatch:!1,output:""};let opts=options||{},format=opts.format||(posix?utils.toPosixSlashes:null),match=input===glob,output=match&&format?format(input):input;return match===!1&&(output=format?format(input):input,match=output===glob),(match===!1||opts.capture===!0)&&(opts.matchBase===!0||opts.basename===!0?match=picomatch.matchBase(input,regex,options,posix):match=regex.exec(output)),{isMatch:!!match,match,output}};picomatch.matchBase=(input,glob,options,posix=utils.isWindows(options))=>(glob instanceof RegExp?glob:picomatch.makeRe(glob,options)).test(path.basename(input));picomatch.isMatch=(str,patterns,options)=>picomatch(patterns,options)(str);picomatch.parse=(pattern,options)=>Array.isArray(pattern)?pattern.map(p=>picomatch.parse(p,options)):parse(pattern,{...options,fastpaths:!1});picomatch.scan=(input,options)=>scan(input,options);picomatch.compileRe=(state,options,returnOutput=!1,returnState=!1)=>{if(returnOutput===!0)return state.output;let opts=options||{},prepend=opts.contains?"":"^",append=opts.contains?"":"$",source=`${prepend}(?:${state.output})${append}`;state&&state.negated===!0&&(source=`^(?!${source}).*$`);let regex=picomatch.toRegex(source,options);return returnState===!0&&(regex.state=state),regex};picomatch.makeRe=(input,options={},returnOutput=!1,returnState=!1)=>{if(!input||typeof input!="string")throw new TypeError("Expected a non-empty string");let parsed={negated:!1,fastpaths:!0};return options.fastpaths!==!1&&(input[0]==="."||input[0]==="*")&&(parsed.output=parse.fastpaths(input,options)),parsed.output||(parsed=parse(input,options)),picomatch.compileRe(parsed,options,returnOutput,returnState)};picomatch.toRegex=(source,options)=>{try{let opts=options||{};return new RegExp(source,opts.flags||(opts.nocase?"i":""))}catch(err){if(options&&options.debug===!0)throw err;return/$^/}};picomatch.constants=constants;module2.exports=picomatch}});var require_picomatch2=__commonJS({"node_modules/picomatch/index.js"(exports2,module2){"use strict";module2.exports=require_picomatch()}});var require_micromatch=__commonJS({"node_modules/micromatch/index.js"(exports2,module2){"use strict";var util=require("util"),braces=require_braces(),picomatch=require_picomatch2(),utils=require_utils8(),isEmptyString=v=>v===""||v==="./",hasBraces=v=>{let index=v.indexOf("{");return index>-1&&v.indexOf("}",index)>-1},micromatch=(list,patterns,options)=>{patterns=[].concat(patterns),list=[].concat(list);let omit=new Set,keep=new Set,items=new Set,negatives=0,onResult=state=>{items.add(state.output),options&&options.onResult&&options.onResult(state)};for(let i=0;i<patterns.length;i++){let isMatch=picomatch(String(patterns[i]),{...options,onResult},!0),negated=isMatch.state.negated||isMatch.state.negatedExtglob;negated&&negatives++;for(let item of list){let matched=isMatch(item,!0);(negated?!matched.isMatch:matched.isMatch)&&(negated?omit.add(matched.output):(omit.delete(matched.output),keep.add(matched.output)))}}let matches=(negatives===patterns.length?[...items]:[...keep]).filter(item=>!omit.has(item));if(options&&matches.length===0){if(options.failglob===!0)throw new Error(`No matches found for "${patterns.join(", ")}"`);if(options.nonull===!0||options.nullglob===!0)return options.unescape?patterns.map(p=>p.replace(/\\/g,"")):patterns}return matches};micromatch.match=micromatch;micromatch.matcher=(pattern,options)=>picomatch(pattern,options);micromatch.isMatch=(str,patterns,options)=>picomatch(patterns,options)(str);micromatch.any=micromatch.isMatch;micromatch.not=(list,patterns,options={})=>{patterns=[].concat(patterns).map(String);let result=new Set,items=[],onResult=state=>{options.onResult&&options.onResult(state),items.push(state.output)},matches=new Set(micromatch(list,patterns,{...options,onResult}));for(let item of items)matches.has(item)||result.add(item);return[...result]};micromatch.contains=(str,pattern,options)=>{if(typeof str!="string")throw new TypeError(`Expected a string: "${util.inspect(str)}"`);if(Array.isArray(pattern))return pattern.some(p=>micromatch.contains(str,p,options));if(typeof pattern=="string"){if(isEmptyString(str)||isEmptyString(pattern))return!1;if(str.includes(pattern)||str.startsWith("./")&&str.slice(2).includes(pattern))return!0}return micromatch.isMatch(str,pattern,{...options,contains:!0})};micromatch.matchKeys=(obj,patterns,options)=>{if(!utils.isObject(obj))throw new TypeError("Expected the first argument to be an object");let keys=micromatch(Object.keys(obj),patterns,options),res={};for(let key of keys)res[key]=obj[key];return res};micromatch.some=(list,patterns,options)=>{let items=[].concat(list);for(let pattern of[].concat(patterns)){let isMatch=picomatch(String(pattern),options);if(items.some(item=>isMatch(item)))return!0}return!1};micromatch.every=(list,patterns,options)=>{let items=[].concat(list);for(let pattern of[].concat(patterns)){let isMatch=picomatch(String(pattern),options);if(!items.every(item=>isMatch(item)))return!1}return!0};micromatch.all=(str,patterns,options)=>{if(typeof str!="string")throw new TypeError(`Expected a string: "${util.inspect(str)}"`);return[].concat(patterns).every(p=>picomatch(p,options)(str))};micromatch.capture=(glob,input,options)=>{let posix=utils.isWindows(options),match=picomatch.makeRe(String(glob),{...options,capture:!0}).exec(posix?utils.toPosixSlashes(input):input);if(match)return match.slice(1).map(v=>v===void 0?"":v)};micromatch.makeRe=(...args)=>picomatch.makeRe(...args);micromatch.scan=(...args)=>picomatch.scan(...args);micromatch.parse=(patterns,options)=>{let res=[];for(let pattern of[].concat(patterns||[]))for(let str of braces(String(pattern),options))res.push(picomatch.parse(str,options));return res};micromatch.braces=(pattern,options)=>{if(typeof pattern!="string")throw new TypeError("Expected a string");return options&&options.nobrace===!0||!hasBraces(pattern)?[pattern]:braces(pattern,options)};micromatch.braceExpand=(pattern,options)=>{if(typeof pattern!="string")throw new TypeError("Expected a string");return micromatch.braces(pattern,{...options,expand:!0})};micromatch.hasBraces=hasBraces;module2.exports=micromatch}});var require_context_matcher=__commonJS({"node_modules/http-proxy-middleware/dist/context-matcher.js"(exports2){"use strict";Object.defineProperty(exports2,"__esModule",{value:!0});exports2.match=void 0;var isGlob=require_is_glob(),micromatch=require_micromatch(),url=require("url"),errors_1=require_errors2();function match(context,uri,req){if(isStringPath(context))return matchSingleStringPath(context,uri);if(isGlobPath(context))return matchSingleGlobPath(context,uri);if(Array.isArray(context)){if(context.every(isStringPath))return matchMultiPath(context,uri);if(context.every(isGlobPath))return matchMultiGlobPath(context,uri);throw new Error(errors_1.ERRORS.ERR_CONTEXT_MATCHER_INVALID_ARRAY)}if(typeof context=="function"){let pathname=getUrlPathName(uri);return context(pathname,req)}throw new Error(errors_1.ERRORS.ERR_CONTEXT_MATCHER_GENERIC)}exports2.match=match;function matchSingleStringPath(context,uri){return getUrlPathName(uri).indexOf(context)===0}function matchSingleGlobPath(pattern,uri){let pathname=getUrlPathName(uri),matches=micromatch([pathname],pattern);return matches&&matches.length>0}function matchMultiGlobPath(patternList,uri){return matchSingleGlobPath(patternList,uri)}function matchMultiPath(contextList,uri){let isMultiPath=!1;for(let context of contextList)if(matchSingleStringPath(context,uri)){isMultiPath=!0;break}return isMultiPath}function getUrlPathName(uri){return uri&&url.parse(uri).pathname}function isStringPath(context){return typeof context=="string"&&!isGlob(context)}function isGlobPath(context){return isGlob(context)}}});var require_handlers=__commonJS({"node_modules/http-proxy-middleware/dist/_handlers.js"(exports2){"use strict";Object.defineProperty(exports2,"__esModule",{value:!0});exports2.getHandlers=exports2.init=void 0;var logger_1=require_logger(),logger=(0,logger_1.getInstance)();function init(proxy,option){let handlers=getHandlers(option);for(let eventName of Object.keys(handlers))proxy.on(eventName,handlers[eventName]);proxy.on("econnreset",(error,req,res,target)=>{logger.error("[HPM] ECONNRESET: %O",error)}),proxy.on("proxyReqWs",(proxyReq,req,socket,options,head)=>{socket.on("error",error=>{logger.error("[HPM] WebSocket error: %O",error)})}),logger.debug("[HPM] Subscribed to http-proxy events:",Object.keys(handlers))}exports2.init=init;function getHandlers(options){let proxyEventsMap={error:"onError",proxyReq:"onProxyReq",proxyReqWs:"onProxyReqWs",proxyRes:"onProxyRes",open:"onOpen",close:"onClose"},handlers={};for(let[eventName,onEventName]of Object.entries(proxyEventsMap)){let fnHandler=options?options[onEventName]:null;typeof fnHandler=="function"&&(handlers[eventName]=fnHandler)}return typeof handlers.error!="function"&&(handlers.error=defaultErrorHandler),typeof handlers.close!="function"&&(handlers.close=logClose),handlers}exports2.getHandlers=getHandlers;function defaultErrorHandler(err,req,res){if(!req&&!res)throw err;let host=req.headers&&req.headers.host,code=err.code;if(res.writeHead&&!res.headersSent)if(/HPE_INVALID/.test(code))res.writeHead(502);else switch(code){case"ECONNRESET":case"ENOTFOUND":case"ECONNREFUSED":case"ETIMEDOUT":res.writeHead(504);break;default:res.writeHead(500)}res.end(`Error occurred while trying to proxy: ${host}${req.url}`)}function logClose(req,socket,head){logger.info("[HPM] Client disconnected")}}});var require_path_rewriter=__commonJS({"node_modules/http-proxy-middleware/dist/path-rewriter.js"(exports2){"use strict";Object.defineProperty(exports2,"__esModule",{value:!0});exports2.createPathRewriter=void 0;var isPlainObj=require_is_plain_obj(),errors_1=require_errors2(),logger_1=require_logger(),logger=(0,logger_1.getInstance)();function createPathRewriter(rewriteConfig){let rulesCache;if(!isValidRewriteConfig(rewriteConfig))return;if(typeof rewriteConfig=="function")return rewriteConfig;return rulesCache=parsePathRewriteRules(rewriteConfig),rewritePath;function rewritePath(path){let result=path;for(let rule of rulesCache)if(rule.regex.test(path)){result=result.replace(rule.regex,rule.value),logger.debug('[HPM] Rewriting path from "%s" to "%s"',path,result);break}return result}}exports2.createPathRewriter=createPathRewriter;function isValidRewriteConfig(rewriteConfig){if(typeof rewriteConfig=="function")return!0;if(isPlainObj(rewriteConfig))return Object.keys(rewriteConfig).length!==0;if(rewriteConfig==null)return!1;throw new Error(errors_1.ERRORS.ERR_PATH_REWRITER_CONFIG)}function parsePathRewriteRules(rewriteConfig){let rules=[];if(isPlainObj(rewriteConfig))for(let[key]of Object.entries(rewriteConfig))rules.push({regex:new RegExp(key),value:rewriteConfig[key]}),logger.info('[HPM] Proxy rewrite rule created: "%s" ~> "%s"',key,rewriteConfig[key]);return rules}}});var require_router2=__commonJS({"node_modules/http-proxy-middleware/dist/router.js"(exports2){"use strict";Object.defineProperty(exports2,"__esModule",{value:!0});exports2.getTarget=void 0;var isPlainObj=require_is_plain_obj(),logger_1=require_logger(),logger=(0,logger_1.getInstance)();async function getTarget(req,config){let newTarget,router=config.router;return isPlainObj(router)?newTarget=getTargetFromProxyTable(req,router):typeof router=="function"&&(newTarget=await router(req)),newTarget}exports2.getTarget=getTarget;function getTargetFromProxyTable(req,table){let result,host=req.headers.host||"",path=req.url||"";for(let[key]of Object.entries(table))if(containsPath(key)){if(isHostAndPathKey(key)){let[keyHost,keyPath]=splitHostAndPathKey(key);if(host===keyHost&&path.startsWith(keyPath)){result=table[key],logger.debug('[HPM] Router table match: "%s"',key);break}}else if(path.startsWith(key)){result=table[key],logger.debug('[HPM] Router table match: "%s"',key);break}}else if(key===host){result=table[key],logger.debug('[HPM] Router table match: "%s"',host);break}return result}function containsPath(v){return v.indexOf("/")>-1}function isHostAndPathKey(v){return containsPath(v)&&!v.startsWith("/")}function splitHostAndPathKey(v){let firstSlash=v.indexOf("/");return[v.slice(0,firstSlash),v.slice(firstSlash)]}}});var require_http_proxy_middleware=__commonJS({"node_modules/http-proxy-middleware/dist/http-proxy-middleware.js"(exports2){"use strict";Object.defineProperty(exports2,"__esModule",{value:!0});exports2.HttpProxyMiddleware=void 0;var httpProxy=require_http_proxy3(),config_factory_1=require_config_factory(),contextMatcher=require_context_matcher(),handlers=require_handlers(),logger_1=require_logger(),PathRewriter=require_path_rewriter(),Router=require_router2(),HttpProxyMiddleware=class{constructor(context,opts){this.logger=(0,logger_1.getInstance)(),this.wsInternalSubscribed=!1,this.serverOnCloseSubscribed=!1,this.middleware=async(req,res,next)=>{var _a,_b;if(this.shouldProxy(this.config.context,req))try{let activeProxyOptions=await this.prepareProxyRequest(req);this.proxy.web(req,res,activeProxyOptions)}catch(err){next(err)}else next();let server=(_b=(_a=req.socket)!==null&&_a!==void 0?_a:req.connection)===null||_b===void 0?void 0:_b.server;server&&!this.serverOnCloseSubscribed&&(server.on("close",()=>{this.logger.info("[HPM] server close signal received: closing proxy server"),this.proxy.close()}),this.serverOnCloseSubscribed=!0),this.proxyOptions.ws===!0&&this.catchUpgradeRequest(server)},this.catchUpgradeRequest=server=>{this.wsInternalSubscribed||(server.on("upgrade",this.handleUpgrade),this.wsInternalSubscribed=!0)},this.handleUpgrade=async(req,socket,head)=>{if(this.shouldProxy(this.config.context,req)){let activeProxyOptions=await this.prepareProxyRequest(req);this.proxy.ws(req,socket,head,activeProxyOptions),this.logger.info("[HPM] Upgrading to WebSocket")}},this.shouldProxy=(context2,req)=>{try{let path=req.originalUrl||req.url;return contextMatcher.match(context2,path,req)}catch(error){return this.logger.error(error),!1}},this.prepareProxyRequest=async req=>{req.url=req.originalUrl||req.url;let originalPath=req.url,newProxyOptions=Object.assign({},this.proxyOptions);if(await this.applyRouter(req,newProxyOptions),await this.applyPathRewrite(req,this.pathRewriter),this.proxyOptions.logLevel==="debug"){let arrow=(0,logger_1.getArrow)(originalPath,req.url,this.proxyOptions.target,newProxyOptions.target);this.logger.debug("[HPM] %s %s %s %s",req.method,originalPath,arrow,newProxyOptions.target)}return newProxyOptions},this.applyRouter=async(req,options)=>{let newTarget;options.router&&(newTarget=await Router.getTarget(req,options),newTarget&&(this.logger.debug('[HPM] Router new target: %s -> "%s"',options.target,newTarget),options.target=newTarget))},this.applyPathRewrite=async(req,pathRewriter)=>{if(pathRewriter){let path=await pathRewriter(req.url,req);typeof path=="string"?req.url=path:this.logger.info("[HPM] pathRewrite: No rewritten path found. (%s)",req.url)}},this.logError=(err,req,res,target)=>{var _a;let requestHref=`${((_a=req.headers)===null||_a===void 0?void 0:_a.host)||req.hostname||req.host}${req.url}`,targetHref=`${target?.href}`;this.logger.error("[HPM] Error occurred while proxying request %s to %s [%s] (%s)",requestHref,targetHref,err.code||err,"https://nodejs.org/api/errors.html#errors_common_system_errors")},this.config=(0,config_factory_1.createConfig)(context,opts),this.proxyOptions=this.config.options,this.proxy=httpProxy.createProxyServer({}),this.logger.info(`[HPM] Proxy created: ${this.config.context} -> ${this.proxyOptions.target}`),this.pathRewriter=PathRewriter.createPathRewriter(this.proxyOptions.pathRewrite),handlers.init(this.proxy,this.proxyOptions),this.proxy.on("error",this.logError),this.middleware.upgrade=(req,socket,head)=>{this.wsInternalSubscribed||this.handleUpgrade(req,socket,head)}}};exports2.HttpProxyMiddleware=HttpProxyMiddleware}});var require_response_interceptor=__commonJS({"node_modules/http-proxy-middleware/dist/handlers/response-interceptor.js"(exports2){"use strict";Object.defineProperty(exports2,"__esModule",{value:!0});exports2.responseInterceptor=void 0;var zlib=require("zlib");function responseInterceptor(interceptor){return async function(proxyRes,req,res){let originalProxyRes=proxyRes,buffer=Buffer.from("","utf8"),_proxyRes=decompress(proxyRes,proxyRes.headers["content-encoding"]);_proxyRes.on("data",chunk=>buffer=Buffer.concat([buffer,chunk])),_proxyRes.on("end",async()=>{copyHeaders(proxyRes,res);let interceptedBuffer=Buffer.from(await interceptor(buffer,originalProxyRes,req,res));res.setHeader("content-length",Buffer.byteLength(interceptedBuffer,"utf8")),res.write(interceptedBuffer),res.end()}),_proxyRes.on("error",error=>{res.end(`Error fetching proxied request: ${error.message}`)})}}exports2.responseInterceptor=responseInterceptor;function decompress(proxyRes,contentEncoding){let _proxyRes=proxyRes,decompress2;switch(contentEncoding){case"gzip":decompress2=zlib.createGunzip();break;case"br":decompress2=zlib.createBrotliDecompress();break;case"deflate":decompress2=zlib.createInflate();break;default:break}return decompress2&&(_proxyRes.pipe(decompress2),_proxyRes=decompress2),_proxyRes}function copyHeaders(originalResponse,response){if(response.statusCode=originalResponse.statusCode,response.statusMessage=originalResponse.statusMessage,response.setHeader){let keys=Object.keys(originalResponse.headers);keys=keys.filter(key=>!["content-encoding","transfer-encoding"].includes(key)),keys.forEach(key=>{let value=originalResponse.headers[key];key==="set-cookie"&&(value=Array.isArray(value)?value:[value],value=value.map(x=>x.replace(/Domain=[^;]+?/i,""))),response.setHeader(key,value)})}else response.headers=originalResponse.headers}}});var require_fix_request_body=__commonJS({"node_modules/http-proxy-middleware/dist/handlers/fix-request-body.js"(exports2){"use strict";Object.defineProperty(exports2,"__esModule",{value:!0});exports2.fixRequestBody=void 0;var querystring=require("querystring");function fixRequestBody(proxyReq,req){if(req.readableLength!==0)return;let requestBody=req.body;if(!requestBody)return;let contentType=proxyReq.getHeader("Content-Type");if(!contentType)return;let writeBody=bodyData=>{proxyReq.setHeader("Content-Length",Buffer.byteLength(bodyData)),proxyReq.write(bodyData)};contentType.includes("application/json")?writeBody(JSON.stringify(requestBody)):contentType.includes("application/x-www-form-urlencoded")&&writeBody(querystring.stringify(requestBody))}exports2.fixRequestBody=fixRequestBody}});var require_public=__commonJS({"node_modules/http-proxy-middleware/dist/handlers/public.js"(exports2){"use strict";Object.defineProperty(exports2,"__esModule",{value:!0});exports2.fixRequestBody=exports2.responseInterceptor=void 0;var response_interceptor_1=require_response_interceptor();Object.defineProperty(exports2,"responseInterceptor",{enumerable:!0,get:function(){return response_interceptor_1.responseInterceptor}});var fix_request_body_1=require_fix_request_body();Object.defineProperty(exports2,"fixRequestBody",{enumerable:!0,get:function(){return fix_request_body_1.fixRequestBody}})}});var require_handlers2=__commonJS({"node_modules/http-proxy-middleware/dist/handlers/index.js"(exports2){"use strict";var __createBinding=exports2&&exports2.__createBinding||(Object.create?(function(o,m,k,k2){k2===void 0&&(k2=k),Object.defineProperty(o,k2,{enumerable:!0,get:function(){return m[k]}})}):(function(o,m,k,k2){k2===void 0&&(k2=k),o[k2]=m[k]})),__exportStar=exports2&&exports2.__exportStar||function(m,exports3){for(var p in m)p!=="default"&&!Object.prototype.hasOwnProperty.call(exports3,p)&&__createBinding(exports3,m,p)};Object.defineProperty(exports2,"__esModule",{value:!0});__exportStar(require_public(),exports2)}});var require_dist2=__commonJS({"node_modules/http-proxy-middleware/dist/index.js"(exports2){"use strict";var __createBinding=exports2&&exports2.__createBinding||(Object.create?(function(o,m,k,k2){k2===void 0&&(k2=k),Object.defineProperty(o,k2,{enumerable:!0,get:function(){return m[k]}})}):(function(o,m,k,k2){k2===void 0&&(k2=k),o[k2]=m[k]})),__exportStar=exports2&&exports2.__exportStar||function(m,exports3){for(var p in m)p!=="default"&&!Object.prototype.hasOwnProperty.call(exports3,p)&&__createBinding(exports3,m,p)};Object.defineProperty(exports2,"__esModule",{value:!0});exports2.createProxyMiddleware=void 0;var http_proxy_middleware_1=require_http_proxy_middleware();function createProxyMiddleware(context,options){let{middleware}=new http_proxy_middleware_1.HttpProxyMiddleware(context,options);return middleware}exports2.createProxyMiddleware=createProxyMiddleware;__exportStar(require_handlers2(),exports2)}});var require_base64id=__commonJS({"node_modules/base64id/lib/base64id.js"(exports2,module2){var crypto=require("crypto"),Base64Id=function(){};Base64Id.prototype.getRandomBytes=function(bytes){var BUFFER_SIZE=4096,self2=this;if(bytes=bytes||12,bytes>BUFFER_SIZE)return crypto.randomBytes(bytes);var bytesInBuffer=parseInt(BUFFER_SIZE/bytes),threshold=parseInt(bytesInBuffer*.85);if(!threshold||(this.bytesBufferIndex==null&&(this.bytesBufferIndex=-1),this.bytesBufferIndex==bytesInBuffer&&(this.bytesBuffer=null,this.bytesBufferIndex=-1),(this.bytesBufferIndex==-1||this.bytesBufferIndex>threshold)&&(this.isGeneratingBytes||(this.isGeneratingBytes=!0,crypto.randomBytes(BUFFER_SIZE,function(err,bytes2){self2.bytesBuffer=bytes2,self2.bytesBufferIndex=0,self2.isGeneratingBytes=!1})),this.bytesBufferIndex==-1)))return crypto.randomBytes(bytes);var result=this.bytesBuffer.slice(bytes*this.bytesBufferIndex,bytes*(this.bytesBufferIndex+1));return this.bytesBufferIndex++,result};Base64Id.prototype.generateId=function(){var rand=Buffer.alloc(15);return rand.writeInt32BE?(this.sequenceNumber=this.sequenceNumber+1|0,rand.writeInt32BE(this.sequenceNumber,11),crypto.randomBytes?this.getRandomBytes(12).copy(rand):[0,4,8].forEach(function(i){rand.writeInt32BE(Math.random()*Math.pow(2,32)|0,i)}),rand.toString("base64").replace(/\//g,"_").replace(/\+/g,"-")):Math.abs(Math.random()*Math.random()*Date.now()|0).toString()+Math.abs(Math.random()*Math.random()*Date.now()|0).toString()};exports2=module2.exports=new Base64Id}});var require_commons=__commonJS({"node_modules/engine.io-parser/build/cjs/commons.js"(exports2){"use strict";Object.defineProperty(exports2,"__esModule",{value:!0});exports2.ERROR_PACKET=exports2.PACKET_TYPES_REVERSE=exports2.PACKET_TYPES=void 0;var PACKET_TYPES=Object.create(null);exports2.PACKET_TYPES=PACKET_TYPES;PACKET_TYPES.open="0";PACKET_TYPES.close="1";PACKET_TYPES.ping="2";PACKET_TYPES.pong="3";PACKET_TYPES.message="4";PACKET_TYPES.upgrade="5";PACKET_TYPES.noop="6";var PACKET_TYPES_REVERSE=Object.create(null);exports2.PACKET_TYPES_REVERSE=PACKET_TYPES_REVERSE;Object.keys(PACKET_TYPES).forEach(key=>{PACKET_TYPES_REVERSE[PACKET_TYPES[key]]=key});var ERROR_PACKET={type:"error",data:"parser error"};exports2.ERROR_PACKET=ERROR_PACKET}});var require_encodePacket=__commonJS({"node_modules/engine.io-parser/build/cjs/encodePacket.js"(exports2){"use strict";Object.defineProperty(exports2,"__esModule",{value:!0});exports2.encodePacket=void 0;exports2.encodePacketToBinary=encodePacketToBinary;var commons_js_1=require_commons(),encodePacket=({type,data},supportsBinary,callback)=>data instanceof ArrayBuffer||ArrayBuffer.isView(data)?callback(supportsBinary?data:"b"+toBuffer(data,!0).toString("base64")):callback(commons_js_1.PACKET_TYPES[type]+(data||""));exports2.encodePacket=encodePacket;var toBuffer=(data,forceBufferConversion)=>Buffer.isBuffer(data)||data instanceof Uint8Array&&!forceBufferConversion?data:data instanceof ArrayBuffer?Buffer.from(data):Buffer.from(data.buffer,data.byteOffset,data.byteLength),TEXT_ENCODER;function encodePacketToBinary(packet,callback){if(packet.data instanceof ArrayBuffer||ArrayBuffer.isView(packet.data))return callback(toBuffer(packet.data,!1));(0,exports2.encodePacket)(packet,!0,encoded=>{TEXT_ENCODER||(TEXT_ENCODER=new TextEncoder),callback(TEXT_ENCODER.encode(encoded))})}}});var require_decodePacket=__commonJS({"node_modules/engine.io-parser/build/cjs/decodePacket.js"(exports2){"use strict";Object.defineProperty(exports2,"__esModule",{value:!0});exports2.decodePacket=void 0;var commons_js_1=require_commons(),decodePacket=(encodedPacket,binaryType)=>{if(typeof encodedPacket!="string")return{type:"message",data:mapBinary(encodedPacket,binaryType)};let type=encodedPacket.charAt(0);if(type==="b"){let buffer=Buffer.from(encodedPacket.substring(1),"base64");return{type:"message",data:mapBinary(buffer,binaryType)}}return commons_js_1.PACKET_TYPES_REVERSE[type]?encodedPacket.length>1?{type:commons_js_1.PACKET_TYPES_REVERSE[type],data:encodedPacket.substring(1)}:{type:commons_js_1.PACKET_TYPES_REVERSE[type]}:commons_js_1.ERROR_PACKET};exports2.decodePacket=decodePacket;var mapBinary=(data,binaryType)=>binaryType==="arraybuffer"?data instanceof ArrayBuffer?data:Buffer.isBuffer(data)?data.buffer.slice(data.byteOffset,data.byteOffset+data.byteLength):data.buffer:Buffer.isBuffer(data)?data:Buffer.from(data)}});var require_cjs2=__commonJS({"node_modules/engine.io-parser/build/cjs/index.js"(exports2){"use strict";Object.defineProperty(exports2,"__esModule",{value:!0});exports2.decodePayload=exports2.decodePacket=exports2.encodePayload=exports2.encodePacket=exports2.protocol=void 0;exports2.createPacketEncoderStream=createPacketEncoderStream;exports2.createPacketDecoderStream=createPacketDecoderStream;var encodePacket_js_1=require_encodePacket();Object.defineProperty(exports2,"encodePacket",{enumerable:!0,get:function(){return encodePacket_js_1.encodePacket}});var decodePacket_js_1=require_decodePacket();Object.defineProperty(exports2,"decodePacket",{enumerable:!0,get:function(){return decodePacket_js_1.decodePacket}});var commons_js_1=require_commons(),SEPARATOR="",encodePayload=(packets,callback)=>{let length=packets.length,encodedPackets=new Array(length),count=0;packets.forEach((packet,i)=>{(0,encodePacket_js_1.encodePacket)(packet,!1,encodedPacket=>{encodedPackets[i]=encodedPacket,++count===length&&callback(encodedPackets.join(SEPARATOR))})})};exports2.encodePayload=encodePayload;var decodePayload=(encodedPayload,binaryType)=>{let encodedPackets=encodedPayload.split(SEPARATOR),packets=[];for(let i=0;i<encodedPackets.length;i++){let decodedPacket=(0,decodePacket_js_1.decodePacket)(encodedPackets[i],binaryType);if(packets.push(decodedPacket),decodedPacket.type==="error")break}return packets};exports2.decodePayload=decodePayload;function createPacketEncoderStream(){return new TransformStream({transform(packet,controller){(0,encodePacket_js_1.encodePacketToBinary)(packet,encodedPacket=>{let payloadLength=encodedPacket.length,header;if(payloadLength<126)header=new Uint8Array(1),new DataView(header.buffer).setUint8(0,payloadLength);else if(payloadLength<65536){header=new Uint8Array(3);let view=new DataView(header.buffer);view.setUint8(0,126),view.setUint16(1,payloadLength)}else{header=new Uint8Array(9);let view=new DataView(header.buffer);view.setUint8(0,127),view.setBigUint64(1,BigInt(payloadLength))}packet.data&&typeof packet.data!="string"&&(header[0]|=128),controller.enqueue(header),controller.enqueue(encodedPacket)})}})}var TEXT_DECODER;function totalLength(chunks){return chunks.reduce((acc,chunk)=>acc+chunk.length,0)}function concatChunks(chunks,size){if(chunks[0].length===size)return chunks.shift();let buffer=new Uint8Array(size),j=0;for(let i=0;i<size;i++)buffer[i]=chunks[0][j++],j===chunks[0].length&&(chunks.shift(),j=0);return chunks.length&&j<chunks[0].length&&(chunks[0]=chunks[0].slice(j)),buffer}function createPacketDecoderStream(maxPayload,binaryType){TEXT_DECODER||(TEXT_DECODER=new TextDecoder);let chunks=[],state=0,expectedLength=-1,isBinary=!1;return new TransformStream({transform(chunk,controller){for(chunks.push(chunk);;){if(state===0){if(totalLength(chunks)<1)break;let header=concatChunks(chunks,1);isBinary=(header[0]&128)===128,expectedLength=header[0]&127,expectedLength<126?state=3:expectedLength===126?state=1:state=2}else if(state===1){if(totalLength(chunks)<2)break;let headerArray=concatChunks(chunks,2);expectedLength=new DataView(headerArray.buffer,headerArray.byteOffset,headerArray.length).getUint16(0),state=3}else if(state===2){if(totalLength(chunks)<8)break;let headerArray=concatChunks(chunks,8),view=new DataView(headerArray.buffer,headerArray.byteOffset,headerArray.length),n=view.getUint32(0);if(n>Math.pow(2,21)-1){controller.enqueue(commons_js_1.ERROR_PACKET);break}expectedLength=n*Math.pow(2,32)+view.getUint32(4),state=3}else{if(totalLength(chunks)<expectedLength)break;let data=concatChunks(chunks,expectedLength);controller.enqueue((0,decodePacket_js_1.decodePacket)(isBinary?data:TEXT_DECODER.decode(data),binaryType)),state=0}if(expectedLength===0||expectedLength>maxPayload){controller.enqueue(commons_js_1.ERROR_PACKET);break}}}})}exports2.protocol=4}});var require_utf8=__commonJS({"node_modules/engine.io/build/parser-v3/utf8.js"(exports2,module2){var stringFromCharCode=String.fromCharCode;function ucs2decode(string){for(var output=[],counter=0,length=string.length,value,extra;counter<length;)value=string.charCodeAt(counter++),value>=55296&&value<=56319&&counter<length?(extra=string.charCodeAt(counter++),(extra&64512)==56320?output.push(((value&1023)<<10)+(extra&1023)+65536):(output.push(value),counter--)):output.push(value);return output}function ucs2encode(array){for(var length=array.length,index=-1,value,output="";++index<length;)value=array[index],value>65535&&(value-=65536,output+=stringFromCharCode(value>>>10&1023|55296),value=56320|value&1023),output+=stringFromCharCode(value);return output}function checkScalarValue(codePoint,strict){if(codePoint>=55296&&codePoint<=57343){if(strict)throw Error("Lone surrogate U+"+codePoint.toString(16).toUpperCase()+" is not a scalar value");return!1}return!0}function createByte(codePoint,shift){return stringFromCharCode(codePoint>>shift&63|128)}function encodeCodePoint(codePoint,strict){if((codePoint&4294967168)==0)return stringFromCharCode(codePoint);var symbol="";return(codePoint&4294965248)==0?symbol=stringFromCharCode(codePoint>>6&31|192):(codePoint&4294901760)==0?(checkScalarValue(codePoint,strict)||(codePoint=65533),symbol=stringFromCharCode(codePoint>>12&15|224),symbol+=createByte(codePoint,6)):(codePoint&4292870144)==0&&(symbol=stringFromCharCode(codePoint>>18&7|240),symbol+=createByte(codePoint,12),symbol+=createByte(codePoint,6)),symbol+=stringFromCharCode(codePoint&63|128),symbol}function utf8encode(string,opts){opts=opts||{};for(var strict=opts.strict!==!1,codePoints=ucs2decode(string),length=codePoints.length,index=-1,codePoint,byteString="";++index<length;)codePoint=codePoints[index],byteString+=encodeCodePoint(codePoint,strict);return byteString}function readContinuationByte(){if(byteIndex>=byteCount)throw Error("Invalid byte index");var continuationByte=byteArray[byteIndex]&255;if(byteIndex++,(continuationByte&192)==128)return continuationByte&63;throw Error("Invalid continuation byte")}function decodeSymbol(strict){var byte1,byte2,byte3,byte4,codePoint;if(byteIndex>byteCount)throw Error("Invalid byte index");if(byteIndex==byteCount)return!1;if(byte1=byteArray[byteIndex]&255,byteIndex++,(byte1&128)==0)return byte1;if((byte1&224)==192){if(byte2=readContinuationByte(),codePoint=(byte1&31)<<6|byte2,codePoint>=128)return codePoint;throw Error("Invalid continuation byte")}if((byte1&240)==224){if(byte2=readContinuationByte(),byte3=readContinuationByte(),codePoint=(byte1&15)<<12|byte2<<6|byte3,codePoint>=2048)return checkScalarValue(codePoint,strict)?codePoint:65533;throw Error("Invalid continuation byte")}if((byte1&248)==240&&(byte2=readContinuationByte(),byte3=readContinuationByte(),byte4=readContinuationByte(),codePoint=(byte1&7)<<18|byte2<<12|byte3<<6|byte4,codePoint>=65536&&codePoint<=1114111))return codePoint;throw Error("Invalid UTF-8 detected")}var byteArray,byteCount,byteIndex;function utf8decode(byteString,opts){opts=opts||{};var strict=opts.strict!==!1;byteArray=ucs2decode(byteString),byteCount=byteArray.length,byteIndex=0;for(var codePoints=[],tmp;(tmp=decodeSymbol(strict))!==!1;)codePoints.push(tmp);return ucs2encode(codePoints)}module2.exports={version:"2.1.2",encode:utf8encode,decode:utf8decode}}});var require_parser_v3=__commonJS({"node_modules/engine.io/build/parser-v3/index.js"(exports2){"use strict";Object.defineProperty(exports2,"__esModule",{value:!0});exports2.packets=exports2.protocol=void 0;exports2.encodePacket=encodePacket;exports2.encodeBase64Packet=encodeBase64Packet;exports2.decodePacket=decodePacket;exports2.decodeBase64Packet=decodeBase64Packet;exports2.encodePayload=encodePayload;exports2.decodePayload=decodePayload;exports2.encodePayloadAsBinary=encodePayloadAsBinary;exports2.decodePayloadAsBinary=decodePayloadAsBinary;var utf8=require_utf8();exports2.protocol=3;var hasBinary=packets=>{for(let packet of packets)if(packet.data instanceof ArrayBuffer||ArrayBuffer.isView(packet.data))return!0;return!1};exports2.packets={open:0,close:1,ping:2,pong:3,message:4,upgrade:5,noop:6};var packetslist=Object.keys(exports2.packets),err={type:"error",data:"parser error"},EMPTY_BUFFER=Buffer.concat([]);function encodePacket(packet,supportsBinary,utf8encode,callback){if(typeof supportsBinary=="function"&&(callback=supportsBinary,supportsBinary=null),typeof utf8encode=="function"&&(callback=utf8encode,utf8encode=null),Buffer.isBuffer(packet.data))return encodeBuffer(packet,supportsBinary,callback);if(packet.data&&(packet.data.buffer||packet.data)instanceof ArrayBuffer)return encodeBuffer({type:packet.type,data:arrayBufferToBuffer(packet.data)},supportsBinary,callback);var encoded=exports2.packets[packet.type];return packet.data!==void 0&&(encoded+=utf8encode?utf8.encode(String(packet.data),{strict:!1}):String(packet.data)),callback(""+encoded)}function encodeBuffer(packet,supportsBinary,callback){if(!supportsBinary)return encodeBase64Packet(packet,callback);var data=packet.data,typeBuffer=Buffer.allocUnsafe(1);return typeBuffer[0]=exports2.packets[packet.type],callback(Buffer.concat([typeBuffer,data]))}function encodeBase64Packet(packet,callback){var data=Buffer.isBuffer(packet.data)?packet.data:arrayBufferToBuffer(packet.data),message="b"+exports2.packets[packet.type];return message+=data.toString("base64"),callback(message)}function decodePacket(data,binaryType,utf8decode){if(data===void 0)return err;let type;if(typeof data=="string")return type=data.charAt(0),type==="b"?decodeBase64Packet(data.slice(1),binaryType):utf8decode&&(data=tryDecode(data),data===!1)||Number(type)!=type||!packetslist[type]?err:data.length>1?{type:packetslist[type],data:data.slice(1)}:{type:packetslist[type]};if(binaryType==="arraybuffer"){var intArray=new Uint8Array(data);return type=intArray[0],{type:packetslist[type],data:intArray.buffer.slice(1)}}return data instanceof ArrayBuffer&&(data=arrayBufferToBuffer(data)),type=data[0],{type:packetslist[type],data:data.slice(1)}}function tryDecode(data){try{data=utf8.decode(data,{strict:!1})}catch{return!1}return data}function decodeBase64Packet(msg,binaryType){var type=packetslist[msg.charAt(0)],data=Buffer.from(msg.slice(1),"base64");if(binaryType==="arraybuffer"){for(var abv=new Uint8Array(data.length),i=0;i<abv.length;i++)abv[i]=data[i];data=abv.buffer}return{type,data}}function encodePayload(packets,supportsBinary,callback){if(typeof supportsBinary=="function"&&(callback=supportsBinary,supportsBinary=null),supportsBinary&&hasBinary(packets))return encodePayloadAsBinary(packets,callback);if(!packets.length)return callback("0:");function encodeOne(packet,doneCallback){encodePacket(packet,supportsBinary,!1,function(message){doneCallback(null,setLengthHeader(message))})}map(packets,encodeOne,function(err2,results){return callback(results.join(""))})}function setLengthHeader(message){return message.length+":"+message}function map(ary,each,done){let results=new Array(ary.length),count=0;for(let i=0;i<ary.length;i++)each(ary[i],(error,msg)=>{results[i]=msg,++count===ary.length&&done(null,results)})}function decodePayload(data,binaryType,callback){if(typeof data!="string")return decodePayloadAsBinary(data,binaryType,callback);if(typeof binaryType=="function"&&(callback=binaryType,binaryType=null),data==="")return callback(err,0,1);for(var length="",n,msg,packet,i=0,l=data.length;i<l;i++){var chr=data.charAt(i);if(chr!==":"){length+=chr;continue}if(length===""||length!=(n=Number(length))||(msg=data.slice(i+1,i+1+n),length!=msg.length))return callback(err,0,1);if(msg.length){if(packet=decodePacket(msg,binaryType,!1),err.type===packet.type&&err.data===packet.data)return callback(err,0,1);var more=callback(packet,i+n,l);if(more===!1)return}i+=n,length=""}if(length!=="")return callback(err,0,1)}function bufferToString(buffer){for(var str="",i=0,l=buffer.length;i<l;i++)str+=String.fromCharCode(buffer[i]);return str}function stringToBuffer(string){for(var buf=Buffer.allocUnsafe(string.length),i=0,l=string.length;i<l;i++)buf.writeUInt8(string.charCodeAt(i),i);return buf}function arrayBufferToBuffer(data){var length=data.byteLength||data.length,offset=data.byteOffset||0;return Buffer.from(data.buffer||data,offset,length)}function encodePayloadAsBinary(packets,callback){if(!packets.length)return callback(EMPTY_BUFFER);map(packets,encodeOneBinaryPacket,function(err2,results){return callback(Buffer.concat(results))})}function encodeOneBinaryPacket(p,doneCallback){function onBinaryPacketEncode(packet){var encodingLength=""+packet.length,sizeBuffer;if(typeof packet=="string"){sizeBuffer=Buffer.allocUnsafe(encodingLength.length+2),sizeBuffer[0]=0;for(var i=0;i<encodingLength.length;i++)sizeBuffer[i+1]=parseInt(encodingLength[i],10);return sizeBuffer[sizeBuffer.length-1]=255,doneCallback(null,Buffer.concat([sizeBuffer,stringToBuffer(packet)]))}sizeBuffer=Buffer.allocUnsafe(encodingLength.length+2),sizeBuffer[0]=1;for(var i=0;i<encodingLength.length;i++)sizeBuffer[i+1]=parseInt(encodingLength[i],10);sizeBuffer[sizeBuffer.length-1]=255,doneCallback(null,Buffer.concat([sizeBuffer,packet]))}encodePacket(p,!0,!0,onBinaryPacketEncode)}function decodePayloadAsBinary(data,binaryType,callback){typeof binaryType=="function"&&(callback=binaryType,binaryType=null);for(var bufferTail=data,buffers=[],i;bufferTail.length>0;){var strLen="",isString=bufferTail[0]===0;for(i=1;bufferTail[i]!==255;i++){if(strLen.length>310)return callback(err,0,1);strLen+=""+bufferTail[i]}bufferTail=bufferTail.slice(strLen.length+1);var msgLength=parseInt(strLen,10),msg=bufferTail.slice(1,msgLength+1);isString&&(msg=bufferToString(msg)),buffers.push(msg),bufferTail=bufferTail.slice(msgLength+1)}var total=buffers.length;for(i=0;i<total;i++){var buffer=buffers[i];callback(decodePacket(buffer,binaryType,!0),i,total)}}}});var require_common4=__commonJS({"node_modules/engine.io/node_modules/debug/src/common.js"(exports2,module2){function setup(env){createDebug.debug=createDebug,createDebug.default=createDebug,createDebug.coerce=coerce,createDebug.disable=disable,createDebug.enable=enable,createDebug.enabled=enabled,createDebug.humanize=require_ms5(),createDebug.destroy=destroy,Object.keys(env).forEach(key=>{createDebug[key]=env[key]}),createDebug.names=[],createDebug.skips=[],createDebug.formatters={};function selectColor(namespace){let hash=0;for(let i=0;i<namespace.length;i++)hash=(hash<<5)-hash+namespace.charCodeAt(i),hash|=0;return createDebug.colors[Math.abs(hash)%createDebug.colors.length]}createDebug.selectColor=selectColor;function createDebug(namespace){let prevTime,enableOverride=null,namespacesCache,enabledCache;function debug(...args){if(!debug.enabled)return;let self2=debug,curr=Number(new Date),ms=curr-(prevTime||curr);self2.diff=ms,self2.prev=prevTime,self2.curr=curr,prevTime=curr,args[0]=createDebug.coerce(args[0]),typeof args[0]!="string"&&args.unshift("%O");let index=0;args[0]=args[0].replace(/%([a-zA-Z%])/g,(match,format)=>{if(match==="%%")return"%";index++;let formatter=createDebug.formatters[format];if(typeof formatter=="function"){let val=args[index];match=formatter.call(self2,val),args.splice(index,1),index--}return match}),createDebug.formatArgs.call(self2,args),(self2.log||createDebug.log).apply(self2,args)}return debug.namespace=namespace,debug.useColors=createDebug.useColors(),debug.color=createDebug.selectColor(namespace),debug.extend=extend,debug.destroy=createDebug.destroy,Object.defineProperty(debug,"enabled",{enumerable:!0,configurable:!1,get:()=>enableOverride!==null?enableOverride:(namespacesCache!==createDebug.namespaces&&(namespacesCache=createDebug.namespaces,enabledCache=createDebug.enabled(namespace)),enabledCache),set:v=>{enableOverride=v}}),typeof createDebug.init=="function"&&createDebug.init(debug),debug}function extend(namespace,delimiter){let newDebug=createDebug(this.namespace+(typeof delimiter>"u"?":":delimiter)+namespace);return newDebug.log=this.log,newDebug}function enable(namespaces){createDebug.save(namespaces),createDebug.namespaces=namespaces,createDebug.names=[],createDebug.skips=[];let split=(typeof namespaces=="string"?namespaces:"").trim().replace(/\s+/g,",").split(",").filter(Boolean);for(let ns of split)ns[0]==="-"?createDebug.skips.push(ns.slice(1)):createDebug.names.push(ns)}function matchesTemplate(search,template){let searchIndex=0,templateIndex=0,starIndex=-1,matchIndex=0;for(;searchIndex<search.length;)if(templateIndex<template.length&&(template[templateIndex]===search[searchIndex]||template[templateIndex]==="*"))template[templateIndex]==="*"?(starIndex=templateIndex,matchIndex=searchIndex,templateIndex++):(searchIndex++,templateIndex++);else if(starIndex!==-1)templateIndex=starIndex+1,matchIndex++,searchIndex=matchIndex;else return!1;for(;templateIndex<template.length&&template[templateIndex]==="*";)templateIndex++;return templateIndex===template.length}function disable(){let namespaces=[...createDebug.names,...createDebug.skips.map(namespace=>"-"+namespace)].join(",");return createDebug.enable(""),namespaces}function enabled(name){for(let skip of createDebug.skips)if(matchesTemplate(name,skip))return!1;for(let ns of createDebug.names)if(matchesTemplate(name,ns))return!0;return!1}function coerce(val){return val instanceof Error?val.stack||val.message:val}function destroy(){console.warn("Instance method `debug.destroy()` is deprecated and no longer does anything. It will be removed in the next major version of `debug`.")}return createDebug.enable(createDebug.load()),createDebug}module2.exports=setup}});var require_browser7=__commonJS({"node_modules/engine.io/node_modules/debug/src/browser.js"(exports2,module2){exports2.formatArgs=formatArgs;exports2.save=save;exports2.load=load2;exports2.useColors=useColors;exports2.storage=localstorage();exports2.destroy=(()=>{let warned=!1;return()=>{warned||(warned=!0,console.warn("Instance method `debug.destroy()` is deprecated and no longer does anything. It will be removed in the next major version of `debug`."))}})();exports2.colors=["#0000CC","#0000FF","#0033CC","#0033FF","#0066CC","#0066FF","#0099CC","#0099FF","#00CC00","#00CC33","#00CC66","#00CC99","#00CCCC","#00CCFF","#3300CC","#3300FF","#3333CC","#3333FF","#3366CC","#3366FF","#3399CC","#3399FF","#33CC00","#33CC33","#33CC66","#33CC99","#33CCCC","#33CCFF","#6600CC","#6600FF","#6633CC","#6633FF","#66CC00","#66CC33","#9900CC","#9900FF","#9933CC","#9933FF","#99CC00","#99CC33","#CC0000","#CC0033","#CC0066","#CC0099","#CC00CC","#CC00FF","#CC3300","#CC3333","#CC3366","#CC3399","#CC33CC","#CC33FF","#CC6600","#CC6633","#CC9900","#CC9933","#CCCC00","#CCCC33","#FF0000","#FF0033","#FF0066","#FF0099","#FF00CC","#FF00FF","#FF3300","#FF3333","#FF3366","#FF3399","#FF33CC","#FF33FF","#FF6600","#FF6633","#FF9900","#FF9933","#FFCC00","#FFCC33"];function useColors(){if(typeof window<"u"&&window.process&&(window.process.type==="renderer"||window.process.__nwjs))return!0;if(typeof navigator<"u"&&navigator.userAgent&&navigator.userAgent.toLowerCase().match(/(edge|trident)\/(\d+)/))return!1;let m;return typeof document<"u"&&document.documentElement&&document.documentElement.style&&document.documentElement.style.WebkitAppearance||typeof window<"u"&&window.console&&(window.console.firebug||window.console.exception&&window.console.table)||typeof navigator<"u"&&navigator.userAgent&&(m=navigator.userAgent.toLowerCase().match(/firefox\/(\d+)/))&&parseInt(m[1],10)>=31||typeof navigator<"u"&&navigator.userAgent&&navigator.userAgent.toLowerCase().match(/applewebkit\/(\d+)/)}function formatArgs(args){if(args[0]=(this.useColors?"%c":"")+this.namespace+(this.useColors?" %c":" ")+args[0]+(this.useColors?"%c ":" ")+"+"+module2.exports.humanize(this.diff),!this.useColors)return;let c="color: "+this.color;args.splice(1,0,c,"color: inherit");let index=0,lastC=0;args[0].replace(/%[a-zA-Z%]/g,match=>{match!=="%%"&&(index++,match==="%c"&&(lastC=index))}),args.splice(lastC,0,c)}exports2.log=console.debug||console.log||(()=>{});function save(namespaces){try{namespaces?exports2.storage.setItem("debug",namespaces):exports2.storage.removeItem("debug")}catch{}}function load2(){let r;try{r=exports2.storage.getItem("debug")||exports2.storage.getItem("DEBUG")}catch{}return!r&&typeof process<"u"&&"env"in process&&(r=process.env.DEBUG),r}function localstorage(){try{return localStorage}catch{}}module2.exports=require_common4()(exports2);var{formatters}=module2.exports;formatters.j=function(v){try{return JSON.stringify(v)}catch(error){return"[UnexpectedJSONParseError]: "+error.message}}}});var require_node7=__commonJS({"node_modules/engine.io/node_modules/debug/src/node.js"(exports2,module2){var tty=require("tty"),util=require("util");exports2.init=init;exports2.log=log;exports2.formatArgs=formatArgs;exports2.save=save;exports2.load=load2;exports2.useColors=useColors;exports2.destroy=util.deprecate(()=>{},"Instance method `debug.destroy()` is deprecated and no longer does anything. It will be removed in the next major version of `debug`.");exports2.colors=[6,2,3,4,5,1];try{let supportsColor=require_supports_color();supportsColor&&(supportsColor.stderr||supportsColor).level>=2&&(exports2.colors=[20,21,26,27,32,33,38,39,40,41,42,43,44,45,56,57,62,63,68,69,74,75,76,77,78,79,80,81,92,93,98,99,112,113,128,129,134,135,148,149,160,161,162,163,164,165,166,167,168,169,170,171,172,173,178,179,184,185,196,197,198,199,200,201,202,203,204,205,206,207,208,209,214,215,220,221])}catch{}exports2.inspectOpts=Object.keys(process.env).filter(key=>/^debug_/i.test(key)).reduce((obj,key)=>{let prop=key.substring(6).toLowerCase().replace(/_([a-z])/g,(_,k)=>k.toUpperCase()),val=process.env[key];return/^(yes|on|true|enabled)$/i.test(val)?val=!0:/^(no|off|false|disabled)$/i.test(val)?val=!1:val==="null"?val=null:val=Number(val),obj[prop]=val,obj},{});function useColors(){return"colors"in exports2.inspectOpts?!!exports2.inspectOpts.colors:tty.isatty(process.stderr.fd)}function formatArgs(args){let{namespace:name,useColors:useColors2}=this;if(useColors2){let c=this.color,colorCode="\x1B[3"+(c<8?c:"8;5;"+c),prefix=` ${colorCode};1m${name} \x1B[0m`;args[0]=prefix+args[0].split(`
|
|
249
|
+
`};common.setupSocket(socket),head&&head.length&&socket.unshift(head);var proxyReq=(common.isSSL.test(options.target.protocol)?https:http).request(common.setupOutgoing(options.ssl||{},options,req));return server&&server.emit("proxyReqWs",proxyReq,req,socket,options,head),proxyReq.on("error",onOutgoingError),proxyReq.on("response",function(res){res.upgrade||(socket.write(createHttpHeader("HTTP/"+res.httpVersion+" "+res.statusCode+" "+res.statusMessage,res.headers)),res.pipe(socket))}),proxyReq.on("upgrade",function(proxyRes,proxySocket,proxyHead){proxySocket.on("error",onOutgoingError),proxySocket.on("end",function(){server.emit("close",proxyRes,proxySocket,proxyHead)}),socket.on("error",function(){proxySocket.end()}),common.setupSocket(proxySocket),proxyHead&&proxyHead.length&&proxySocket.unshift(proxyHead),socket.write(createHttpHeader("HTTP/1.1 101 Switching Protocols",proxyRes.headers)),proxySocket.pipe(socket).pipe(proxySocket),server.emit("open",proxySocket),server.emit("proxySocket",proxySocket)}),proxyReq.end();function onOutgoingError(err){clb?clb(err,req,socket):server.emit("error",err,req,socket),socket.end()}}}}});var require_http_proxy=__commonJS({"node_modules/http-proxy/lib/http-proxy/index.js"(exports2,module2){var httpProxy=module2.exports,extend=require("util")._extend,parse_url=require("url").parse,EE3=require_eventemitter3(),http=require("http"),https=require("https"),web=require_web_incoming(),ws=require_ws_incoming();httpProxy.Server=ProxyServer;function createRightProxy(type){return function(options){return function(req,res){var passes=type==="ws"?this.wsPasses:this.webPasses,args=[].slice.call(arguments),cntr=args.length-1,head,cbl;typeof args[cntr]=="function"&&(cbl=args[cntr],cntr--);var requestOptions=options;if(!(args[cntr]instanceof Buffer)&&args[cntr]!==res&&(requestOptions=extend({},options),extend(requestOptions,args[cntr]),cntr--),args[cntr]instanceof Buffer&&(head=args[cntr]),["target","forward"].forEach(function(e){typeof requestOptions[e]=="string"&&(requestOptions[e]=parse_url(requestOptions[e]))}),!requestOptions.target&&!requestOptions.forward)return this.emit("error",new Error("Must provide a proper URL as target"));for(var i=0;i<passes.length&&!passes[i](req,res,requestOptions,head,this,cbl);i++);}}}httpProxy.createRightProxy=createRightProxy;function ProxyServer(options){EE3.call(this),options=options||{},options.prependPath=options.prependPath!==!1,this.web=this.proxyRequest=createRightProxy("web")(options),this.ws=this.proxyWebsocketRequest=createRightProxy("ws")(options),this.options=options,this.webPasses=Object.keys(web).map(function(pass){return web[pass]}),this.wsPasses=Object.keys(ws).map(function(pass){return ws[pass]}),this.on("error",this.onError,this)}require("util").inherits(ProxyServer,EE3);ProxyServer.prototype.onError=function(err){if(this.listeners("error").length===1)throw err};ProxyServer.prototype.listen=function(port,hostname){var self2=this,closure=function(req,res){self2.web(req,res)};return this._server=this.options.ssl?https.createServer(this.options.ssl,closure):http.createServer(closure),this.options.ws&&this._server.on("upgrade",function(req,socket,head){self2.ws(req,socket,head)}),this._server.listen(port,hostname),this};ProxyServer.prototype.close=function(callback){var self2=this;this._server&&this._server.close(done);function done(){self2._server=null,callback&&callback.apply(null,arguments)}};ProxyServer.prototype.before=function(type,passName,callback){if(type!=="ws"&&type!=="web")throw new Error("type must be `web` or `ws`");var passes=type==="ws"?this.wsPasses:this.webPasses,i=!1;if(passes.forEach(function(v,idx){v.name===passName&&(i=idx)}),i===!1)throw new Error("No such pass");passes.splice(i,0,callback)};ProxyServer.prototype.after=function(type,passName,callback){if(type!=="ws"&&type!=="web")throw new Error("type must be `web` or `ws`");var passes=type==="ws"?this.wsPasses:this.webPasses,i=!1;if(passes.forEach(function(v,idx){v.name===passName&&(i=idx)}),i===!1)throw new Error("No such pass");passes.splice(i++,0,callback)}}});var require_http_proxy2=__commonJS({"node_modules/http-proxy/lib/http-proxy.js"(exports2,module2){var ProxyServer=require_http_proxy().Server;function createProxyServer(options){return new ProxyServer(options)}ProxyServer.createProxyServer=createProxyServer;ProxyServer.createServer=createProxyServer;ProxyServer.createProxy=createProxyServer;module2.exports=ProxyServer}});var require_http_proxy3=__commonJS({"node_modules/http-proxy/index.js"(exports2,module2){module2.exports=require_http_proxy2()}});var require_is_plain_obj=__commonJS({"node_modules/http-proxy-middleware/node_modules/is-plain-obj/index.js"(exports2,module2){"use strict";module2.exports=value=>{if(Object.prototype.toString.call(value)!=="[object Object]")return!1;let prototype=Object.getPrototypeOf(value);return prototype===null||prototype===Object.prototype}}});var require_errors3=__commonJS({"node_modules/http-proxy-middleware/dist/errors.js"(exports2){"use strict";Object.defineProperty(exports2,"__esModule",{value:!0});exports2.ERRORS=void 0;var ERRORS;(function(ERRORS2){ERRORS2.ERR_CONFIG_FACTORY_TARGET_MISSING='[HPM] Missing "target" option. Example: {target: "http://www.example.org"}',ERRORS2.ERR_CONTEXT_MATCHER_GENERIC='[HPM] Invalid context. Expecting something like: "/api" or ["/api", "/ajax"]',ERRORS2.ERR_CONTEXT_MATCHER_INVALID_ARRAY='[HPM] Invalid context. Expecting something like: ["/api", "/ajax"] or ["/api/**", "!**.html"]',ERRORS2.ERR_PATH_REWRITER_CONFIG="[HPM] Invalid pathRewrite config. Expecting object with pathRewrite config or a rewrite function"})(ERRORS=exports2.ERRORS||(exports2.ERRORS={}))}});var require_logger=__commonJS({"node_modules/http-proxy-middleware/dist/logger.js"(exports2){"use strict";Object.defineProperty(exports2,"__esModule",{value:!0});exports2.getArrow=exports2.getInstance=void 0;var util=require("util"),loggerInstance,defaultProvider={log:console.log,debug:console.log,info:console.info,warn:console.warn,error:console.error},LEVELS;(function(LEVELS2){LEVELS2[LEVELS2.debug=10]="debug",LEVELS2[LEVELS2.info=20]="info",LEVELS2[LEVELS2.warn=30]="warn",LEVELS2[LEVELS2.error=50]="error",LEVELS2[LEVELS2.silent=80]="silent"})(LEVELS||(LEVELS={}));function getInstance(){return loggerInstance||(loggerInstance=new Logger),loggerInstance}exports2.getInstance=getInstance;var Logger=class{constructor(){this.setLevel("info"),this.setProvider(()=>defaultProvider)}log(){this.provider.log(this._interpolate.apply(null,arguments))}debug(){this._showLevel("debug")&&this.provider.debug(this._interpolate.apply(null,arguments))}info(){this._showLevel("info")&&this.provider.info(this._interpolate.apply(null,arguments))}warn(){this._showLevel("warn")&&this.provider.warn(this._interpolate.apply(null,arguments))}error(){this._showLevel("error")&&this.provider.error(this._interpolate.apply(null,arguments))}setLevel(v){this.isValidLevel(v)&&(this.logLevel=v)}setProvider(fn){fn&&this.isValidProvider(fn)&&(this.provider=fn(defaultProvider))}isValidProvider(fnProvider){if(fnProvider&&typeof fnProvider!="function")throw new Error("[HPM] Log provider config error. Expecting a function.");return!0}isValidLevel(levelName){let isValid=Object.keys(LEVELS).includes(levelName);if(!isValid)throw new Error("[HPM] Log level error. Invalid logLevel.");return isValid}_showLevel(showLevel){let result=!1,currentLogLevel=LEVELS[this.logLevel];return currentLogLevel&¤tLogLevel<=LEVELS[showLevel]&&(result=!0),result}_interpolate(format,...args){return util.format(format,...args)}};function getArrow(originalPath,newPath,originalTarget,newTarget){let arrow=[">"],isNewTarget=originalTarget!==newTarget,isNewPath=originalPath!==newPath;return isNewPath&&!isNewTarget?arrow.unshift("~"):!isNewPath&&isNewTarget?arrow.unshift("="):isNewPath&&isNewTarget?arrow.unshift("\u2248"):arrow.unshift("-"),arrow.join("")}exports2.getArrow=getArrow}});var require_config_factory=__commonJS({"node_modules/http-proxy-middleware/dist/config-factory.js"(exports2){"use strict";Object.defineProperty(exports2,"__esModule",{value:!0});exports2.createConfig=void 0;var isPlainObj=require_is_plain_obj(),url=require("url"),errors_1=require_errors3(),logger_1=require_logger(),logger=(0,logger_1.getInstance)();function createConfig(context,opts){let config={context:void 0,options:{}};if(isContextless(context,opts))config.context="/",config.options=Object.assign(config.options,context);else if(isStringShortHand(context)){let oUrl=url.parse(context),target=[oUrl.protocol,"//",oUrl.host].join("");config.context=oUrl.pathname||"/",config.options=Object.assign(config.options,{target},opts),(oUrl.protocol==="ws:"||oUrl.protocol==="wss:")&&(config.options.ws=!0)}else config.context=context,config.options=Object.assign(config.options,opts);if(configureLogger(config.options),!config.options.target&&!config.options.router)throw new Error(errors_1.ERRORS.ERR_CONFIG_FACTORY_TARGET_MISSING);return config}exports2.createConfig=createConfig;function isStringShortHand(context){if(typeof context=="string")return!!url.parse(context).host}function isContextless(context,opts){return isPlainObj(context)&&(opts==null||Object.keys(opts).length===0)}function configureLogger(options){options.logLevel&&logger.setLevel(options.logLevel),options.logProvider&&logger.setProvider(options.logProvider)}}});var require_is_extglob=__commonJS({"node_modules/is-extglob/index.js"(exports2,module2){module2.exports=function(str){if(typeof str!="string"||str==="")return!1;for(var match;match=/(\\).|([@?!+*]\(.*\))/g.exec(str);){if(match[2])return!0;str=str.slice(match.index+match[0].length)}return!1}}});var require_is_glob=__commonJS({"node_modules/is-glob/index.js"(exports2,module2){var isExtglob=require_is_extglob(),chars={"{":"}","(":")","[":"]"},strictCheck=function(str){if(str[0]==="!")return!0;for(var index=0,pipeIndex=-2,closeSquareIndex=-2,closeCurlyIndex=-2,closeParenIndex=-2,backSlashIndex=-2;index<str.length;){if(str[index]==="*"||str[index+1]==="?"&&/[\].+)]/.test(str[index])||closeSquareIndex!==-1&&str[index]==="["&&str[index+1]!=="]"&&(closeSquareIndex<index&&(closeSquareIndex=str.indexOf("]",index)),closeSquareIndex>index&&(backSlashIndex===-1||backSlashIndex>closeSquareIndex||(backSlashIndex=str.indexOf("\\",index),backSlashIndex===-1||backSlashIndex>closeSquareIndex)))||closeCurlyIndex!==-1&&str[index]==="{"&&str[index+1]!=="}"&&(closeCurlyIndex=str.indexOf("}",index),closeCurlyIndex>index&&(backSlashIndex=str.indexOf("\\",index),backSlashIndex===-1||backSlashIndex>closeCurlyIndex))||closeParenIndex!==-1&&str[index]==="("&&str[index+1]==="?"&&/[:!=]/.test(str[index+2])&&str[index+3]!==")"&&(closeParenIndex=str.indexOf(")",index),closeParenIndex>index&&(backSlashIndex=str.indexOf("\\",index),backSlashIndex===-1||backSlashIndex>closeParenIndex))||pipeIndex!==-1&&str[index]==="("&&str[index+1]!=="|"&&(pipeIndex<index&&(pipeIndex=str.indexOf("|",index)),pipeIndex!==-1&&str[pipeIndex+1]!==")"&&(closeParenIndex=str.indexOf(")",pipeIndex),closeParenIndex>pipeIndex&&(backSlashIndex=str.indexOf("\\",pipeIndex),backSlashIndex===-1||backSlashIndex>closeParenIndex))))return!0;if(str[index]==="\\"){var open=str[index+1];index+=2;var close=chars[open];if(close){var n=str.indexOf(close,index);n!==-1&&(index=n+1)}if(str[index]==="!")return!0}else index++}return!1},relaxedCheck=function(str){if(str[0]==="!")return!0;for(var index=0;index<str.length;){if(/[*?{}()[\]]/.test(str[index]))return!0;if(str[index]==="\\"){var open=str[index+1];index+=2;var close=chars[open];if(close){var n=str.indexOf(close,index);n!==-1&&(index=n+1)}if(str[index]==="!")return!0}else index++}return!1};module2.exports=function(str,options){if(typeof str!="string"||str==="")return!1;if(isExtglob(str))return!0;var check=strictCheck;return options&&options.strict===!1&&(check=relaxedCheck),check(str)}}});var require_utils7=__commonJS({"node_modules/braces/lib/utils.js"(exports2){"use strict";exports2.isInteger=num=>typeof num=="number"?Number.isInteger(num):typeof num=="string"&&num.trim()!==""?Number.isInteger(Number(num)):!1;exports2.find=(node,type)=>node.nodes.find(node2=>node2.type===type);exports2.exceedsLimit=(min,max,step=1,limit)=>limit===!1||!exports2.isInteger(min)||!exports2.isInteger(max)?!1:(Number(max)-Number(min))/Number(step)>=limit;exports2.escapeNode=(block,n=0,type)=>{let node=block.nodes[n];node&&(type&&node.type===type||node.type==="open"||node.type==="close")&&node.escaped!==!0&&(node.value="\\"+node.value,node.escaped=!0)};exports2.encloseBrace=node=>node.type!=="brace"?!1:node.commas>>0+node.ranges>>0===0?(node.invalid=!0,!0):!1;exports2.isInvalidBrace=block=>block.type!=="brace"?!1:block.invalid===!0||block.dollar?!0:block.commas>>0+block.ranges>>0===0||block.open!==!0||block.close!==!0?(block.invalid=!0,!0):!1;exports2.isOpenOrClose=node=>node.type==="open"||node.type==="close"?!0:node.open===!0||node.close===!0;exports2.reduce=nodes=>nodes.reduce((acc,node)=>(node.type==="text"&&acc.push(node.value),node.type==="range"&&(node.type="text"),acc),[]);exports2.flatten=(...args)=>{let result=[],flat=arr=>{for(let i=0;i<arr.length;i++){let ele=arr[i];if(Array.isArray(ele)){flat(ele);continue}ele!==void 0&&result.push(ele)}return result};return flat(args),result}}});var require_stringify3=__commonJS({"node_modules/braces/lib/stringify.js"(exports2,module2){"use strict";var utils=require_utils7();module2.exports=(ast,options={})=>{let stringify=(node,parent={})=>{let invalidBlock=options.escapeInvalid&&utils.isInvalidBrace(parent),invalidNode=node.invalid===!0&&options.escapeInvalid===!0,output="";if(node.value)return(invalidBlock||invalidNode)&&utils.isOpenOrClose(node)?"\\"+node.value:node.value;if(node.value)return node.value;if(node.nodes)for(let child of node.nodes)output+=stringify(child);return output};return stringify(ast)}}});var require_is_number=__commonJS({"node_modules/is-number/index.js"(exports2,module2){"use strict";module2.exports=function(num){return typeof num=="number"?num-num===0:typeof num=="string"&&num.trim()!==""?Number.isFinite?Number.isFinite(+num):isFinite(+num):!1}}});var require_to_regex_range=__commonJS({"node_modules/to-regex-range/index.js"(exports2,module2){"use strict";var isNumber=require_is_number(),toRegexRange=(min,max,options)=>{if(isNumber(min)===!1)throw new TypeError("toRegexRange: expected the first argument to be a number");if(max===void 0||min===max)return String(min);if(isNumber(max)===!1)throw new TypeError("toRegexRange: expected the second argument to be a number.");let opts={relaxZeros:!0,...options};typeof opts.strictZeros=="boolean"&&(opts.relaxZeros=opts.strictZeros===!1);let relax=String(opts.relaxZeros),shorthand=String(opts.shorthand),capture=String(opts.capture),wrap=String(opts.wrap),cacheKey=min+":"+max+"="+relax+shorthand+capture+wrap;if(toRegexRange.cache.hasOwnProperty(cacheKey))return toRegexRange.cache[cacheKey].result;let a=Math.min(min,max),b=Math.max(min,max);if(Math.abs(a-b)===1){let result=min+"|"+max;return opts.capture?`(${result})`:opts.wrap===!1?result:`(?:${result})`}let isPadded=hasPadding(min)||hasPadding(max),state={min,max,a,b},positives=[],negatives=[];if(isPadded&&(state.isPadded=isPadded,state.maxLen=String(state.max).length),a<0){let newMin=b<0?Math.abs(b):1;negatives=splitToPatterns(newMin,Math.abs(a),state,opts),a=state.a=0}return b>=0&&(positives=splitToPatterns(a,b,state,opts)),state.negatives=negatives,state.positives=positives,state.result=collatePatterns(negatives,positives,opts),opts.capture===!0?state.result=`(${state.result})`:opts.wrap!==!1&&positives.length+negatives.length>1&&(state.result=`(?:${state.result})`),toRegexRange.cache[cacheKey]=state,state.result};function collatePatterns(neg,pos,options){let onlyNegative=filterPatterns(neg,pos,"-",!1,options)||[],onlyPositive=filterPatterns(pos,neg,"",!1,options)||[],intersected=filterPatterns(neg,pos,"-?",!0,options)||[];return onlyNegative.concat(intersected).concat(onlyPositive).join("|")}function splitToRanges(min,max){let nines=1,zeros=1,stop=countNines(min,nines),stops=new Set([max]);for(;min<=stop&&stop<=max;)stops.add(stop),nines+=1,stop=countNines(min,nines);for(stop=countZeros(max+1,zeros)-1;min<stop&&stop<=max;)stops.add(stop),zeros+=1,stop=countZeros(max+1,zeros)-1;return stops=[...stops],stops.sort(compare),stops}function rangeToPattern(start,stop,options){if(start===stop)return{pattern:start,count:[],digits:0};let zipped=zip(start,stop),digits=zipped.length,pattern="",count=0;for(let i=0;i<digits;i++){let[startDigit,stopDigit]=zipped[i];startDigit===stopDigit?pattern+=startDigit:startDigit!=="0"||stopDigit!=="9"?pattern+=toCharacterClass(startDigit,stopDigit,options):count++}return count&&(pattern+=options.shorthand===!0?"\\d":"[0-9]"),{pattern,count:[count],digits}}function splitToPatterns(min,max,tok,options){let ranges=splitToRanges(min,max),tokens=[],start=min,prev;for(let i=0;i<ranges.length;i++){let max2=ranges[i],obj=rangeToPattern(String(start),String(max2),options),zeros="";if(!tok.isPadded&&prev&&prev.pattern===obj.pattern){prev.count.length>1&&prev.count.pop(),prev.count.push(obj.count[0]),prev.string=prev.pattern+toQuantifier(prev.count),start=max2+1;continue}tok.isPadded&&(zeros=padZeros(max2,tok,options)),obj.string=zeros+obj.pattern+toQuantifier(obj.count),tokens.push(obj),start=max2+1,prev=obj}return tokens}function filterPatterns(arr,comparison,prefix,intersection,options){let result=[];for(let ele of arr){let{string}=ele;!intersection&&!contains(comparison,"string",string)&&result.push(prefix+string),intersection&&contains(comparison,"string",string)&&result.push(prefix+string)}return result}function zip(a,b){let arr=[];for(let i=0;i<a.length;i++)arr.push([a[i],b[i]]);return arr}function compare(a,b){return a>b?1:b>a?-1:0}function contains(arr,key,val){return arr.some(ele=>ele[key]===val)}function countNines(min,len){return Number(String(min).slice(0,-len)+"9".repeat(len))}function countZeros(integer,zeros){return integer-integer%Math.pow(10,zeros)}function toQuantifier(digits){let[start=0,stop=""]=digits;return stop||start>1?`{${start+(stop?","+stop:"")}}`:""}function toCharacterClass(a,b,options){return`[${a}${b-a===1?"":"-"}${b}]`}function hasPadding(str){return/^-?(0+)\d/.test(str)}function padZeros(value,tok,options){if(!tok.isPadded)return value;let diff=Math.abs(tok.maxLen-String(value).length),relax=options.relaxZeros!==!1;switch(diff){case 0:return"";case 1:return relax?"0?":"0";case 2:return relax?"0{0,2}":"00";default:return relax?`0{0,${diff}}`:`0{${diff}}`}}toRegexRange.cache={};toRegexRange.clearCache=()=>toRegexRange.cache={};module2.exports=toRegexRange}});var require_fill_range=__commonJS({"node_modules/fill-range/index.js"(exports2,module2){"use strict";var util=require("util"),toRegexRange=require_to_regex_range(),isObject=val=>val!==null&&typeof val=="object"&&!Array.isArray(val),transform=toNumber=>value=>toNumber===!0?Number(value):String(value),isValidValue=value=>typeof value=="number"||typeof value=="string"&&value!=="",isNumber=num=>Number.isInteger(+num),zeros=input=>{let value=`${input}`,index=-1;if(value[0]==="-"&&(value=value.slice(1)),value==="0")return!1;for(;value[++index]==="0";);return index>0},stringify=(start,end,options)=>typeof start=="string"||typeof end=="string"?!0:options.stringify===!0,pad=(input,maxLength,toNumber)=>{if(maxLength>0){let dash=input[0]==="-"?"-":"";dash&&(input=input.slice(1)),input=dash+input.padStart(dash?maxLength-1:maxLength,"0")}return toNumber===!1?String(input):input},toMaxLen=(input,maxLength)=>{let negative=input[0]==="-"?"-":"";for(negative&&(input=input.slice(1),maxLength--);input.length<maxLength;)input="0"+input;return negative?"-"+input:input},toSequence=(parts,options,maxLen)=>{parts.negatives.sort((a,b)=>a<b?-1:a>b?1:0),parts.positives.sort((a,b)=>a<b?-1:a>b?1:0);let prefix=options.capture?"":"?:",positives="",negatives="",result;return parts.positives.length&&(positives=parts.positives.map(v=>toMaxLen(String(v),maxLen)).join("|")),parts.negatives.length&&(negatives=`-(${prefix}${parts.negatives.map(v=>toMaxLen(String(v),maxLen)).join("|")})`),positives&&negatives?result=`${positives}|${negatives}`:result=positives||negatives,options.wrap?`(${prefix}${result})`:result},toRange=(a,b,isNumbers,options)=>{if(isNumbers)return toRegexRange(a,b,{wrap:!1,...options});let start=String.fromCharCode(a);if(a===b)return start;let stop=String.fromCharCode(b);return`[${start}-${stop}]`},toRegex=(start,end,options)=>{if(Array.isArray(start)){let wrap=options.wrap===!0,prefix=options.capture?"":"?:";return wrap?`(${prefix}${start.join("|")})`:start.join("|")}return toRegexRange(start,end,options)},rangeError=(...args)=>new RangeError("Invalid range arguments: "+util.inspect(...args)),invalidRange=(start,end,options)=>{if(options.strictRanges===!0)throw rangeError([start,end]);return[]},invalidStep=(step,options)=>{if(options.strictRanges===!0)throw new TypeError(`Expected step "${step}" to be a number`);return[]},fillNumbers=(start,end,step=1,options={})=>{let a=Number(start),b=Number(end);if(!Number.isInteger(a)||!Number.isInteger(b)){if(options.strictRanges===!0)throw rangeError([start,end]);return[]}a===0&&(a=0),b===0&&(b=0);let descending=a>b,startString=String(start),endString=String(end),stepString=String(step);step=Math.max(Math.abs(step),1);let padded=zeros(startString)||zeros(endString)||zeros(stepString),maxLen=padded?Math.max(startString.length,endString.length,stepString.length):0,toNumber=padded===!1&&stringify(start,end,options)===!1,format=options.transform||transform(toNumber);if(options.toRegex&&step===1)return toRange(toMaxLen(start,maxLen),toMaxLen(end,maxLen),!0,options);let parts={negatives:[],positives:[]},push=num=>parts[num<0?"negatives":"positives"].push(Math.abs(num)),range=[],index=0;for(;descending?a>=b:a<=b;)options.toRegex===!0&&step>1?push(a):range.push(pad(format(a,index),maxLen,toNumber)),a=descending?a-step:a+step,index++;return options.toRegex===!0?step>1?toSequence(parts,options,maxLen):toRegex(range,null,{wrap:!1,...options}):range},fillLetters=(start,end,step=1,options={})=>{if(!isNumber(start)&&start.length>1||!isNumber(end)&&end.length>1)return invalidRange(start,end,options);let format=options.transform||(val=>String.fromCharCode(val)),a=`${start}`.charCodeAt(0),b=`${end}`.charCodeAt(0),descending=a>b,min=Math.min(a,b),max=Math.max(a,b);if(options.toRegex&&step===1)return toRange(min,max,!1,options);let range=[],index=0;for(;descending?a>=b:a<=b;)range.push(format(a,index)),a=descending?a-step:a+step,index++;return options.toRegex===!0?toRegex(range,null,{wrap:!1,options}):range},fill=(start,end,step,options={})=>{if(end==null&&isValidValue(start))return[start];if(!isValidValue(start)||!isValidValue(end))return invalidRange(start,end,options);if(typeof step=="function")return fill(start,end,1,{transform:step});if(isObject(step))return fill(start,end,0,step);let opts={...options};return opts.capture===!0&&(opts.wrap=!0),step=step||opts.step||1,isNumber(step)?isNumber(start)&&isNumber(end)?fillNumbers(start,end,step,opts):fillLetters(start,end,Math.max(Math.abs(step),1),opts):step!=null&&!isObject(step)?invalidStep(step,opts):fill(start,end,1,step)};module2.exports=fill}});var require_compile=__commonJS({"node_modules/braces/lib/compile.js"(exports2,module2){"use strict";var fill=require_fill_range(),utils=require_utils7(),compile=(ast,options={})=>{let walk=(node,parent={})=>{let invalidBlock=utils.isInvalidBrace(parent),invalidNode=node.invalid===!0&&options.escapeInvalid===!0,invalid=invalidBlock===!0||invalidNode===!0,prefix=options.escapeInvalid===!0?"\\":"",output="";if(node.isOpen===!0)return prefix+node.value;if(node.isClose===!0)return console.log("node.isClose",prefix,node.value),prefix+node.value;if(node.type==="open")return invalid?prefix+node.value:"(";if(node.type==="close")return invalid?prefix+node.value:")";if(node.type==="comma")return node.prev.type==="comma"?"":invalid?node.value:"|";if(node.value)return node.value;if(node.nodes&&node.ranges>0){let args=utils.reduce(node.nodes),range=fill(...args,{...options,wrap:!1,toRegex:!0,strictZeros:!0});if(range.length!==0)return args.length>1&&range.length>1?`(${range})`:range}if(node.nodes)for(let child of node.nodes)output+=walk(child,node);return output};return walk(ast)};module2.exports=compile}});var require_expand=__commonJS({"node_modules/braces/lib/expand.js"(exports2,module2){"use strict";var fill=require_fill_range(),stringify=require_stringify3(),utils=require_utils7(),append=(queue="",stash="",enclose=!1)=>{let result=[];if(queue=[].concat(queue),stash=[].concat(stash),!stash.length)return queue;if(!queue.length)return enclose?utils.flatten(stash).map(ele=>`{${ele}}`):stash;for(let item of queue)if(Array.isArray(item))for(let value of item)result.push(append(value,stash,enclose));else for(let ele of stash)enclose===!0&&typeof ele=="string"&&(ele=`{${ele}}`),result.push(Array.isArray(ele)?append(item,ele,enclose):item+ele);return utils.flatten(result)},expand=(ast,options={})=>{let rangeLimit=options.rangeLimit===void 0?1e3:options.rangeLimit,walk=(node,parent={})=>{node.queue=[];let p=parent,q=parent.queue;for(;p.type!=="brace"&&p.type!=="root"&&p.parent;)p=p.parent,q=p.queue;if(node.invalid||node.dollar){q.push(append(q.pop(),stringify(node,options)));return}if(node.type==="brace"&&node.invalid!==!0&&node.nodes.length===2){q.push(append(q.pop(),["{}"]));return}if(node.nodes&&node.ranges>0){let args=utils.reduce(node.nodes);if(utils.exceedsLimit(...args,options.step,rangeLimit))throw new RangeError("expanded array length exceeds range limit. Use options.rangeLimit to increase or disable the limit.");let range=fill(...args,options);range.length===0&&(range=stringify(node,options)),q.push(append(q.pop(),range)),node.nodes=[];return}let enclose=utils.encloseBrace(node),queue=node.queue,block=node;for(;block.type!=="brace"&&block.type!=="root"&&block.parent;)block=block.parent,queue=block.queue;for(let i=0;i<node.nodes.length;i++){let child=node.nodes[i];if(child.type==="comma"&&node.type==="brace"){i===1&&queue.push(""),queue.push("");continue}if(child.type==="close"){q.push(append(q.pop(),queue,enclose));continue}if(child.value&&child.type!=="open"){queue.push(append(queue.pop(),child.value));continue}child.nodes&&walk(child,node)}return queue};return utils.flatten(walk(ast))};module2.exports=expand}});var require_constants3=__commonJS({"node_modules/braces/lib/constants.js"(exports2,module2){"use strict";module2.exports={MAX_LENGTH:1e4,CHAR_0:"0",CHAR_9:"9",CHAR_UPPERCASE_A:"A",CHAR_LOWERCASE_A:"a",CHAR_UPPERCASE_Z:"Z",CHAR_LOWERCASE_Z:"z",CHAR_LEFT_PARENTHESES:"(",CHAR_RIGHT_PARENTHESES:")",CHAR_ASTERISK:"*",CHAR_AMPERSAND:"&",CHAR_AT:"@",CHAR_BACKSLASH:"\\",CHAR_BACKTICK:"`",CHAR_CARRIAGE_RETURN:"\r",CHAR_CIRCUMFLEX_ACCENT:"^",CHAR_COLON:":",CHAR_COMMA:",",CHAR_DOLLAR:"$",CHAR_DOT:".",CHAR_DOUBLE_QUOTE:'"',CHAR_EQUAL:"=",CHAR_EXCLAMATION_MARK:"!",CHAR_FORM_FEED:"\f",CHAR_FORWARD_SLASH:"/",CHAR_HASH:"#",CHAR_HYPHEN_MINUS:"-",CHAR_LEFT_ANGLE_BRACKET:"<",CHAR_LEFT_CURLY_BRACE:"{",CHAR_LEFT_SQUARE_BRACKET:"[",CHAR_LINE_FEED:`
|
|
250
|
+
`,CHAR_NO_BREAK_SPACE:"\xA0",CHAR_PERCENT:"%",CHAR_PLUS:"+",CHAR_QUESTION_MARK:"?",CHAR_RIGHT_ANGLE_BRACKET:">",CHAR_RIGHT_CURLY_BRACE:"}",CHAR_RIGHT_SQUARE_BRACKET:"]",CHAR_SEMICOLON:";",CHAR_SINGLE_QUOTE:"'",CHAR_SPACE:" ",CHAR_TAB:" ",CHAR_UNDERSCORE:"_",CHAR_VERTICAL_LINE:"|",CHAR_ZERO_WIDTH_NOBREAK_SPACE:"\uFEFF"}}});var require_parse2=__commonJS({"node_modules/braces/lib/parse.js"(exports2,module2){"use strict";var stringify=require_stringify3(),{MAX_LENGTH,CHAR_BACKSLASH,CHAR_BACKTICK,CHAR_COMMA,CHAR_DOT,CHAR_LEFT_PARENTHESES,CHAR_RIGHT_PARENTHESES,CHAR_LEFT_CURLY_BRACE,CHAR_RIGHT_CURLY_BRACE,CHAR_LEFT_SQUARE_BRACKET,CHAR_RIGHT_SQUARE_BRACKET,CHAR_DOUBLE_QUOTE,CHAR_SINGLE_QUOTE,CHAR_NO_BREAK_SPACE,CHAR_ZERO_WIDTH_NOBREAK_SPACE}=require_constants3(),parse=(input,options={})=>{if(typeof input!="string")throw new TypeError("Expected a string");let opts=options||{},max=typeof opts.maxLength=="number"?Math.min(MAX_LENGTH,opts.maxLength):MAX_LENGTH;if(input.length>max)throw new SyntaxError(`Input length (${input.length}), exceeds max characters (${max})`);let ast={type:"root",input,nodes:[]},stack=[ast],block=ast,prev=ast,brackets=0,length=input.length,index=0,depth=0,value,advance=()=>input[index++],push=node=>{if(node.type==="text"&&prev.type==="dot"&&(prev.type="text"),prev&&prev.type==="text"&&node.type==="text"){prev.value+=node.value;return}return block.nodes.push(node),node.parent=block,node.prev=prev,prev=node,node};for(push({type:"bos"});index<length;)if(block=stack[stack.length-1],value=advance(),!(value===CHAR_ZERO_WIDTH_NOBREAK_SPACE||value===CHAR_NO_BREAK_SPACE)){if(value===CHAR_BACKSLASH){push({type:"text",value:(options.keepEscaping?value:"")+advance()});continue}if(value===CHAR_RIGHT_SQUARE_BRACKET){push({type:"text",value:"\\"+value});continue}if(value===CHAR_LEFT_SQUARE_BRACKET){brackets++;let next;for(;index<length&&(next=advance());){if(value+=next,next===CHAR_LEFT_SQUARE_BRACKET){brackets++;continue}if(next===CHAR_BACKSLASH){value+=advance();continue}if(next===CHAR_RIGHT_SQUARE_BRACKET&&(brackets--,brackets===0))break}push({type:"text",value});continue}if(value===CHAR_LEFT_PARENTHESES){block=push({type:"paren",nodes:[]}),stack.push(block),push({type:"text",value});continue}if(value===CHAR_RIGHT_PARENTHESES){if(block.type!=="paren"){push({type:"text",value});continue}block=stack.pop(),push({type:"text",value}),block=stack[stack.length-1];continue}if(value===CHAR_DOUBLE_QUOTE||value===CHAR_SINGLE_QUOTE||value===CHAR_BACKTICK){let open=value,next;for(options.keepQuotes!==!0&&(value="");index<length&&(next=advance());){if(next===CHAR_BACKSLASH){value+=next+advance();continue}if(next===open){options.keepQuotes===!0&&(value+=next);break}value+=next}push({type:"text",value});continue}if(value===CHAR_LEFT_CURLY_BRACE){depth++;let brace={type:"brace",open:!0,close:!1,dollar:prev.value&&prev.value.slice(-1)==="$"||block.dollar===!0,depth,commas:0,ranges:0,nodes:[]};block=push(brace),stack.push(block),push({type:"open",value});continue}if(value===CHAR_RIGHT_CURLY_BRACE){if(block.type!=="brace"){push({type:"text",value});continue}let type="close";block=stack.pop(),block.close=!0,push({type,value}),depth--,block=stack[stack.length-1];continue}if(value===CHAR_COMMA&&depth>0){if(block.ranges>0){block.ranges=0;let open=block.nodes.shift();block.nodes=[open,{type:"text",value:stringify(block)}]}push({type:"comma",value}),block.commas++;continue}if(value===CHAR_DOT&&depth>0&&block.commas===0){let siblings=block.nodes;if(depth===0||siblings.length===0){push({type:"text",value});continue}if(prev.type==="dot"){if(block.range=[],prev.value+=value,prev.type="range",block.nodes.length!==3&&block.nodes.length!==5){block.invalid=!0,block.ranges=0,prev.type="text";continue}block.ranges++,block.args=[];continue}if(prev.type==="range"){siblings.pop();let before=siblings[siblings.length-1];before.value+=prev.value+value,prev=before,block.ranges--;continue}push({type:"dot",value});continue}push({type:"text",value})}do if(block=stack.pop(),block.type!=="root"){block.nodes.forEach(node=>{node.nodes||(node.type==="open"&&(node.isOpen=!0),node.type==="close"&&(node.isClose=!0),node.nodes||(node.type="text"),node.invalid=!0)});let parent=stack[stack.length-1],index2=parent.nodes.indexOf(block);parent.nodes.splice(index2,1,...block.nodes)}while(stack.length>0);return push({type:"eos"}),ast};module2.exports=parse}});var require_braces=__commonJS({"node_modules/braces/index.js"(exports2,module2){"use strict";var stringify=require_stringify3(),compile=require_compile(),expand=require_expand(),parse=require_parse2(),braces=(input,options={})=>{let output=[];if(Array.isArray(input))for(let pattern of input){let result=braces.create(pattern,options);Array.isArray(result)?output.push(...result):output.push(result)}else output=[].concat(braces.create(input,options));return options&&options.expand===!0&&options.nodupes===!0&&(output=[...new Set(output)]),output};braces.parse=(input,options={})=>parse(input,options);braces.stringify=(input,options={})=>stringify(typeof input=="string"?braces.parse(input,options):input,options);braces.compile=(input,options={})=>(typeof input=="string"&&(input=braces.parse(input,options)),compile(input,options));braces.expand=(input,options={})=>{typeof input=="string"&&(input=braces.parse(input,options));let result=expand(input,options);return options.noempty===!0&&(result=result.filter(Boolean)),options.nodupes===!0&&(result=[...new Set(result)]),result};braces.create=(input,options={})=>input===""||input.length<3?[input]:options.expand!==!0?braces.compile(input,options):braces.expand(input,options);module2.exports=braces}});var require_constants4=__commonJS({"node_modules/picomatch/lib/constants.js"(exports2,module2){"use strict";var path=require("path"),WIN_SLASH="\\\\/",WIN_NO_SLASH=`[^${WIN_SLASH}]`,DOT_LITERAL="\\.",PLUS_LITERAL="\\+",QMARK_LITERAL="\\?",SLASH_LITERAL="\\/",ONE_CHAR="(?=.)",QMARK="[^/]",END_ANCHOR=`(?:${SLASH_LITERAL}|$)`,START_ANCHOR=`(?:^|${SLASH_LITERAL})`,DOTS_SLASH=`${DOT_LITERAL}{1,2}${END_ANCHOR}`,NO_DOT=`(?!${DOT_LITERAL})`,NO_DOTS=`(?!${START_ANCHOR}${DOTS_SLASH})`,NO_DOT_SLASH=`(?!${DOT_LITERAL}{0,1}${END_ANCHOR})`,NO_DOTS_SLASH=`(?!${DOTS_SLASH})`,QMARK_NO_DOT=`[^.${SLASH_LITERAL}]`,STAR=`${QMARK}*?`,POSIX_CHARS={DOT_LITERAL,PLUS_LITERAL,QMARK_LITERAL,SLASH_LITERAL,ONE_CHAR,QMARK,END_ANCHOR,DOTS_SLASH,NO_DOT,NO_DOTS,NO_DOT_SLASH,NO_DOTS_SLASH,QMARK_NO_DOT,STAR,START_ANCHOR},WINDOWS_CHARS={...POSIX_CHARS,SLASH_LITERAL:`[${WIN_SLASH}]`,QMARK:WIN_NO_SLASH,STAR:`${WIN_NO_SLASH}*?`,DOTS_SLASH:`${DOT_LITERAL}{1,2}(?:[${WIN_SLASH}]|$)`,NO_DOT:`(?!${DOT_LITERAL})`,NO_DOTS:`(?!(?:^|[${WIN_SLASH}])${DOT_LITERAL}{1,2}(?:[${WIN_SLASH}]|$))`,NO_DOT_SLASH:`(?!${DOT_LITERAL}{0,1}(?:[${WIN_SLASH}]|$))`,NO_DOTS_SLASH:`(?!${DOT_LITERAL}{1,2}(?:[${WIN_SLASH}]|$))`,QMARK_NO_DOT:`[^.${WIN_SLASH}]`,START_ANCHOR:`(?:^|[${WIN_SLASH}])`,END_ANCHOR:`(?:[${WIN_SLASH}]|$)`},POSIX_REGEX_SOURCE={alnum:"a-zA-Z0-9",alpha:"a-zA-Z",ascii:"\\x00-\\x7F",blank:" \\t",cntrl:"\\x00-\\x1F\\x7F",digit:"0-9",graph:"\\x21-\\x7E",lower:"a-z",print:"\\x20-\\x7E ",punct:"\\-!\"#$%&'()\\*+,./:;<=>?@[\\]^_`{|}~",space:" \\t\\r\\n\\v\\f",upper:"A-Z",word:"A-Za-z0-9_",xdigit:"A-Fa-f0-9"};module2.exports={MAX_LENGTH:1024*64,POSIX_REGEX_SOURCE,REGEX_BACKSLASH:/\\(?![*+?^${}(|)[\]])/g,REGEX_NON_SPECIAL_CHARS:/^[^@![\].,$*+?^{}()|\\/]+/,REGEX_SPECIAL_CHARS:/[-*+?.^${}(|)[\]]/,REGEX_SPECIAL_CHARS_BACKREF:/(\\?)((\W)(\3*))/g,REGEX_SPECIAL_CHARS_GLOBAL:/([-*+?.^${}(|)[\]])/g,REGEX_REMOVE_BACKSLASH:/(?:\[.*?[^\\]\]|\\(?=.))/g,REPLACEMENTS:{"***":"*","**/**":"**","**/**/**":"**"},CHAR_0:48,CHAR_9:57,CHAR_UPPERCASE_A:65,CHAR_LOWERCASE_A:97,CHAR_UPPERCASE_Z:90,CHAR_LOWERCASE_Z:122,CHAR_LEFT_PARENTHESES:40,CHAR_RIGHT_PARENTHESES:41,CHAR_ASTERISK:42,CHAR_AMPERSAND:38,CHAR_AT:64,CHAR_BACKWARD_SLASH:92,CHAR_CARRIAGE_RETURN:13,CHAR_CIRCUMFLEX_ACCENT:94,CHAR_COLON:58,CHAR_COMMA:44,CHAR_DOT:46,CHAR_DOUBLE_QUOTE:34,CHAR_EQUAL:61,CHAR_EXCLAMATION_MARK:33,CHAR_FORM_FEED:12,CHAR_FORWARD_SLASH:47,CHAR_GRAVE_ACCENT:96,CHAR_HASH:35,CHAR_HYPHEN_MINUS:45,CHAR_LEFT_ANGLE_BRACKET:60,CHAR_LEFT_CURLY_BRACE:123,CHAR_LEFT_SQUARE_BRACKET:91,CHAR_LINE_FEED:10,CHAR_NO_BREAK_SPACE:160,CHAR_PERCENT:37,CHAR_PLUS:43,CHAR_QUESTION_MARK:63,CHAR_RIGHT_ANGLE_BRACKET:62,CHAR_RIGHT_CURLY_BRACE:125,CHAR_RIGHT_SQUARE_BRACKET:93,CHAR_SEMICOLON:59,CHAR_SINGLE_QUOTE:39,CHAR_SPACE:32,CHAR_TAB:9,CHAR_UNDERSCORE:95,CHAR_VERTICAL_LINE:124,CHAR_ZERO_WIDTH_NOBREAK_SPACE:65279,SEP:path.sep,extglobChars(chars){return{"!":{type:"negate",open:"(?:(?!(?:",close:`))${chars.STAR})`},"?":{type:"qmark",open:"(?:",close:")?"},"+":{type:"plus",open:"(?:",close:")+"},"*":{type:"star",open:"(?:",close:")*"},"@":{type:"at",open:"(?:",close:")"}}},globChars(win32){return win32===!0?WINDOWS_CHARS:POSIX_CHARS}}}});var require_utils8=__commonJS({"node_modules/picomatch/lib/utils.js"(exports2){"use strict";var path=require("path"),win32=process.platform==="win32",{REGEX_BACKSLASH,REGEX_REMOVE_BACKSLASH,REGEX_SPECIAL_CHARS,REGEX_SPECIAL_CHARS_GLOBAL}=require_constants4();exports2.isObject=val=>val!==null&&typeof val=="object"&&!Array.isArray(val);exports2.hasRegexChars=str=>REGEX_SPECIAL_CHARS.test(str);exports2.isRegexChar=str=>str.length===1&&exports2.hasRegexChars(str);exports2.escapeRegex=str=>str.replace(REGEX_SPECIAL_CHARS_GLOBAL,"\\$1");exports2.toPosixSlashes=str=>str.replace(REGEX_BACKSLASH,"/");exports2.removeBackslashes=str=>str.replace(REGEX_REMOVE_BACKSLASH,match=>match==="\\"?"":match);exports2.supportsLookbehinds=()=>{let segs=process.version.slice(1).split(".").map(Number);return segs.length===3&&segs[0]>=9||segs[0]===8&&segs[1]>=10};exports2.isWindows=options=>options&&typeof options.windows=="boolean"?options.windows:win32===!0||path.sep==="\\";exports2.escapeLast=(input,char,lastIdx)=>{let idx=input.lastIndexOf(char,lastIdx);return idx===-1?input:input[idx-1]==="\\"?exports2.escapeLast(input,char,idx-1):`${input.slice(0,idx)}\\${input.slice(idx)}`};exports2.removePrefix=(input,state={})=>{let output=input;return output.startsWith("./")&&(output=output.slice(2),state.prefix="./"),output};exports2.wrapOutput=(input,state={},options={})=>{let prepend=options.contains?"":"^",append=options.contains?"":"$",output=`${prepend}(?:${input})${append}`;return state.negated===!0&&(output=`(?:^(?!${output}).*$)`),output}}});var require_scan=__commonJS({"node_modules/picomatch/lib/scan.js"(exports2,module2){"use strict";var utils=require_utils8(),{CHAR_ASTERISK,CHAR_AT,CHAR_BACKWARD_SLASH,CHAR_COMMA,CHAR_DOT,CHAR_EXCLAMATION_MARK,CHAR_FORWARD_SLASH,CHAR_LEFT_CURLY_BRACE,CHAR_LEFT_PARENTHESES,CHAR_LEFT_SQUARE_BRACKET,CHAR_PLUS,CHAR_QUESTION_MARK,CHAR_RIGHT_CURLY_BRACE,CHAR_RIGHT_PARENTHESES,CHAR_RIGHT_SQUARE_BRACKET}=require_constants4(),isPathSeparator=code=>code===CHAR_FORWARD_SLASH||code===CHAR_BACKWARD_SLASH,depth=token=>{token.isPrefix!==!0&&(token.depth=token.isGlobstar?1/0:1)},scan=(input,options)=>{let opts=options||{},length=input.length-1,scanToEnd=opts.parts===!0||opts.scanToEnd===!0,slashes=[],tokens=[],parts=[],str=input,index=-1,start=0,lastIndex=0,isBrace=!1,isBracket=!1,isGlob=!1,isExtglob=!1,isGlobstar=!1,braceEscaped=!1,backslashes=!1,negated=!1,negatedExtglob=!1,finished=!1,braces=0,prev,code,token={value:"",depth:0,isGlob:!1},eos=()=>index>=length,peek=()=>str.charCodeAt(index+1),advance=()=>(prev=code,str.charCodeAt(++index));for(;index<length;){code=advance();let next;if(code===CHAR_BACKWARD_SLASH){backslashes=token.backslashes=!0,code=advance(),code===CHAR_LEFT_CURLY_BRACE&&(braceEscaped=!0);continue}if(braceEscaped===!0||code===CHAR_LEFT_CURLY_BRACE){for(braces++;eos()!==!0&&(code=advance());){if(code===CHAR_BACKWARD_SLASH){backslashes=token.backslashes=!0,advance();continue}if(code===CHAR_LEFT_CURLY_BRACE){braces++;continue}if(braceEscaped!==!0&&code===CHAR_DOT&&(code=advance())===CHAR_DOT){if(isBrace=token.isBrace=!0,isGlob=token.isGlob=!0,finished=!0,scanToEnd===!0)continue;break}if(braceEscaped!==!0&&code===CHAR_COMMA){if(isBrace=token.isBrace=!0,isGlob=token.isGlob=!0,finished=!0,scanToEnd===!0)continue;break}if(code===CHAR_RIGHT_CURLY_BRACE&&(braces--,braces===0)){braceEscaped=!1,isBrace=token.isBrace=!0,finished=!0;break}}if(scanToEnd===!0)continue;break}if(code===CHAR_FORWARD_SLASH){if(slashes.push(index),tokens.push(token),token={value:"",depth:0,isGlob:!1},finished===!0)continue;if(prev===CHAR_DOT&&index===start+1){start+=2;continue}lastIndex=index+1;continue}if(opts.noext!==!0&&(code===CHAR_PLUS||code===CHAR_AT||code===CHAR_ASTERISK||code===CHAR_QUESTION_MARK||code===CHAR_EXCLAMATION_MARK)===!0&&peek()===CHAR_LEFT_PARENTHESES){if(isGlob=token.isGlob=!0,isExtglob=token.isExtglob=!0,finished=!0,code===CHAR_EXCLAMATION_MARK&&index===start&&(negatedExtglob=!0),scanToEnd===!0){for(;eos()!==!0&&(code=advance());){if(code===CHAR_BACKWARD_SLASH){backslashes=token.backslashes=!0,code=advance();continue}if(code===CHAR_RIGHT_PARENTHESES){isGlob=token.isGlob=!0,finished=!0;break}}continue}break}if(code===CHAR_ASTERISK){if(prev===CHAR_ASTERISK&&(isGlobstar=token.isGlobstar=!0),isGlob=token.isGlob=!0,finished=!0,scanToEnd===!0)continue;break}if(code===CHAR_QUESTION_MARK){if(isGlob=token.isGlob=!0,finished=!0,scanToEnd===!0)continue;break}if(code===CHAR_LEFT_SQUARE_BRACKET){for(;eos()!==!0&&(next=advance());){if(next===CHAR_BACKWARD_SLASH){backslashes=token.backslashes=!0,advance();continue}if(next===CHAR_RIGHT_SQUARE_BRACKET){isBracket=token.isBracket=!0,isGlob=token.isGlob=!0,finished=!0;break}}if(scanToEnd===!0)continue;break}if(opts.nonegate!==!0&&code===CHAR_EXCLAMATION_MARK&&index===start){negated=token.negated=!0,start++;continue}if(opts.noparen!==!0&&code===CHAR_LEFT_PARENTHESES){if(isGlob=token.isGlob=!0,scanToEnd===!0){for(;eos()!==!0&&(code=advance());){if(code===CHAR_LEFT_PARENTHESES){backslashes=token.backslashes=!0,code=advance();continue}if(code===CHAR_RIGHT_PARENTHESES){finished=!0;break}}continue}break}if(isGlob===!0){if(finished=!0,scanToEnd===!0)continue;break}}opts.noext===!0&&(isExtglob=!1,isGlob=!1);let base=str,prefix="",glob="";start>0&&(prefix=str.slice(0,start),str=str.slice(start),lastIndex-=start),base&&isGlob===!0&&lastIndex>0?(base=str.slice(0,lastIndex),glob=str.slice(lastIndex)):isGlob===!0?(base="",glob=str):base=str,base&&base!==""&&base!=="/"&&base!==str&&isPathSeparator(base.charCodeAt(base.length-1))&&(base=base.slice(0,-1)),opts.unescape===!0&&(glob&&(glob=utils.removeBackslashes(glob)),base&&backslashes===!0&&(base=utils.removeBackslashes(base)));let state={prefix,input,start,base,glob,isBrace,isBracket,isGlob,isExtglob,isGlobstar,negated,negatedExtglob};if(opts.tokens===!0&&(state.maxDepth=0,isPathSeparator(code)||tokens.push(token),state.tokens=tokens),opts.parts===!0||opts.tokens===!0){let prevIndex;for(let idx=0;idx<slashes.length;idx++){let n=prevIndex?prevIndex+1:start,i=slashes[idx],value=input.slice(n,i);opts.tokens&&(idx===0&&start!==0?(tokens[idx].isPrefix=!0,tokens[idx].value=prefix):tokens[idx].value=value,depth(tokens[idx]),state.maxDepth+=tokens[idx].depth),(idx!==0||value!=="")&&parts.push(value),prevIndex=i}if(prevIndex&&prevIndex+1<input.length){let value=input.slice(prevIndex+1);parts.push(value),opts.tokens&&(tokens[tokens.length-1].value=value,depth(tokens[tokens.length-1]),state.maxDepth+=tokens[tokens.length-1].depth)}state.slashes=slashes,state.parts=parts}return state};module2.exports=scan}});var require_parse3=__commonJS({"node_modules/picomatch/lib/parse.js"(exports2,module2){"use strict";var constants=require_constants4(),utils=require_utils8(),{MAX_LENGTH,POSIX_REGEX_SOURCE,REGEX_NON_SPECIAL_CHARS,REGEX_SPECIAL_CHARS_BACKREF,REPLACEMENTS}=constants,expandRange=(args,options)=>{if(typeof options.expandRange=="function")return options.expandRange(...args,options);args.sort();let value=`[${args.join("-")}]`;try{new RegExp(value)}catch{return args.map(v=>utils.escapeRegex(v)).join("..")}return value},syntaxError=(type,char)=>`Missing ${type}: "${char}" - use "\\\\${char}" to match literal characters`,parse=(input,options)=>{if(typeof input!="string")throw new TypeError("Expected a string");input=REPLACEMENTS[input]||input;let opts={...options},max=typeof opts.maxLength=="number"?Math.min(MAX_LENGTH,opts.maxLength):MAX_LENGTH,len=input.length;if(len>max)throw new SyntaxError(`Input length: ${len}, exceeds maximum allowed length: ${max}`);let bos={type:"bos",value:"",output:opts.prepend||""},tokens=[bos],capture=opts.capture?"":"?:",win32=utils.isWindows(options),PLATFORM_CHARS=constants.globChars(win32),EXTGLOB_CHARS=constants.extglobChars(PLATFORM_CHARS),{DOT_LITERAL,PLUS_LITERAL,SLASH_LITERAL,ONE_CHAR,DOTS_SLASH,NO_DOT,NO_DOT_SLASH,NO_DOTS_SLASH,QMARK,QMARK_NO_DOT,STAR,START_ANCHOR}=PLATFORM_CHARS,globstar=opts2=>`(${capture}(?:(?!${START_ANCHOR}${opts2.dot?DOTS_SLASH:DOT_LITERAL}).)*?)`,nodot=opts.dot?"":NO_DOT,qmarkNoDot=opts.dot?QMARK:QMARK_NO_DOT,star=opts.bash===!0?globstar(opts):STAR;opts.capture&&(star=`(${star})`),typeof opts.noext=="boolean"&&(opts.noextglob=opts.noext);let state={input,index:-1,start:0,dot:opts.dot===!0,consumed:"",output:"",prefix:"",backtrack:!1,negated:!1,brackets:0,braces:0,parens:0,quotes:0,globstar:!1,tokens};input=utils.removePrefix(input,state),len=input.length;let extglobs=[],braces=[],stack=[],prev=bos,value,eos=()=>state.index===len-1,peek=state.peek=(n=1)=>input[state.index+n],advance=state.advance=()=>input[++state.index]||"",remaining=()=>input.slice(state.index+1),consume=(value2="",num=0)=>{state.consumed+=value2,state.index+=num},append=token=>{state.output+=token.output!=null?token.output:token.value,consume(token.value)},negate=()=>{let count=1;for(;peek()==="!"&&(peek(2)!=="("||peek(3)==="?");)advance(),state.start++,count++;return count%2===0?!1:(state.negated=!0,state.start++,!0)},increment=type=>{state[type]++,stack.push(type)},decrement=type=>{state[type]--,stack.pop()},push=tok=>{if(prev.type==="globstar"){let isBrace=state.braces>0&&(tok.type==="comma"||tok.type==="brace"),isExtglob=tok.extglob===!0||extglobs.length&&(tok.type==="pipe"||tok.type==="paren");tok.type!=="slash"&&tok.type!=="paren"&&!isBrace&&!isExtglob&&(state.output=state.output.slice(0,-prev.output.length),prev.type="star",prev.value="*",prev.output=star,state.output+=prev.output)}if(extglobs.length&&tok.type!=="paren"&&(extglobs[extglobs.length-1].inner+=tok.value),(tok.value||tok.output)&&append(tok),prev&&prev.type==="text"&&tok.type==="text"){prev.value+=tok.value,prev.output=(prev.output||"")+tok.value;return}tok.prev=prev,tokens.push(tok),prev=tok},extglobOpen=(type,value2)=>{let token={...EXTGLOB_CHARS[value2],conditions:1,inner:""};token.prev=prev,token.parens=state.parens,token.output=state.output;let output=(opts.capture?"(":"")+token.open;increment("parens"),push({type,value:value2,output:state.output?"":ONE_CHAR}),push({type:"paren",extglob:!0,value:advance(),output}),extglobs.push(token)},extglobClose=token=>{let output=token.close+(opts.capture?")":""),rest;if(token.type==="negate"){let extglobStar=star;if(token.inner&&token.inner.length>1&&token.inner.includes("/")&&(extglobStar=globstar(opts)),(extglobStar!==star||eos()||/^\)+$/.test(remaining()))&&(output=token.close=`)$))${extglobStar}`),token.inner.includes("*")&&(rest=remaining())&&/^\.[^\\/.]+$/.test(rest)){let expression=parse(rest,{...options,fastpaths:!1}).output;output=token.close=`)${expression})${extglobStar})`}token.prev.type==="bos"&&(state.negatedExtglob=!0)}push({type:"paren",extglob:!0,value,output}),decrement("parens")};if(opts.fastpaths!==!1&&!/(^[*!]|[/()[\]{}"])/.test(input)){let backslashes=!1,output=input.replace(REGEX_SPECIAL_CHARS_BACKREF,(m,esc,chars,first,rest,index)=>first==="\\"?(backslashes=!0,m):first==="?"?esc?esc+first+(rest?QMARK.repeat(rest.length):""):index===0?qmarkNoDot+(rest?QMARK.repeat(rest.length):""):QMARK.repeat(chars.length):first==="."?DOT_LITERAL.repeat(chars.length):first==="*"?esc?esc+first+(rest?star:""):star:esc?m:`\\${m}`);return backslashes===!0&&(opts.unescape===!0?output=output.replace(/\\/g,""):output=output.replace(/\\+/g,m=>m.length%2===0?"\\\\":m?"\\":"")),output===input&&opts.contains===!0?(state.output=input,state):(state.output=utils.wrapOutput(output,state,options),state)}for(;!eos();){if(value=advance(),value==="\0")continue;if(value==="\\"){let next=peek();if(next==="/"&&opts.bash!==!0||next==="."||next===";")continue;if(!next){value+="\\",push({type:"text",value});continue}let match=/^\\+/.exec(remaining()),slashes=0;if(match&&match[0].length>2&&(slashes=match[0].length,state.index+=slashes,slashes%2!==0&&(value+="\\")),opts.unescape===!0?value=advance():value+=advance(),state.brackets===0){push({type:"text",value});continue}}if(state.brackets>0&&(value!=="]"||prev.value==="["||prev.value==="[^")){if(opts.posix!==!1&&value===":"){let inner=prev.value.slice(1);if(inner.includes("[")&&(prev.posix=!0,inner.includes(":"))){let idx=prev.value.lastIndexOf("["),pre=prev.value.slice(0,idx),rest2=prev.value.slice(idx+2),posix=POSIX_REGEX_SOURCE[rest2];if(posix){prev.value=pre+posix,state.backtrack=!0,advance(),!bos.output&&tokens.indexOf(prev)===1&&(bos.output=ONE_CHAR);continue}}}(value==="["&&peek()!==":"||value==="-"&&peek()==="]")&&(value=`\\${value}`),value==="]"&&(prev.value==="["||prev.value==="[^")&&(value=`\\${value}`),opts.posix===!0&&value==="!"&&prev.value==="["&&(value="^"),prev.value+=value,append({value});continue}if(state.quotes===1&&value!=='"'){value=utils.escapeRegex(value),prev.value+=value,append({value});continue}if(value==='"'){state.quotes=state.quotes===1?0:1,opts.keepQuotes===!0&&push({type:"text",value});continue}if(value==="("){increment("parens"),push({type:"paren",value});continue}if(value===")"){if(state.parens===0&&opts.strictBrackets===!0)throw new SyntaxError(syntaxError("opening","("));let extglob=extglobs[extglobs.length-1];if(extglob&&state.parens===extglob.parens+1){extglobClose(extglobs.pop());continue}push({type:"paren",value,output:state.parens?")":"\\)"}),decrement("parens");continue}if(value==="["){if(opts.nobracket===!0||!remaining().includes("]")){if(opts.nobracket!==!0&&opts.strictBrackets===!0)throw new SyntaxError(syntaxError("closing","]"));value=`\\${value}`}else increment("brackets");push({type:"bracket",value});continue}if(value==="]"){if(opts.nobracket===!0||prev&&prev.type==="bracket"&&prev.value.length===1){push({type:"text",value,output:`\\${value}`});continue}if(state.brackets===0){if(opts.strictBrackets===!0)throw new SyntaxError(syntaxError("opening","["));push({type:"text",value,output:`\\${value}`});continue}decrement("brackets");let prevValue=prev.value.slice(1);if(prev.posix!==!0&&prevValue[0]==="^"&&!prevValue.includes("/")&&(value=`/${value}`),prev.value+=value,append({value}),opts.literalBrackets===!1||utils.hasRegexChars(prevValue))continue;let escaped=utils.escapeRegex(prev.value);if(state.output=state.output.slice(0,-prev.value.length),opts.literalBrackets===!0){state.output+=escaped,prev.value=escaped;continue}prev.value=`(${capture}${escaped}|${prev.value})`,state.output+=prev.value;continue}if(value==="{"&&opts.nobrace!==!0){increment("braces");let open={type:"brace",value,output:"(",outputIndex:state.output.length,tokensIndex:state.tokens.length};braces.push(open),push(open);continue}if(value==="}"){let brace=braces[braces.length-1];if(opts.nobrace===!0||!brace){push({type:"text",value,output:value});continue}let output=")";if(brace.dots===!0){let arr=tokens.slice(),range=[];for(let i=arr.length-1;i>=0&&(tokens.pop(),arr[i].type!=="brace");i--)arr[i].type!=="dots"&&range.unshift(arr[i].value);output=expandRange(range,opts),state.backtrack=!0}if(brace.comma!==!0&&brace.dots!==!0){let out=state.output.slice(0,brace.outputIndex),toks=state.tokens.slice(brace.tokensIndex);brace.value=brace.output="\\{",value=output="\\}",state.output=out;for(let t of toks)state.output+=t.output||t.value}push({type:"brace",value,output}),decrement("braces"),braces.pop();continue}if(value==="|"){extglobs.length>0&&extglobs[extglobs.length-1].conditions++,push({type:"text",value});continue}if(value===","){let output=value,brace=braces[braces.length-1];brace&&stack[stack.length-1]==="braces"&&(brace.comma=!0,output="|"),push({type:"comma",value,output});continue}if(value==="/"){if(prev.type==="dot"&&state.index===state.start+1){state.start=state.index+1,state.consumed="",state.output="",tokens.pop(),prev=bos;continue}push({type:"slash",value,output:SLASH_LITERAL});continue}if(value==="."){if(state.braces>0&&prev.type==="dot"){prev.value==="."&&(prev.output=DOT_LITERAL);let brace=braces[braces.length-1];prev.type="dots",prev.output+=value,prev.value+=value,brace.dots=!0;continue}if(state.braces+state.parens===0&&prev.type!=="bos"&&prev.type!=="slash"){push({type:"text",value,output:DOT_LITERAL});continue}push({type:"dot",value,output:DOT_LITERAL});continue}if(value==="?"){if(!(prev&&prev.value==="(")&&opts.noextglob!==!0&&peek()==="("&&peek(2)!=="?"){extglobOpen("qmark",value);continue}if(prev&&prev.type==="paren"){let next=peek(),output=value;if(next==="<"&&!utils.supportsLookbehinds())throw new Error("Node.js v10 or higher is required for regex lookbehinds");(prev.value==="("&&!/[!=<:]/.test(next)||next==="<"&&!/<([!=]|\w+>)/.test(remaining()))&&(output=`\\${value}`),push({type:"text",value,output});continue}if(opts.dot!==!0&&(prev.type==="slash"||prev.type==="bos")){push({type:"qmark",value,output:QMARK_NO_DOT});continue}push({type:"qmark",value,output:QMARK});continue}if(value==="!"){if(opts.noextglob!==!0&&peek()==="("&&(peek(2)!=="?"||!/[!=<:]/.test(peek(3)))){extglobOpen("negate",value);continue}if(opts.nonegate!==!0&&state.index===0){negate();continue}}if(value==="+"){if(opts.noextglob!==!0&&peek()==="("&&peek(2)!=="?"){extglobOpen("plus",value);continue}if(prev&&prev.value==="("||opts.regex===!1){push({type:"plus",value,output:PLUS_LITERAL});continue}if(prev&&(prev.type==="bracket"||prev.type==="paren"||prev.type==="brace")||state.parens>0){push({type:"plus",value});continue}push({type:"plus",value:PLUS_LITERAL});continue}if(value==="@"){if(opts.noextglob!==!0&&peek()==="("&&peek(2)!=="?"){push({type:"at",extglob:!0,value,output:""});continue}push({type:"text",value});continue}if(value!=="*"){(value==="$"||value==="^")&&(value=`\\${value}`);let match=REGEX_NON_SPECIAL_CHARS.exec(remaining());match&&(value+=match[0],state.index+=match[0].length),push({type:"text",value});continue}if(prev&&(prev.type==="globstar"||prev.star===!0)){prev.type="star",prev.star=!0,prev.value+=value,prev.output=star,state.backtrack=!0,state.globstar=!0,consume(value);continue}let rest=remaining();if(opts.noextglob!==!0&&/^\([^?]/.test(rest)){extglobOpen("star",value);continue}if(prev.type==="star"){if(opts.noglobstar===!0){consume(value);continue}let prior=prev.prev,before=prior.prev,isStart=prior.type==="slash"||prior.type==="bos",afterStar=before&&(before.type==="star"||before.type==="globstar");if(opts.bash===!0&&(!isStart||rest[0]&&rest[0]!=="/")){push({type:"star",value,output:""});continue}let isBrace=state.braces>0&&(prior.type==="comma"||prior.type==="brace"),isExtglob=extglobs.length&&(prior.type==="pipe"||prior.type==="paren");if(!isStart&&prior.type!=="paren"&&!isBrace&&!isExtglob){push({type:"star",value,output:""});continue}for(;rest.slice(0,3)==="/**";){let after=input[state.index+4];if(after&&after!=="/")break;rest=rest.slice(3),consume("/**",3)}if(prior.type==="bos"&&eos()){prev.type="globstar",prev.value+=value,prev.output=globstar(opts),state.output=prev.output,state.globstar=!0,consume(value);continue}if(prior.type==="slash"&&prior.prev.type!=="bos"&&!afterStar&&eos()){state.output=state.output.slice(0,-(prior.output+prev.output).length),prior.output=`(?:${prior.output}`,prev.type="globstar",prev.output=globstar(opts)+(opts.strictSlashes?")":"|$)"),prev.value+=value,state.globstar=!0,state.output+=prior.output+prev.output,consume(value);continue}if(prior.type==="slash"&&prior.prev.type!=="bos"&&rest[0]==="/"){let end=rest[1]!==void 0?"|$":"";state.output=state.output.slice(0,-(prior.output+prev.output).length),prior.output=`(?:${prior.output}`,prev.type="globstar",prev.output=`${globstar(opts)}${SLASH_LITERAL}|${SLASH_LITERAL}${end})`,prev.value+=value,state.output+=prior.output+prev.output,state.globstar=!0,consume(value+advance()),push({type:"slash",value:"/",output:""});continue}if(prior.type==="bos"&&rest[0]==="/"){prev.type="globstar",prev.value+=value,prev.output=`(?:^|${SLASH_LITERAL}|${globstar(opts)}${SLASH_LITERAL})`,state.output=prev.output,state.globstar=!0,consume(value+advance()),push({type:"slash",value:"/",output:""});continue}state.output=state.output.slice(0,-prev.output.length),prev.type="globstar",prev.output=globstar(opts),prev.value+=value,state.output+=prev.output,state.globstar=!0,consume(value);continue}let token={type:"star",value,output:star};if(opts.bash===!0){token.output=".*?",(prev.type==="bos"||prev.type==="slash")&&(token.output=nodot+token.output),push(token);continue}if(prev&&(prev.type==="bracket"||prev.type==="paren")&&opts.regex===!0){token.output=value,push(token);continue}(state.index===state.start||prev.type==="slash"||prev.type==="dot")&&(prev.type==="dot"?(state.output+=NO_DOT_SLASH,prev.output+=NO_DOT_SLASH):opts.dot===!0?(state.output+=NO_DOTS_SLASH,prev.output+=NO_DOTS_SLASH):(state.output+=nodot,prev.output+=nodot),peek()!=="*"&&(state.output+=ONE_CHAR,prev.output+=ONE_CHAR)),push(token)}for(;state.brackets>0;){if(opts.strictBrackets===!0)throw new SyntaxError(syntaxError("closing","]"));state.output=utils.escapeLast(state.output,"["),decrement("brackets")}for(;state.parens>0;){if(opts.strictBrackets===!0)throw new SyntaxError(syntaxError("closing",")"));state.output=utils.escapeLast(state.output,"("),decrement("parens")}for(;state.braces>0;){if(opts.strictBrackets===!0)throw new SyntaxError(syntaxError("closing","}"));state.output=utils.escapeLast(state.output,"{"),decrement("braces")}if(opts.strictSlashes!==!0&&(prev.type==="star"||prev.type==="bracket")&&push({type:"maybe_slash",value:"",output:`${SLASH_LITERAL}?`}),state.backtrack===!0){state.output="";for(let token of state.tokens)state.output+=token.output!=null?token.output:token.value,token.suffix&&(state.output+=token.suffix)}return state};parse.fastpaths=(input,options)=>{let opts={...options},max=typeof opts.maxLength=="number"?Math.min(MAX_LENGTH,opts.maxLength):MAX_LENGTH,len=input.length;if(len>max)throw new SyntaxError(`Input length: ${len}, exceeds maximum allowed length: ${max}`);input=REPLACEMENTS[input]||input;let win32=utils.isWindows(options),{DOT_LITERAL,SLASH_LITERAL,ONE_CHAR,DOTS_SLASH,NO_DOT,NO_DOTS,NO_DOTS_SLASH,STAR,START_ANCHOR}=constants.globChars(win32),nodot=opts.dot?NO_DOTS:NO_DOT,slashDot=opts.dot?NO_DOTS_SLASH:NO_DOT,capture=opts.capture?"":"?:",state={negated:!1,prefix:""},star=opts.bash===!0?".*?":STAR;opts.capture&&(star=`(${star})`);let globstar=opts2=>opts2.noglobstar===!0?star:`(${capture}(?:(?!${START_ANCHOR}${opts2.dot?DOTS_SLASH:DOT_LITERAL}).)*?)`,create=str=>{switch(str){case"*":return`${nodot}${ONE_CHAR}${star}`;case".*":return`${DOT_LITERAL}${ONE_CHAR}${star}`;case"*.*":return`${nodot}${star}${DOT_LITERAL}${ONE_CHAR}${star}`;case"*/*":return`${nodot}${star}${SLASH_LITERAL}${ONE_CHAR}${slashDot}${star}`;case"**":return nodot+globstar(opts);case"**/*":return`(?:${nodot}${globstar(opts)}${SLASH_LITERAL})?${slashDot}${ONE_CHAR}${star}`;case"**/*.*":return`(?:${nodot}${globstar(opts)}${SLASH_LITERAL})?${slashDot}${star}${DOT_LITERAL}${ONE_CHAR}${star}`;case"**/.*":return`(?:${nodot}${globstar(opts)}${SLASH_LITERAL})?${DOT_LITERAL}${ONE_CHAR}${star}`;default:{let match=/^(.*?)\.(\w+)$/.exec(str);if(!match)return;let source2=create(match[1]);return source2?source2+DOT_LITERAL+match[2]:void 0}}},output=utils.removePrefix(input,state),source=create(output);return source&&opts.strictSlashes!==!0&&(source+=`${SLASH_LITERAL}?`),source};module2.exports=parse}});var require_picomatch=__commonJS({"node_modules/picomatch/lib/picomatch.js"(exports2,module2){"use strict";var path=require("path"),scan=require_scan(),parse=require_parse3(),utils=require_utils8(),constants=require_constants4(),isObject=val=>val&&typeof val=="object"&&!Array.isArray(val),picomatch=(glob,options,returnState=!1)=>{if(Array.isArray(glob)){let fns=glob.map(input=>picomatch(input,options,returnState));return str=>{for(let isMatch of fns){let state2=isMatch(str);if(state2)return state2}return!1}}let isState=isObject(glob)&&glob.tokens&&glob.input;if(glob===""||typeof glob!="string"&&!isState)throw new TypeError("Expected pattern to be a non-empty string");let opts=options||{},posix=utils.isWindows(options),regex=isState?picomatch.compileRe(glob,options):picomatch.makeRe(glob,options,!1,!0),state=regex.state;delete regex.state;let isIgnored=()=>!1;if(opts.ignore){let ignoreOpts={...options,ignore:null,onMatch:null,onResult:null};isIgnored=picomatch(opts.ignore,ignoreOpts,returnState)}let matcher=(input,returnObject=!1)=>{let{isMatch,match,output}=picomatch.test(input,regex,options,{glob,posix}),result={glob,state,regex,posix,input,output,match,isMatch};return typeof opts.onResult=="function"&&opts.onResult(result),isMatch===!1?(result.isMatch=!1,returnObject?result:!1):isIgnored(input)?(typeof opts.onIgnore=="function"&&opts.onIgnore(result),result.isMatch=!1,returnObject?result:!1):(typeof opts.onMatch=="function"&&opts.onMatch(result),returnObject?result:!0)};return returnState&&(matcher.state=state),matcher};picomatch.test=(input,regex,options,{glob,posix}={})=>{if(typeof input!="string")throw new TypeError("Expected input to be a string");if(input==="")return{isMatch:!1,output:""};let opts=options||{},format=opts.format||(posix?utils.toPosixSlashes:null),match=input===glob,output=match&&format?format(input):input;return match===!1&&(output=format?format(input):input,match=output===glob),(match===!1||opts.capture===!0)&&(opts.matchBase===!0||opts.basename===!0?match=picomatch.matchBase(input,regex,options,posix):match=regex.exec(output)),{isMatch:!!match,match,output}};picomatch.matchBase=(input,glob,options,posix=utils.isWindows(options))=>(glob instanceof RegExp?glob:picomatch.makeRe(glob,options)).test(path.basename(input));picomatch.isMatch=(str,patterns,options)=>picomatch(patterns,options)(str);picomatch.parse=(pattern,options)=>Array.isArray(pattern)?pattern.map(p=>picomatch.parse(p,options)):parse(pattern,{...options,fastpaths:!1});picomatch.scan=(input,options)=>scan(input,options);picomatch.compileRe=(state,options,returnOutput=!1,returnState=!1)=>{if(returnOutput===!0)return state.output;let opts=options||{},prepend=opts.contains?"":"^",append=opts.contains?"":"$",source=`${prepend}(?:${state.output})${append}`;state&&state.negated===!0&&(source=`^(?!${source}).*$`);let regex=picomatch.toRegex(source,options);return returnState===!0&&(regex.state=state),regex};picomatch.makeRe=(input,options={},returnOutput=!1,returnState=!1)=>{if(!input||typeof input!="string")throw new TypeError("Expected a non-empty string");let parsed={negated:!1,fastpaths:!0};return options.fastpaths!==!1&&(input[0]==="."||input[0]==="*")&&(parsed.output=parse.fastpaths(input,options)),parsed.output||(parsed=parse(input,options)),picomatch.compileRe(parsed,options,returnOutput,returnState)};picomatch.toRegex=(source,options)=>{try{let opts=options||{};return new RegExp(source,opts.flags||(opts.nocase?"i":""))}catch(err){if(options&&options.debug===!0)throw err;return/$^/}};picomatch.constants=constants;module2.exports=picomatch}});var require_picomatch2=__commonJS({"node_modules/picomatch/index.js"(exports2,module2){"use strict";module2.exports=require_picomatch()}});var require_micromatch=__commonJS({"node_modules/micromatch/index.js"(exports2,module2){"use strict";var util=require("util"),braces=require_braces(),picomatch=require_picomatch2(),utils=require_utils8(),isEmptyString=v=>v===""||v==="./",hasBraces=v=>{let index=v.indexOf("{");return index>-1&&v.indexOf("}",index)>-1},micromatch=(list,patterns,options)=>{patterns=[].concat(patterns),list=[].concat(list);let omit=new Set,keep=new Set,items=new Set,negatives=0,onResult=state=>{items.add(state.output),options&&options.onResult&&options.onResult(state)};for(let i=0;i<patterns.length;i++){let isMatch=picomatch(String(patterns[i]),{...options,onResult},!0),negated=isMatch.state.negated||isMatch.state.negatedExtglob;negated&&negatives++;for(let item of list){let matched=isMatch(item,!0);(negated?!matched.isMatch:matched.isMatch)&&(negated?omit.add(matched.output):(omit.delete(matched.output),keep.add(matched.output)))}}let matches=(negatives===patterns.length?[...items]:[...keep]).filter(item=>!omit.has(item));if(options&&matches.length===0){if(options.failglob===!0)throw new Error(`No matches found for "${patterns.join(", ")}"`);if(options.nonull===!0||options.nullglob===!0)return options.unescape?patterns.map(p=>p.replace(/\\/g,"")):patterns}return matches};micromatch.match=micromatch;micromatch.matcher=(pattern,options)=>picomatch(pattern,options);micromatch.isMatch=(str,patterns,options)=>picomatch(patterns,options)(str);micromatch.any=micromatch.isMatch;micromatch.not=(list,patterns,options={})=>{patterns=[].concat(patterns).map(String);let result=new Set,items=[],onResult=state=>{options.onResult&&options.onResult(state),items.push(state.output)},matches=new Set(micromatch(list,patterns,{...options,onResult}));for(let item of items)matches.has(item)||result.add(item);return[...result]};micromatch.contains=(str,pattern,options)=>{if(typeof str!="string")throw new TypeError(`Expected a string: "${util.inspect(str)}"`);if(Array.isArray(pattern))return pattern.some(p=>micromatch.contains(str,p,options));if(typeof pattern=="string"){if(isEmptyString(str)||isEmptyString(pattern))return!1;if(str.includes(pattern)||str.startsWith("./")&&str.slice(2).includes(pattern))return!0}return micromatch.isMatch(str,pattern,{...options,contains:!0})};micromatch.matchKeys=(obj,patterns,options)=>{if(!utils.isObject(obj))throw new TypeError("Expected the first argument to be an object");let keys=micromatch(Object.keys(obj),patterns,options),res={};for(let key of keys)res[key]=obj[key];return res};micromatch.some=(list,patterns,options)=>{let items=[].concat(list);for(let pattern of[].concat(patterns)){let isMatch=picomatch(String(pattern),options);if(items.some(item=>isMatch(item)))return!0}return!1};micromatch.every=(list,patterns,options)=>{let items=[].concat(list);for(let pattern of[].concat(patterns)){let isMatch=picomatch(String(pattern),options);if(!items.every(item=>isMatch(item)))return!1}return!0};micromatch.all=(str,patterns,options)=>{if(typeof str!="string")throw new TypeError(`Expected a string: "${util.inspect(str)}"`);return[].concat(patterns).every(p=>picomatch(p,options)(str))};micromatch.capture=(glob,input,options)=>{let posix=utils.isWindows(options),match=picomatch.makeRe(String(glob),{...options,capture:!0}).exec(posix?utils.toPosixSlashes(input):input);if(match)return match.slice(1).map(v=>v===void 0?"":v)};micromatch.makeRe=(...args)=>picomatch.makeRe(...args);micromatch.scan=(...args)=>picomatch.scan(...args);micromatch.parse=(patterns,options)=>{let res=[];for(let pattern of[].concat(patterns||[]))for(let str of braces(String(pattern),options))res.push(picomatch.parse(str,options));return res};micromatch.braces=(pattern,options)=>{if(typeof pattern!="string")throw new TypeError("Expected a string");return options&&options.nobrace===!0||!hasBraces(pattern)?[pattern]:braces(pattern,options)};micromatch.braceExpand=(pattern,options)=>{if(typeof pattern!="string")throw new TypeError("Expected a string");return micromatch.braces(pattern,{...options,expand:!0})};micromatch.hasBraces=hasBraces;module2.exports=micromatch}});var require_context_matcher=__commonJS({"node_modules/http-proxy-middleware/dist/context-matcher.js"(exports2){"use strict";Object.defineProperty(exports2,"__esModule",{value:!0});exports2.match=void 0;var isGlob=require_is_glob(),micromatch=require_micromatch(),url=require("url"),errors_1=require_errors3();function match(context,uri,req){if(isStringPath(context))return matchSingleStringPath(context,uri);if(isGlobPath(context))return matchSingleGlobPath(context,uri);if(Array.isArray(context)){if(context.every(isStringPath))return matchMultiPath(context,uri);if(context.every(isGlobPath))return matchMultiGlobPath(context,uri);throw new Error(errors_1.ERRORS.ERR_CONTEXT_MATCHER_INVALID_ARRAY)}if(typeof context=="function"){let pathname=getUrlPathName(uri);return context(pathname,req)}throw new Error(errors_1.ERRORS.ERR_CONTEXT_MATCHER_GENERIC)}exports2.match=match;function matchSingleStringPath(context,uri){return getUrlPathName(uri).indexOf(context)===0}function matchSingleGlobPath(pattern,uri){let pathname=getUrlPathName(uri),matches=micromatch([pathname],pattern);return matches&&matches.length>0}function matchMultiGlobPath(patternList,uri){return matchSingleGlobPath(patternList,uri)}function matchMultiPath(contextList,uri){let isMultiPath=!1;for(let context of contextList)if(matchSingleStringPath(context,uri)){isMultiPath=!0;break}return isMultiPath}function getUrlPathName(uri){return uri&&url.parse(uri).pathname}function isStringPath(context){return typeof context=="string"&&!isGlob(context)}function isGlobPath(context){return isGlob(context)}}});var require_handlers=__commonJS({"node_modules/http-proxy-middleware/dist/_handlers.js"(exports2){"use strict";Object.defineProperty(exports2,"__esModule",{value:!0});exports2.getHandlers=exports2.init=void 0;var logger_1=require_logger(),logger=(0,logger_1.getInstance)();function init(proxy,option){let handlers=getHandlers(option);for(let eventName of Object.keys(handlers))proxy.on(eventName,handlers[eventName]);proxy.on("econnreset",(error,req,res,target)=>{logger.error("[HPM] ECONNRESET: %O",error)}),proxy.on("proxyReqWs",(proxyReq,req,socket,options,head)=>{socket.on("error",error=>{logger.error("[HPM] WebSocket error: %O",error)})}),logger.debug("[HPM] Subscribed to http-proxy events:",Object.keys(handlers))}exports2.init=init;function getHandlers(options){let proxyEventsMap={error:"onError",proxyReq:"onProxyReq",proxyReqWs:"onProxyReqWs",proxyRes:"onProxyRes",open:"onOpen",close:"onClose"},handlers={};for(let[eventName,onEventName]of Object.entries(proxyEventsMap)){let fnHandler=options?options[onEventName]:null;typeof fnHandler=="function"&&(handlers[eventName]=fnHandler)}return typeof handlers.error!="function"&&(handlers.error=defaultErrorHandler),typeof handlers.close!="function"&&(handlers.close=logClose),handlers}exports2.getHandlers=getHandlers;function defaultErrorHandler(err,req,res){if(!req&&!res)throw err;let host=req.headers&&req.headers.host,code=err.code;if(res.writeHead&&!res.headersSent)if(/HPE_INVALID/.test(code))res.writeHead(502);else switch(code){case"ECONNRESET":case"ENOTFOUND":case"ECONNREFUSED":case"ETIMEDOUT":res.writeHead(504);break;default:res.writeHead(500)}res.end(`Error occurred while trying to proxy: ${host}${req.url}`)}function logClose(req,socket,head){logger.info("[HPM] Client disconnected")}}});var require_path_rewriter=__commonJS({"node_modules/http-proxy-middleware/dist/path-rewriter.js"(exports2){"use strict";Object.defineProperty(exports2,"__esModule",{value:!0});exports2.createPathRewriter=void 0;var isPlainObj=require_is_plain_obj(),errors_1=require_errors3(),logger_1=require_logger(),logger=(0,logger_1.getInstance)();function createPathRewriter(rewriteConfig){let rulesCache;if(!isValidRewriteConfig(rewriteConfig))return;if(typeof rewriteConfig=="function")return rewriteConfig;return rulesCache=parsePathRewriteRules(rewriteConfig),rewritePath;function rewritePath(path){let result=path;for(let rule of rulesCache)if(rule.regex.test(path)){result=result.replace(rule.regex,rule.value),logger.debug('[HPM] Rewriting path from "%s" to "%s"',path,result);break}return result}}exports2.createPathRewriter=createPathRewriter;function isValidRewriteConfig(rewriteConfig){if(typeof rewriteConfig=="function")return!0;if(isPlainObj(rewriteConfig))return Object.keys(rewriteConfig).length!==0;if(rewriteConfig==null)return!1;throw new Error(errors_1.ERRORS.ERR_PATH_REWRITER_CONFIG)}function parsePathRewriteRules(rewriteConfig){let rules=[];if(isPlainObj(rewriteConfig))for(let[key]of Object.entries(rewriteConfig))rules.push({regex:new RegExp(key),value:rewriteConfig[key]}),logger.info('[HPM] Proxy rewrite rule created: "%s" ~> "%s"',key,rewriteConfig[key]);return rules}}});var require_router2=__commonJS({"node_modules/http-proxy-middleware/dist/router.js"(exports2){"use strict";Object.defineProperty(exports2,"__esModule",{value:!0});exports2.getTarget=void 0;var isPlainObj=require_is_plain_obj(),logger_1=require_logger(),logger=(0,logger_1.getInstance)();async function getTarget(req,config){let newTarget,router=config.router;return isPlainObj(router)?newTarget=getTargetFromProxyTable(req,router):typeof router=="function"&&(newTarget=await router(req)),newTarget}exports2.getTarget=getTarget;function getTargetFromProxyTable(req,table){let result,host=req.headers.host||"",path=req.url||"";for(let[key]of Object.entries(table))if(containsPath(key)){if(isHostAndPathKey(key)){let[keyHost,keyPath]=splitHostAndPathKey(key);if(host===keyHost&&path.startsWith(keyPath)){result=table[key],logger.debug('[HPM] Router table match: "%s"',key);break}}else if(path.startsWith(key)){result=table[key],logger.debug('[HPM] Router table match: "%s"',key);break}}else if(key===host){result=table[key],logger.debug('[HPM] Router table match: "%s"',host);break}return result}function containsPath(v){return v.indexOf("/")>-1}function isHostAndPathKey(v){return containsPath(v)&&!v.startsWith("/")}function splitHostAndPathKey(v){let firstSlash=v.indexOf("/");return[v.slice(0,firstSlash),v.slice(firstSlash)]}}});var require_http_proxy_middleware=__commonJS({"node_modules/http-proxy-middleware/dist/http-proxy-middleware.js"(exports2){"use strict";Object.defineProperty(exports2,"__esModule",{value:!0});exports2.HttpProxyMiddleware=void 0;var httpProxy=require_http_proxy3(),config_factory_1=require_config_factory(),contextMatcher=require_context_matcher(),handlers=require_handlers(),logger_1=require_logger(),PathRewriter=require_path_rewriter(),Router=require_router2(),HttpProxyMiddleware=class{constructor(context,opts){this.logger=(0,logger_1.getInstance)(),this.wsInternalSubscribed=!1,this.serverOnCloseSubscribed=!1,this.middleware=async(req,res,next)=>{var _a,_b;if(this.shouldProxy(this.config.context,req))try{let activeProxyOptions=await this.prepareProxyRequest(req);this.proxy.web(req,res,activeProxyOptions)}catch(err){next(err)}else next();let server=(_b=(_a=req.socket)!==null&&_a!==void 0?_a:req.connection)===null||_b===void 0?void 0:_b.server;server&&!this.serverOnCloseSubscribed&&(server.on("close",()=>{this.logger.info("[HPM] server close signal received: closing proxy server"),this.proxy.close()}),this.serverOnCloseSubscribed=!0),this.proxyOptions.ws===!0&&this.catchUpgradeRequest(server)},this.catchUpgradeRequest=server=>{this.wsInternalSubscribed||(server.on("upgrade",this.handleUpgrade),this.wsInternalSubscribed=!0)},this.handleUpgrade=async(req,socket,head)=>{if(this.shouldProxy(this.config.context,req)){let activeProxyOptions=await this.prepareProxyRequest(req);this.proxy.ws(req,socket,head,activeProxyOptions),this.logger.info("[HPM] Upgrading to WebSocket")}},this.shouldProxy=(context2,req)=>{try{let path=req.originalUrl||req.url;return contextMatcher.match(context2,path,req)}catch(error){return this.logger.error(error),!1}},this.prepareProxyRequest=async req=>{req.url=req.originalUrl||req.url;let originalPath=req.url,newProxyOptions=Object.assign({},this.proxyOptions);if(await this.applyRouter(req,newProxyOptions),await this.applyPathRewrite(req,this.pathRewriter),this.proxyOptions.logLevel==="debug"){let arrow=(0,logger_1.getArrow)(originalPath,req.url,this.proxyOptions.target,newProxyOptions.target);this.logger.debug("[HPM] %s %s %s %s",req.method,originalPath,arrow,newProxyOptions.target)}return newProxyOptions},this.applyRouter=async(req,options)=>{let newTarget;options.router&&(newTarget=await Router.getTarget(req,options),newTarget&&(this.logger.debug('[HPM] Router new target: %s -> "%s"',options.target,newTarget),options.target=newTarget))},this.applyPathRewrite=async(req,pathRewriter)=>{if(pathRewriter){let path=await pathRewriter(req.url,req);typeof path=="string"?req.url=path:this.logger.info("[HPM] pathRewrite: No rewritten path found. (%s)",req.url)}},this.logError=(err,req,res,target)=>{var _a;let requestHref=`${((_a=req.headers)===null||_a===void 0?void 0:_a.host)||req.hostname||req.host}${req.url}`,targetHref=`${target?.href}`;this.logger.error("[HPM] Error occurred while proxying request %s to %s [%s] (%s)",requestHref,targetHref,err.code||err,"https://nodejs.org/api/errors.html#errors_common_system_errors")},this.config=(0,config_factory_1.createConfig)(context,opts),this.proxyOptions=this.config.options,this.proxy=httpProxy.createProxyServer({}),this.logger.info(`[HPM] Proxy created: ${this.config.context} -> ${this.proxyOptions.target}`),this.pathRewriter=PathRewriter.createPathRewriter(this.proxyOptions.pathRewrite),handlers.init(this.proxy,this.proxyOptions),this.proxy.on("error",this.logError),this.middleware.upgrade=(req,socket,head)=>{this.wsInternalSubscribed||this.handleUpgrade(req,socket,head)}}};exports2.HttpProxyMiddleware=HttpProxyMiddleware}});var require_response_interceptor=__commonJS({"node_modules/http-proxy-middleware/dist/handlers/response-interceptor.js"(exports2){"use strict";Object.defineProperty(exports2,"__esModule",{value:!0});exports2.responseInterceptor=void 0;var zlib=require("zlib");function responseInterceptor(interceptor){return async function(proxyRes,req,res){let originalProxyRes=proxyRes,buffer=Buffer.from("","utf8"),_proxyRes=decompress(proxyRes,proxyRes.headers["content-encoding"]);_proxyRes.on("data",chunk=>buffer=Buffer.concat([buffer,chunk])),_proxyRes.on("end",async()=>{copyHeaders(proxyRes,res);let interceptedBuffer=Buffer.from(await interceptor(buffer,originalProxyRes,req,res));res.setHeader("content-length",Buffer.byteLength(interceptedBuffer,"utf8")),res.write(interceptedBuffer),res.end()}),_proxyRes.on("error",error=>{res.end(`Error fetching proxied request: ${error.message}`)})}}exports2.responseInterceptor=responseInterceptor;function decompress(proxyRes,contentEncoding){let _proxyRes=proxyRes,decompress2;switch(contentEncoding){case"gzip":decompress2=zlib.createGunzip();break;case"br":decompress2=zlib.createBrotliDecompress();break;case"deflate":decompress2=zlib.createInflate();break;default:break}return decompress2&&(_proxyRes.pipe(decompress2),_proxyRes=decompress2),_proxyRes}function copyHeaders(originalResponse,response){if(response.statusCode=originalResponse.statusCode,response.statusMessage=originalResponse.statusMessage,response.setHeader){let keys=Object.keys(originalResponse.headers);keys=keys.filter(key=>!["content-encoding","transfer-encoding"].includes(key)),keys.forEach(key=>{let value=originalResponse.headers[key];key==="set-cookie"&&(value=Array.isArray(value)?value:[value],value=value.map(x=>x.replace(/Domain=[^;]+?/i,""))),response.setHeader(key,value)})}else response.headers=originalResponse.headers}}});var require_fix_request_body=__commonJS({"node_modules/http-proxy-middleware/dist/handlers/fix-request-body.js"(exports2){"use strict";Object.defineProperty(exports2,"__esModule",{value:!0});exports2.fixRequestBody=void 0;var querystring=require("querystring");function fixRequestBody(proxyReq,req){if(req.readableLength!==0)return;let requestBody=req.body;if(!requestBody)return;let contentType=proxyReq.getHeader("Content-Type");if(!contentType)return;let writeBody=bodyData=>{proxyReq.setHeader("Content-Length",Buffer.byteLength(bodyData)),proxyReq.write(bodyData)};contentType.includes("application/json")?writeBody(JSON.stringify(requestBody)):contentType.includes("application/x-www-form-urlencoded")&&writeBody(querystring.stringify(requestBody))}exports2.fixRequestBody=fixRequestBody}});var require_public=__commonJS({"node_modules/http-proxy-middleware/dist/handlers/public.js"(exports2){"use strict";Object.defineProperty(exports2,"__esModule",{value:!0});exports2.fixRequestBody=exports2.responseInterceptor=void 0;var response_interceptor_1=require_response_interceptor();Object.defineProperty(exports2,"responseInterceptor",{enumerable:!0,get:function(){return response_interceptor_1.responseInterceptor}});var fix_request_body_1=require_fix_request_body();Object.defineProperty(exports2,"fixRequestBody",{enumerable:!0,get:function(){return fix_request_body_1.fixRequestBody}})}});var require_handlers2=__commonJS({"node_modules/http-proxy-middleware/dist/handlers/index.js"(exports2){"use strict";var __createBinding=exports2&&exports2.__createBinding||(Object.create?(function(o,m,k,k2){k2===void 0&&(k2=k),Object.defineProperty(o,k2,{enumerable:!0,get:function(){return m[k]}})}):(function(o,m,k,k2){k2===void 0&&(k2=k),o[k2]=m[k]})),__exportStar=exports2&&exports2.__exportStar||function(m,exports3){for(var p in m)p!=="default"&&!Object.prototype.hasOwnProperty.call(exports3,p)&&__createBinding(exports3,m,p)};Object.defineProperty(exports2,"__esModule",{value:!0});__exportStar(require_public(),exports2)}});var require_dist2=__commonJS({"node_modules/http-proxy-middleware/dist/index.js"(exports2){"use strict";var __createBinding=exports2&&exports2.__createBinding||(Object.create?(function(o,m,k,k2){k2===void 0&&(k2=k),Object.defineProperty(o,k2,{enumerable:!0,get:function(){return m[k]}})}):(function(o,m,k,k2){k2===void 0&&(k2=k),o[k2]=m[k]})),__exportStar=exports2&&exports2.__exportStar||function(m,exports3){for(var p in m)p!=="default"&&!Object.prototype.hasOwnProperty.call(exports3,p)&&__createBinding(exports3,m,p)};Object.defineProperty(exports2,"__esModule",{value:!0});exports2.createProxyMiddleware=void 0;var http_proxy_middleware_1=require_http_proxy_middleware();function createProxyMiddleware(context,options){let{middleware}=new http_proxy_middleware_1.HttpProxyMiddleware(context,options);return middleware}exports2.createProxyMiddleware=createProxyMiddleware;__exportStar(require_handlers2(),exports2)}});var require_base64id=__commonJS({"node_modules/base64id/lib/base64id.js"(exports2,module2){var crypto=require("crypto"),Base64Id=function(){};Base64Id.prototype.getRandomBytes=function(bytes){var BUFFER_SIZE=4096,self2=this;if(bytes=bytes||12,bytes>BUFFER_SIZE)return crypto.randomBytes(bytes);var bytesInBuffer=parseInt(BUFFER_SIZE/bytes),threshold=parseInt(bytesInBuffer*.85);if(!threshold||(this.bytesBufferIndex==null&&(this.bytesBufferIndex=-1),this.bytesBufferIndex==bytesInBuffer&&(this.bytesBuffer=null,this.bytesBufferIndex=-1),(this.bytesBufferIndex==-1||this.bytesBufferIndex>threshold)&&(this.isGeneratingBytes||(this.isGeneratingBytes=!0,crypto.randomBytes(BUFFER_SIZE,function(err,bytes2){self2.bytesBuffer=bytes2,self2.bytesBufferIndex=0,self2.isGeneratingBytes=!1})),this.bytesBufferIndex==-1)))return crypto.randomBytes(bytes);var result=this.bytesBuffer.slice(bytes*this.bytesBufferIndex,bytes*(this.bytesBufferIndex+1));return this.bytesBufferIndex++,result};Base64Id.prototype.generateId=function(){var rand=Buffer.alloc(15);return rand.writeInt32BE?(this.sequenceNumber=this.sequenceNumber+1|0,rand.writeInt32BE(this.sequenceNumber,11),crypto.randomBytes?this.getRandomBytes(12).copy(rand):[0,4,8].forEach(function(i){rand.writeInt32BE(Math.random()*Math.pow(2,32)|0,i)}),rand.toString("base64").replace(/\//g,"_").replace(/\+/g,"-")):Math.abs(Math.random()*Math.random()*Date.now()|0).toString()+Math.abs(Math.random()*Math.random()*Date.now()|0).toString()};exports2=module2.exports=new Base64Id}});var require_commons=__commonJS({"node_modules/engine.io-parser/build/cjs/commons.js"(exports2){"use strict";Object.defineProperty(exports2,"__esModule",{value:!0});exports2.ERROR_PACKET=exports2.PACKET_TYPES_REVERSE=exports2.PACKET_TYPES=void 0;var PACKET_TYPES=Object.create(null);exports2.PACKET_TYPES=PACKET_TYPES;PACKET_TYPES.open="0";PACKET_TYPES.close="1";PACKET_TYPES.ping="2";PACKET_TYPES.pong="3";PACKET_TYPES.message="4";PACKET_TYPES.upgrade="5";PACKET_TYPES.noop="6";var PACKET_TYPES_REVERSE=Object.create(null);exports2.PACKET_TYPES_REVERSE=PACKET_TYPES_REVERSE;Object.keys(PACKET_TYPES).forEach(key=>{PACKET_TYPES_REVERSE[PACKET_TYPES[key]]=key});var ERROR_PACKET={type:"error",data:"parser error"};exports2.ERROR_PACKET=ERROR_PACKET}});var require_encodePacket=__commonJS({"node_modules/engine.io-parser/build/cjs/encodePacket.js"(exports2){"use strict";Object.defineProperty(exports2,"__esModule",{value:!0});exports2.encodePacket=void 0;exports2.encodePacketToBinary=encodePacketToBinary;var commons_js_1=require_commons(),encodePacket=({type,data},supportsBinary,callback)=>data instanceof ArrayBuffer||ArrayBuffer.isView(data)?callback(supportsBinary?data:"b"+toBuffer(data,!0).toString("base64")):callback(commons_js_1.PACKET_TYPES[type]+(data||""));exports2.encodePacket=encodePacket;var toBuffer=(data,forceBufferConversion)=>Buffer.isBuffer(data)||data instanceof Uint8Array&&!forceBufferConversion?data:data instanceof ArrayBuffer?Buffer.from(data):Buffer.from(data.buffer,data.byteOffset,data.byteLength),TEXT_ENCODER;function encodePacketToBinary(packet,callback){if(packet.data instanceof ArrayBuffer||ArrayBuffer.isView(packet.data))return callback(toBuffer(packet.data,!1));(0,exports2.encodePacket)(packet,!0,encoded=>{TEXT_ENCODER||(TEXT_ENCODER=new TextEncoder),callback(TEXT_ENCODER.encode(encoded))})}}});var require_decodePacket=__commonJS({"node_modules/engine.io-parser/build/cjs/decodePacket.js"(exports2){"use strict";Object.defineProperty(exports2,"__esModule",{value:!0});exports2.decodePacket=void 0;var commons_js_1=require_commons(),decodePacket=(encodedPacket,binaryType)=>{if(typeof encodedPacket!="string")return{type:"message",data:mapBinary(encodedPacket,binaryType)};let type=encodedPacket.charAt(0);if(type==="b"){let buffer=Buffer.from(encodedPacket.substring(1),"base64");return{type:"message",data:mapBinary(buffer,binaryType)}}return commons_js_1.PACKET_TYPES_REVERSE[type]?encodedPacket.length>1?{type:commons_js_1.PACKET_TYPES_REVERSE[type],data:encodedPacket.substring(1)}:{type:commons_js_1.PACKET_TYPES_REVERSE[type]}:commons_js_1.ERROR_PACKET};exports2.decodePacket=decodePacket;var mapBinary=(data,binaryType)=>binaryType==="arraybuffer"?data instanceof ArrayBuffer?data:Buffer.isBuffer(data)?data.buffer.slice(data.byteOffset,data.byteOffset+data.byteLength):data.buffer:Buffer.isBuffer(data)?data:Buffer.from(data)}});var require_cjs2=__commonJS({"node_modules/engine.io-parser/build/cjs/index.js"(exports2){"use strict";Object.defineProperty(exports2,"__esModule",{value:!0});exports2.decodePayload=exports2.decodePacket=exports2.encodePayload=exports2.encodePacket=exports2.protocol=void 0;exports2.createPacketEncoderStream=createPacketEncoderStream;exports2.createPacketDecoderStream=createPacketDecoderStream;var encodePacket_js_1=require_encodePacket();Object.defineProperty(exports2,"encodePacket",{enumerable:!0,get:function(){return encodePacket_js_1.encodePacket}});var decodePacket_js_1=require_decodePacket();Object.defineProperty(exports2,"decodePacket",{enumerable:!0,get:function(){return decodePacket_js_1.decodePacket}});var commons_js_1=require_commons(),SEPARATOR="",encodePayload=(packets,callback)=>{let length=packets.length,encodedPackets=new Array(length),count=0;packets.forEach((packet,i)=>{(0,encodePacket_js_1.encodePacket)(packet,!1,encodedPacket=>{encodedPackets[i]=encodedPacket,++count===length&&callback(encodedPackets.join(SEPARATOR))})})};exports2.encodePayload=encodePayload;var decodePayload=(encodedPayload,binaryType)=>{let encodedPackets=encodedPayload.split(SEPARATOR),packets=[];for(let i=0;i<encodedPackets.length;i++){let decodedPacket=(0,decodePacket_js_1.decodePacket)(encodedPackets[i],binaryType);if(packets.push(decodedPacket),decodedPacket.type==="error")break}return packets};exports2.decodePayload=decodePayload;function createPacketEncoderStream(){return new TransformStream({transform(packet,controller){(0,encodePacket_js_1.encodePacketToBinary)(packet,encodedPacket=>{let payloadLength=encodedPacket.length,header;if(payloadLength<126)header=new Uint8Array(1),new DataView(header.buffer).setUint8(0,payloadLength);else if(payloadLength<65536){header=new Uint8Array(3);let view=new DataView(header.buffer);view.setUint8(0,126),view.setUint16(1,payloadLength)}else{header=new Uint8Array(9);let view=new DataView(header.buffer);view.setUint8(0,127),view.setBigUint64(1,BigInt(payloadLength))}packet.data&&typeof packet.data!="string"&&(header[0]|=128),controller.enqueue(header),controller.enqueue(encodedPacket)})}})}var TEXT_DECODER;function totalLength(chunks){return chunks.reduce((acc,chunk)=>acc+chunk.length,0)}function concatChunks(chunks,size){if(chunks[0].length===size)return chunks.shift();let buffer=new Uint8Array(size),j=0;for(let i=0;i<size;i++)buffer[i]=chunks[0][j++],j===chunks[0].length&&(chunks.shift(),j=0);return chunks.length&&j<chunks[0].length&&(chunks[0]=chunks[0].slice(j)),buffer}function createPacketDecoderStream(maxPayload,binaryType){TEXT_DECODER||(TEXT_DECODER=new TextDecoder);let chunks=[],state=0,expectedLength=-1,isBinary=!1;return new TransformStream({transform(chunk,controller){for(chunks.push(chunk);;){if(state===0){if(totalLength(chunks)<1)break;let header=concatChunks(chunks,1);isBinary=(header[0]&128)===128,expectedLength=header[0]&127,expectedLength<126?state=3:expectedLength===126?state=1:state=2}else if(state===1){if(totalLength(chunks)<2)break;let headerArray=concatChunks(chunks,2);expectedLength=new DataView(headerArray.buffer,headerArray.byteOffset,headerArray.length).getUint16(0),state=3}else if(state===2){if(totalLength(chunks)<8)break;let headerArray=concatChunks(chunks,8),view=new DataView(headerArray.buffer,headerArray.byteOffset,headerArray.length),n=view.getUint32(0);if(n>Math.pow(2,21)-1){controller.enqueue(commons_js_1.ERROR_PACKET);break}expectedLength=n*Math.pow(2,32)+view.getUint32(4),state=3}else{if(totalLength(chunks)<expectedLength)break;let data=concatChunks(chunks,expectedLength);controller.enqueue((0,decodePacket_js_1.decodePacket)(isBinary?data:TEXT_DECODER.decode(data),binaryType)),state=0}if(expectedLength===0||expectedLength>maxPayload){controller.enqueue(commons_js_1.ERROR_PACKET);break}}}})}exports2.protocol=4}});var require_utf8=__commonJS({"node_modules/engine.io/build/parser-v3/utf8.js"(exports2,module2){var stringFromCharCode=String.fromCharCode;function ucs2decode(string){for(var output=[],counter=0,length=string.length,value,extra;counter<length;)value=string.charCodeAt(counter++),value>=55296&&value<=56319&&counter<length?(extra=string.charCodeAt(counter++),(extra&64512)==56320?output.push(((value&1023)<<10)+(extra&1023)+65536):(output.push(value),counter--)):output.push(value);return output}function ucs2encode(array){for(var length=array.length,index=-1,value,output="";++index<length;)value=array[index],value>65535&&(value-=65536,output+=stringFromCharCode(value>>>10&1023|55296),value=56320|value&1023),output+=stringFromCharCode(value);return output}function checkScalarValue(codePoint,strict){if(codePoint>=55296&&codePoint<=57343){if(strict)throw Error("Lone surrogate U+"+codePoint.toString(16).toUpperCase()+" is not a scalar value");return!1}return!0}function createByte(codePoint,shift){return stringFromCharCode(codePoint>>shift&63|128)}function encodeCodePoint(codePoint,strict){if((codePoint&4294967168)==0)return stringFromCharCode(codePoint);var symbol="";return(codePoint&4294965248)==0?symbol=stringFromCharCode(codePoint>>6&31|192):(codePoint&4294901760)==0?(checkScalarValue(codePoint,strict)||(codePoint=65533),symbol=stringFromCharCode(codePoint>>12&15|224),symbol+=createByte(codePoint,6)):(codePoint&4292870144)==0&&(symbol=stringFromCharCode(codePoint>>18&7|240),symbol+=createByte(codePoint,12),symbol+=createByte(codePoint,6)),symbol+=stringFromCharCode(codePoint&63|128),symbol}function utf8encode(string,opts){opts=opts||{};for(var strict=opts.strict!==!1,codePoints=ucs2decode(string),length=codePoints.length,index=-1,codePoint,byteString="";++index<length;)codePoint=codePoints[index],byteString+=encodeCodePoint(codePoint,strict);return byteString}function readContinuationByte(){if(byteIndex>=byteCount)throw Error("Invalid byte index");var continuationByte=byteArray[byteIndex]&255;if(byteIndex++,(continuationByte&192)==128)return continuationByte&63;throw Error("Invalid continuation byte")}function decodeSymbol(strict){var byte1,byte2,byte3,byte4,codePoint;if(byteIndex>byteCount)throw Error("Invalid byte index");if(byteIndex==byteCount)return!1;if(byte1=byteArray[byteIndex]&255,byteIndex++,(byte1&128)==0)return byte1;if((byte1&224)==192){if(byte2=readContinuationByte(),codePoint=(byte1&31)<<6|byte2,codePoint>=128)return codePoint;throw Error("Invalid continuation byte")}if((byte1&240)==224){if(byte2=readContinuationByte(),byte3=readContinuationByte(),codePoint=(byte1&15)<<12|byte2<<6|byte3,codePoint>=2048)return checkScalarValue(codePoint,strict)?codePoint:65533;throw Error("Invalid continuation byte")}if((byte1&248)==240&&(byte2=readContinuationByte(),byte3=readContinuationByte(),byte4=readContinuationByte(),codePoint=(byte1&7)<<18|byte2<<12|byte3<<6|byte4,codePoint>=65536&&codePoint<=1114111))return codePoint;throw Error("Invalid UTF-8 detected")}var byteArray,byteCount,byteIndex;function utf8decode(byteString,opts){opts=opts||{};var strict=opts.strict!==!1;byteArray=ucs2decode(byteString),byteCount=byteArray.length,byteIndex=0;for(var codePoints=[],tmp;(tmp=decodeSymbol(strict))!==!1;)codePoints.push(tmp);return ucs2encode(codePoints)}module2.exports={version:"2.1.2",encode:utf8encode,decode:utf8decode}}});var require_parser_v3=__commonJS({"node_modules/engine.io/build/parser-v3/index.js"(exports2){"use strict";Object.defineProperty(exports2,"__esModule",{value:!0});exports2.packets=exports2.protocol=void 0;exports2.encodePacket=encodePacket;exports2.encodeBase64Packet=encodeBase64Packet;exports2.decodePacket=decodePacket;exports2.decodeBase64Packet=decodeBase64Packet;exports2.encodePayload=encodePayload;exports2.decodePayload=decodePayload;exports2.encodePayloadAsBinary=encodePayloadAsBinary;exports2.decodePayloadAsBinary=decodePayloadAsBinary;var utf8=require_utf8();exports2.protocol=3;var hasBinary=packets=>{for(let packet of packets)if(packet.data instanceof ArrayBuffer||ArrayBuffer.isView(packet.data))return!0;return!1};exports2.packets={open:0,close:1,ping:2,pong:3,message:4,upgrade:5,noop:6};var packetslist=Object.keys(exports2.packets),err={type:"error",data:"parser error"},EMPTY_BUFFER=Buffer.concat([]);function encodePacket(packet,supportsBinary,utf8encode,callback){if(typeof supportsBinary=="function"&&(callback=supportsBinary,supportsBinary=null),typeof utf8encode=="function"&&(callback=utf8encode,utf8encode=null),Buffer.isBuffer(packet.data))return encodeBuffer(packet,supportsBinary,callback);if(packet.data&&(packet.data.buffer||packet.data)instanceof ArrayBuffer)return encodeBuffer({type:packet.type,data:arrayBufferToBuffer(packet.data)},supportsBinary,callback);var encoded=exports2.packets[packet.type];return packet.data!==void 0&&(encoded+=utf8encode?utf8.encode(String(packet.data),{strict:!1}):String(packet.data)),callback(""+encoded)}function encodeBuffer(packet,supportsBinary,callback){if(!supportsBinary)return encodeBase64Packet(packet,callback);var data=packet.data,typeBuffer=Buffer.allocUnsafe(1);return typeBuffer[0]=exports2.packets[packet.type],callback(Buffer.concat([typeBuffer,data]))}function encodeBase64Packet(packet,callback){var data=Buffer.isBuffer(packet.data)?packet.data:arrayBufferToBuffer(packet.data),message="b"+exports2.packets[packet.type];return message+=data.toString("base64"),callback(message)}function decodePacket(data,binaryType,utf8decode){if(data===void 0)return err;let type;if(typeof data=="string")return type=data.charAt(0),type==="b"?decodeBase64Packet(data.slice(1),binaryType):utf8decode&&(data=tryDecode(data),data===!1)||Number(type)!=type||!packetslist[type]?err:data.length>1?{type:packetslist[type],data:data.slice(1)}:{type:packetslist[type]};if(binaryType==="arraybuffer"){var intArray=new Uint8Array(data);return type=intArray[0],{type:packetslist[type],data:intArray.buffer.slice(1)}}return data instanceof ArrayBuffer&&(data=arrayBufferToBuffer(data)),type=data[0],{type:packetslist[type],data:data.slice(1)}}function tryDecode(data){try{data=utf8.decode(data,{strict:!1})}catch{return!1}return data}function decodeBase64Packet(msg,binaryType){var type=packetslist[msg.charAt(0)],data=Buffer.from(msg.slice(1),"base64");if(binaryType==="arraybuffer"){for(var abv=new Uint8Array(data.length),i=0;i<abv.length;i++)abv[i]=data[i];data=abv.buffer}return{type,data}}function encodePayload(packets,supportsBinary,callback){if(typeof supportsBinary=="function"&&(callback=supportsBinary,supportsBinary=null),supportsBinary&&hasBinary(packets))return encodePayloadAsBinary(packets,callback);if(!packets.length)return callback("0:");function encodeOne(packet,doneCallback){encodePacket(packet,supportsBinary,!1,function(message){doneCallback(null,setLengthHeader(message))})}map(packets,encodeOne,function(err2,results){return callback(results.join(""))})}function setLengthHeader(message){return message.length+":"+message}function map(ary,each,done){let results=new Array(ary.length),count=0;for(let i=0;i<ary.length;i++)each(ary[i],(error,msg)=>{results[i]=msg,++count===ary.length&&done(null,results)})}function decodePayload(data,binaryType,callback){if(typeof data!="string")return decodePayloadAsBinary(data,binaryType,callback);if(typeof binaryType=="function"&&(callback=binaryType,binaryType=null),data==="")return callback(err,0,1);for(var length="",n,msg,packet,i=0,l=data.length;i<l;i++){var chr=data.charAt(i);if(chr!==":"){length+=chr;continue}if(length===""||length!=(n=Number(length))||(msg=data.slice(i+1,i+1+n),length!=msg.length))return callback(err,0,1);if(msg.length){if(packet=decodePacket(msg,binaryType,!1),err.type===packet.type&&err.data===packet.data)return callback(err,0,1);var more=callback(packet,i+n,l);if(more===!1)return}i+=n,length=""}if(length!=="")return callback(err,0,1)}function bufferToString(buffer){for(var str="",i=0,l=buffer.length;i<l;i++)str+=String.fromCharCode(buffer[i]);return str}function stringToBuffer(string){for(var buf=Buffer.allocUnsafe(string.length),i=0,l=string.length;i<l;i++)buf.writeUInt8(string.charCodeAt(i),i);return buf}function arrayBufferToBuffer(data){var length=data.byteLength||data.length,offset=data.byteOffset||0;return Buffer.from(data.buffer||data,offset,length)}function encodePayloadAsBinary(packets,callback){if(!packets.length)return callback(EMPTY_BUFFER);map(packets,encodeOneBinaryPacket,function(err2,results){return callback(Buffer.concat(results))})}function encodeOneBinaryPacket(p,doneCallback){function onBinaryPacketEncode(packet){var encodingLength=""+packet.length,sizeBuffer;if(typeof packet=="string"){sizeBuffer=Buffer.allocUnsafe(encodingLength.length+2),sizeBuffer[0]=0;for(var i=0;i<encodingLength.length;i++)sizeBuffer[i+1]=parseInt(encodingLength[i],10);return sizeBuffer[sizeBuffer.length-1]=255,doneCallback(null,Buffer.concat([sizeBuffer,stringToBuffer(packet)]))}sizeBuffer=Buffer.allocUnsafe(encodingLength.length+2),sizeBuffer[0]=1;for(var i=0;i<encodingLength.length;i++)sizeBuffer[i+1]=parseInt(encodingLength[i],10);sizeBuffer[sizeBuffer.length-1]=255,doneCallback(null,Buffer.concat([sizeBuffer,packet]))}encodePacket(p,!0,!0,onBinaryPacketEncode)}function decodePayloadAsBinary(data,binaryType,callback){typeof binaryType=="function"&&(callback=binaryType,binaryType=null);for(var bufferTail=data,buffers=[],i;bufferTail.length>0;){var strLen="",isString=bufferTail[0]===0;for(i=1;bufferTail[i]!==255;i++){if(strLen.length>310)return callback(err,0,1);strLen+=""+bufferTail[i]}bufferTail=bufferTail.slice(strLen.length+1);var msgLength=parseInt(strLen,10),msg=bufferTail.slice(1,msgLength+1);isString&&(msg=bufferToString(msg)),buffers.push(msg),bufferTail=bufferTail.slice(msgLength+1)}var total=buffers.length;for(i=0;i<total;i++){var buffer=buffers[i];callback(decodePacket(buffer,binaryType,!0),i,total)}}}});var require_common4=__commonJS({"node_modules/engine.io/node_modules/debug/src/common.js"(exports2,module2){function setup(env){createDebug.debug=createDebug,createDebug.default=createDebug,createDebug.coerce=coerce,createDebug.disable=disable,createDebug.enable=enable,createDebug.enabled=enabled,createDebug.humanize=require_ms5(),createDebug.destroy=destroy,Object.keys(env).forEach(key=>{createDebug[key]=env[key]}),createDebug.names=[],createDebug.skips=[],createDebug.formatters={};function selectColor(namespace){let hash=0;for(let i=0;i<namespace.length;i++)hash=(hash<<5)-hash+namespace.charCodeAt(i),hash|=0;return createDebug.colors[Math.abs(hash)%createDebug.colors.length]}createDebug.selectColor=selectColor;function createDebug(namespace){let prevTime,enableOverride=null,namespacesCache,enabledCache;function debug(...args){if(!debug.enabled)return;let self2=debug,curr=Number(new Date),ms=curr-(prevTime||curr);self2.diff=ms,self2.prev=prevTime,self2.curr=curr,prevTime=curr,args[0]=createDebug.coerce(args[0]),typeof args[0]!="string"&&args.unshift("%O");let index=0;args[0]=args[0].replace(/%([a-zA-Z%])/g,(match,format)=>{if(match==="%%")return"%";index++;let formatter=createDebug.formatters[format];if(typeof formatter=="function"){let val=args[index];match=formatter.call(self2,val),args.splice(index,1),index--}return match}),createDebug.formatArgs.call(self2,args),(self2.log||createDebug.log).apply(self2,args)}return debug.namespace=namespace,debug.useColors=createDebug.useColors(),debug.color=createDebug.selectColor(namespace),debug.extend=extend,debug.destroy=createDebug.destroy,Object.defineProperty(debug,"enabled",{enumerable:!0,configurable:!1,get:()=>enableOverride!==null?enableOverride:(namespacesCache!==createDebug.namespaces&&(namespacesCache=createDebug.namespaces,enabledCache=createDebug.enabled(namespace)),enabledCache),set:v=>{enableOverride=v}}),typeof createDebug.init=="function"&&createDebug.init(debug),debug}function extend(namespace,delimiter){let newDebug=createDebug(this.namespace+(typeof delimiter>"u"?":":delimiter)+namespace);return newDebug.log=this.log,newDebug}function enable(namespaces){createDebug.save(namespaces),createDebug.namespaces=namespaces,createDebug.names=[],createDebug.skips=[];let split=(typeof namespaces=="string"?namespaces:"").trim().replace(/\s+/g,",").split(",").filter(Boolean);for(let ns of split)ns[0]==="-"?createDebug.skips.push(ns.slice(1)):createDebug.names.push(ns)}function matchesTemplate(search,template){let searchIndex=0,templateIndex=0,starIndex=-1,matchIndex=0;for(;searchIndex<search.length;)if(templateIndex<template.length&&(template[templateIndex]===search[searchIndex]||template[templateIndex]==="*"))template[templateIndex]==="*"?(starIndex=templateIndex,matchIndex=searchIndex,templateIndex++):(searchIndex++,templateIndex++);else if(starIndex!==-1)templateIndex=starIndex+1,matchIndex++,searchIndex=matchIndex;else return!1;for(;templateIndex<template.length&&template[templateIndex]==="*";)templateIndex++;return templateIndex===template.length}function disable(){let namespaces=[...createDebug.names,...createDebug.skips.map(namespace=>"-"+namespace)].join(",");return createDebug.enable(""),namespaces}function enabled(name){for(let skip of createDebug.skips)if(matchesTemplate(name,skip))return!1;for(let ns of createDebug.names)if(matchesTemplate(name,ns))return!0;return!1}function coerce(val){return val instanceof Error?val.stack||val.message:val}function destroy(){console.warn("Instance method `debug.destroy()` is deprecated and no longer does anything. It will be removed in the next major version of `debug`.")}return createDebug.enable(createDebug.load()),createDebug}module2.exports=setup}});var require_browser7=__commonJS({"node_modules/engine.io/node_modules/debug/src/browser.js"(exports2,module2){exports2.formatArgs=formatArgs;exports2.save=save;exports2.load=load2;exports2.useColors=useColors;exports2.storage=localstorage();exports2.destroy=(()=>{let warned=!1;return()=>{warned||(warned=!0,console.warn("Instance method `debug.destroy()` is deprecated and no longer does anything. It will be removed in the next major version of `debug`."))}})();exports2.colors=["#0000CC","#0000FF","#0033CC","#0033FF","#0066CC","#0066FF","#0099CC","#0099FF","#00CC00","#00CC33","#00CC66","#00CC99","#00CCCC","#00CCFF","#3300CC","#3300FF","#3333CC","#3333FF","#3366CC","#3366FF","#3399CC","#3399FF","#33CC00","#33CC33","#33CC66","#33CC99","#33CCCC","#33CCFF","#6600CC","#6600FF","#6633CC","#6633FF","#66CC00","#66CC33","#9900CC","#9900FF","#9933CC","#9933FF","#99CC00","#99CC33","#CC0000","#CC0033","#CC0066","#CC0099","#CC00CC","#CC00FF","#CC3300","#CC3333","#CC3366","#CC3399","#CC33CC","#CC33FF","#CC6600","#CC6633","#CC9900","#CC9933","#CCCC00","#CCCC33","#FF0000","#FF0033","#FF0066","#FF0099","#FF00CC","#FF00FF","#FF3300","#FF3333","#FF3366","#FF3399","#FF33CC","#FF33FF","#FF6600","#FF6633","#FF9900","#FF9933","#FFCC00","#FFCC33"];function useColors(){if(typeof window<"u"&&window.process&&(window.process.type==="renderer"||window.process.__nwjs))return!0;if(typeof navigator<"u"&&navigator.userAgent&&navigator.userAgent.toLowerCase().match(/(edge|trident)\/(\d+)/))return!1;let m;return typeof document<"u"&&document.documentElement&&document.documentElement.style&&document.documentElement.style.WebkitAppearance||typeof window<"u"&&window.console&&(window.console.firebug||window.console.exception&&window.console.table)||typeof navigator<"u"&&navigator.userAgent&&(m=navigator.userAgent.toLowerCase().match(/firefox\/(\d+)/))&&parseInt(m[1],10)>=31||typeof navigator<"u"&&navigator.userAgent&&navigator.userAgent.toLowerCase().match(/applewebkit\/(\d+)/)}function formatArgs(args){if(args[0]=(this.useColors?"%c":"")+this.namespace+(this.useColors?" %c":" ")+args[0]+(this.useColors?"%c ":" ")+"+"+module2.exports.humanize(this.diff),!this.useColors)return;let c="color: "+this.color;args.splice(1,0,c,"color: inherit");let index=0,lastC=0;args[0].replace(/%[a-zA-Z%]/g,match=>{match!=="%%"&&(index++,match==="%c"&&(lastC=index))}),args.splice(lastC,0,c)}exports2.log=console.debug||console.log||(()=>{});function save(namespaces){try{namespaces?exports2.storage.setItem("debug",namespaces):exports2.storage.removeItem("debug")}catch{}}function load2(){let r;try{r=exports2.storage.getItem("debug")||exports2.storage.getItem("DEBUG")}catch{}return!r&&typeof process<"u"&&"env"in process&&(r=process.env.DEBUG),r}function localstorage(){try{return localStorage}catch{}}module2.exports=require_common4()(exports2);var{formatters}=module2.exports;formatters.j=function(v){try{return JSON.stringify(v)}catch(error){return"[UnexpectedJSONParseError]: "+error.message}}}});var require_node7=__commonJS({"node_modules/engine.io/node_modules/debug/src/node.js"(exports2,module2){var tty=require("tty"),util=require("util");exports2.init=init;exports2.log=log;exports2.formatArgs=formatArgs;exports2.save=save;exports2.load=load2;exports2.useColors=useColors;exports2.destroy=util.deprecate(()=>{},"Instance method `debug.destroy()` is deprecated and no longer does anything. It will be removed in the next major version of `debug`.");exports2.colors=[6,2,3,4,5,1];try{let supportsColor=require_supports_color();supportsColor&&(supportsColor.stderr||supportsColor).level>=2&&(exports2.colors=[20,21,26,27,32,33,38,39,40,41,42,43,44,45,56,57,62,63,68,69,74,75,76,77,78,79,80,81,92,93,98,99,112,113,128,129,134,135,148,149,160,161,162,163,164,165,166,167,168,169,170,171,172,173,178,179,184,185,196,197,198,199,200,201,202,203,204,205,206,207,208,209,214,215,220,221])}catch{}exports2.inspectOpts=Object.keys(process.env).filter(key=>/^debug_/i.test(key)).reduce((obj,key)=>{let prop=key.substring(6).toLowerCase().replace(/_([a-z])/g,(_,k)=>k.toUpperCase()),val=process.env[key];return/^(yes|on|true|enabled)$/i.test(val)?val=!0:/^(no|off|false|disabled)$/i.test(val)?val=!1:val==="null"?val=null:val=Number(val),obj[prop]=val,obj},{});function useColors(){return"colors"in exports2.inspectOpts?!!exports2.inspectOpts.colors:tty.isatty(process.stderr.fd)}function formatArgs(args){let{namespace:name,useColors:useColors2}=this;if(useColors2){let c=this.color,colorCode="\x1B[3"+(c<8?c:"8;5;"+c),prefix=` ${colorCode};1m${name} \x1B[0m`;args[0]=prefix+args[0].split(`
|
|
248
251
|
`).join(`
|
|
249
252
|
`+prefix),args.push(colorCode+"m+"+module2.exports.humanize(this.diff)+"\x1B[0m")}else args[0]=getDate()+name+" "+args[0]}function getDate(){return exports2.inspectOpts.hideDate?"":new Date().toISOString()+" "}function log(...args){return process.stderr.write(util.formatWithOptions(exports2.inspectOpts,...args)+`
|
|
250
253
|
`)}function save(namespaces){namespaces?process.env.DEBUG=namespaces:delete process.env.DEBUG}function load2(){return process.env.DEBUG}function init(debug){debug.inspectOpts={};let keys=Object.keys(exports2.inspectOpts);for(let i=0;i<keys.length;i++)debug.inspectOpts[keys[i]]=exports2.inspectOpts[keys[i]]}module2.exports=require_common4()(exports2);var{formatters}=module2.exports;formatters.o=function(v){return this.inspectOpts.colors=this.useColors,util.inspect(v,this.inspectOpts).split(`
|
|
251
254
|
`).map(str=>str.trim()).join(" ")};formatters.O=function(v){return this.inspectOpts.colors=this.useColors,util.inspect(v,this.inspectOpts)}}});var require_src7=__commonJS({"node_modules/engine.io/node_modules/debug/src/index.js"(exports2,module2){typeof process>"u"||process.type==="renderer"||process.browser===!0||process.__nwjs?module2.exports=require_browser7():module2.exports=require_node7()}});var require_transport=__commonJS({"node_modules/engine.io/build/transport.js"(exports2){"use strict";Object.defineProperty(exports2,"__esModule",{value:!0});exports2.Transport=void 0;var events_1=require("events"),parser_v4=require_cjs2(),parser_v3=require_parser_v3(),debug_1=require_src7(),debug=(0,debug_1.default)("engine:transport");function noop(){}var Transport=class extends events_1.EventEmitter{get readyState(){return this._readyState}set readyState(state){debug("readyState updated from %s to %s (%s)",this._readyState,state,this.name),this._readyState=state}constructor(req){super(),this.writable=!1,this._readyState="open",this.discarded=!1,this.protocol=req._query.EIO==="4"?4:3,this.parser=this.protocol===4?parser_v4:parser_v3,this.supportsBinary=!(req._query&&req._query.b64)}discard(){this.discarded=!0}onRequest(req){}close(fn){this.readyState==="closed"||this.readyState==="closing"||(this.readyState="closing",this.doClose(fn||noop))}onError(msg,desc){if(this.listeners("error").length){let err=new Error(msg);err.type="TransportError",err.description=desc,this.emit("error",err)}else debug("ignored transport error %s (%s)",msg,desc)}onPacket(packet){this.emit("packet",packet)}onData(data){this.onPacket(this.parser.decodePacket(data))}onClose(){this.readyState="closed",this.emit("close")}};exports2.Transport=Transport;Transport.upgradesTo=[]}});var require_polling=__commonJS({"node_modules/engine.io/build/transports/polling.js"(exports2){"use strict";Object.defineProperty(exports2,"__esModule",{value:!0});exports2.Polling=void 0;var transport_1=require_transport(),zlib_1=require("zlib"),accepts=require_accepts(),debug_1=require_src7(),debug=(0,debug_1.default)("engine:polling"),compressionMethods={gzip:zlib_1.createGzip,deflate:zlib_1.createDeflate},Polling=class extends transport_1.Transport{constructor(req){super(req),this.closeTimeout=30*1e3}get name(){return"polling"}onRequest(req){let res=req.res;req.res=null,req.method==="GET"?this.onPollRequest(req,res):req.method==="POST"?this.onDataRequest(req,res):(res.writeHead(500),res.end())}onPollRequest(req,res){if(this.req){debug("request overlap"),this.onError("overlap from client"),res.writeHead(400),res.end();return}debug("setting request"),this.req=req,this.res=res;let onClose=()=>{this.onError("poll connection closed prematurely")},cleanup=()=>{req.removeListener("close",onClose),this.req=this.res=null};req.cleanup=cleanup,req.on("close",onClose),this.writable=!0,this.emit("ready"),this.writable&&this.shouldClose&&(debug("triggering empty send to append close packet"),this.send([{type:"noop"}]))}onDataRequest(req,res){if(this.dataReq){this.onError("data request overlap from client"),res.writeHead(400),res.end();return}let isBinary=req.headers["content-type"]==="application/octet-stream";if(isBinary&&this.protocol===4)return this.onError("invalid content"),res.writeHead(400).end();this.dataReq=req,this.dataRes=res;let chunks=isBinary?Buffer.concat([]):"",cleanup=()=>{req.removeListener("data",onData),req.removeListener("end",onEnd),req.removeListener("close",onClose),this.dataReq=this.dataRes=chunks=null},onClose=()=>{cleanup(),this.onError("data request connection closed prematurely")},onData=data=>{let contentLength;isBinary?(chunks=Buffer.concat([chunks,data]),contentLength=chunks.length):(chunks+=data,contentLength=Buffer.byteLength(chunks)),contentLength>this.maxHttpBufferSize&&(res.writeHead(413).end(),cleanup())},onEnd=()=>{this.onData(chunks);let headers={"Content-Type":"text/html","Content-Length":"2"};res.writeHead(200,this.headers(req,headers)),res.end("ok"),cleanup()};req.on("close",onClose),isBinary||req.setEncoding("utf8"),req.on("data",onData),req.on("end",onEnd)}onData(data){debug('received "%s"',data);let callback=packet=>{if(packet.type==="close")return debug("got xhr close packet"),this.onClose(),!1;this.onPacket(packet)};this.protocol===3?this.parser.decodePayload(data,callback):this.parser.decodePayload(data).forEach(callback)}onClose(){this.writable&&this.send([{type:"noop"}]),super.onClose()}send(packets){this.writable=!1,this.shouldClose&&(debug("appending close packet to payload"),packets.push({type:"close"}),this.shouldClose(),this.shouldClose=null);let doWrite=data=>{let compress=packets.some(packet=>packet.options&&packet.options.compress);this.write(data,{compress})};this.protocol===3?this.parser.encodePayload(packets,this.supportsBinary,doWrite):this.parser.encodePayload(packets,doWrite)}write(data,options){debug('writing "%s"',data),this.doWrite(data,options,()=>{this.req.cleanup(),this.emit("drain")})}doWrite(data,options,callback){let isString=typeof data=="string",headers={"Content-Type":isString?"text/plain; charset=UTF-8":"application/octet-stream"},respond=data2=>{headers["Content-Length"]=typeof data2=="string"?Buffer.byteLength(data2):data2.length,this.res.writeHead(200,this.headers(this.req,headers)),this.res.end(data2),callback()};if(!this.httpCompression||!options.compress){respond(data);return}if((isString?Buffer.byteLength(data):data.length)<this.httpCompression.threshold){respond(data);return}let encoding=accepts(this.req).encodings(["gzip","deflate"]);if(!encoding){respond(data);return}this.compress(data,encoding,(err,data2)=>{if(err){this.res.writeHead(500),this.res.end(),callback(err);return}headers["Content-Encoding"]=encoding,respond(data2)})}compress(data,encoding,callback){debug("compressing");let buffers=[],nread=0;compressionMethods[encoding](this.httpCompression).on("error",callback).on("data",function(chunk){buffers.push(chunk),nread+=chunk.length}).on("end",function(){callback(null,Buffer.concat(buffers,nread))}).end(data)}doClose(fn){debug("closing");let closeTimeoutTimer;this.dataReq&&(debug("aborting ongoing data request"),this.dataReq.destroy());let onClose=()=>{clearTimeout(closeTimeoutTimer),fn(),this.onClose()};this.writable?(debug("transport writable - closing right away"),this.send([{type:"close"}]),onClose()):this.discarded?(debug("transport discarded - closing right away"),onClose()):(debug("transport not writable - buffering orderly close"),this.shouldClose=onClose,closeTimeoutTimer=setTimeout(onClose,this.closeTimeout))}headers(req,headers={}){let ua=req.headers["user-agent"];return ua&&(~ua.indexOf(";MSIE")||~ua.indexOf("Trident/"))&&(headers["X-XSS-Protection"]="0"),headers["cache-control"]="no-store",this.emit("headers",headers,req),headers}};exports2.Polling=Polling}});var require_polling_jsonp=__commonJS({"node_modules/engine.io/build/transports/polling-jsonp.js"(exports2){"use strict";Object.defineProperty(exports2,"__esModule",{value:!0});exports2.JSONP=void 0;var polling_1=require_polling(),qs=require("querystring"),rDoubleSlashes=/\\\\n/g,rSlashes=/(\\)?\\n/g,JSONP=class extends polling_1.Polling{constructor(req){super(req),this.head="___eio["+(req._query.j||"").replace(/[^0-9]/g,"")+"](",this.foot=");"}onData(data){data=qs.parse(data).d,typeof data=="string"&&(data=data.replace(rSlashes,function(match,slashes){return slashes?match:`
|
|
252
|
-
`}),super.onData(data.replace(rDoubleSlashes,"\\n")))}doWrite(data,options,callback){let js=JSON.stringify(data).replace(/\u2028/g,"\\u2028").replace(/\u2029/g,"\\u2029");data=this.head+js+this.foot,super.doWrite(data,options,callback)}};exports2.JSONP=JSONP}});var require_websocket=__commonJS({"node_modules/engine.io/build/transports/websocket.js"(exports2){"use strict";Object.defineProperty(exports2,"__esModule",{value:!0});exports2.WebSocket=void 0;var transport_1=require_transport(),debug_1=require_src7(),debug=(0,debug_1.default)("engine:ws"),WebSocket=class extends transport_1.Transport{constructor(req){super(req),this._doSend=data=>{this.socket.send(data,this._onSent)},this._doSendLast=data=>{this.socket.send(data,this._onSentLast)},this._onSent=err=>{err&&this.onError("write error",err.stack)},this._onSentLast=err=>{err?this.onError("write error",err.stack):(this.emit("drain"),this.writable=!0,this.emit("ready"))},this.socket=req.websocket,this.socket.on("message",(data,isBinary)=>{let message=isBinary?data:data.toString();debug('received "%s"',message),super.onData(message)}),this.socket.once("close",this.onClose.bind(this)),this.socket.on("error",this.onError.bind(this)),this.writable=!0,this.perMessageDeflate=null}get name(){return"websocket"}get handlesUpgrades(){return!0}send(packets){this.writable=!1;for(let i=0;i<packets.length;i++){let packet=packets[i],isLast=i+1===packets.length;this._canSendPreEncodedFrame(packet)?this.socket._sender.sendFrame(packet.options.wsPreEncodedFrame,isLast?this._onSentLast:this._onSent):this.parser.encodePacket(packet,this.supportsBinary,isLast?this._doSendLast:this._doSend)}}_canSendPreEncodedFrame(packet){var _a,_b,_c;return!this.perMessageDeflate&&typeof((_b=(_a=this.socket)===null||_a===void 0?void 0:_a._sender)===null||_b===void 0?void 0:_b.sendFrame)=="function"&&((_c=packet.options)===null||_c===void 0?void 0:_c.wsPreEncodedFrame)!==void 0}doClose(fn){debug("closing"),this.socket.close(),fn&&fn()}};exports2.WebSocket=WebSocket}});var require_webtransport=__commonJS({"node_modules/engine.io/build/transports/webtransport.js"(exports2){"use strict";Object.defineProperty(exports2,"__esModule",{value:!0});exports2.WebTransport=void 0;var transport_1=require_transport(),debug_1=require_src7(),engine_io_parser_1=require_cjs2(),debug=(0,debug_1.default)("engine:webtransport"),WebTransport=class extends transport_1.Transport{constructor(session,stream,reader){super({_query:{EIO:"4"}}),this.session=session;let transformStream=(0,engine_io_parser_1.createPacketEncoderStream)();transformStream.readable.pipeTo(stream.writable).catch(()=>{debug("the stream was closed")}),this.writer=transformStream.writable.getWriter(),(async()=>{try{for(;;){let{value,done}=await reader.read();if(done){debug("session is closed");break}debug("received chunk: %o",value),this.onPacket(value)}}catch(e){debug("error while reading: %s",e.message)}})(),session.closed.then(()=>this.onClose()),this.writable=!0}get name(){return"webtransport"}async send(packets){this.writable=!1;try{for(let i=0;i<packets.length;i++){let packet=packets[i];await this.writer.write(packet)}}catch(e){debug("error while writing: %s",e.message)}this.emit("drain"),this.writable=!0,this.emit("ready")}doClose(fn){debug("closing WebTransport session"),this.session.close(),fn&&fn()}};exports2.WebTransport=WebTransport}});var require_transports=__commonJS({"node_modules/engine.io/build/transports/index.js"(exports2){"use strict";Object.defineProperty(exports2,"__esModule",{value:!0});var polling_1=require_polling(),polling_jsonp_1=require_polling_jsonp(),websocket_1=require_websocket(),webtransport_1=require_webtransport();exports2.default={polling,websocket:websocket_1.WebSocket,webtransport:webtransport_1.WebTransport};function polling(req){return typeof req._query.j=="string"?new polling_jsonp_1.JSONP(req):new polling_1.Polling(req)}polling.upgradesTo=["websocket","webtransport"]}});var require_socket=__commonJS({"node_modules/engine.io/build/socket.js"(exports2){"use strict";Object.defineProperty(exports2,"__esModule",{value:!0});exports2.Socket=void 0;var events_1=require("events"),debug_1=require_src7(),timers_1=require("timers"),debug=(0,debug_1.default)("engine:socket"),Socket=class extends events_1.EventEmitter{get readyState(){return this._readyState}set readyState(state){debug("readyState updated from %s to %s",this._readyState,state),this._readyState=state}constructor(id,server,transport,req,protocol){super(),this._readyState="opening",this.upgrading=!1,this.upgraded=!1,this.writeBuffer=[],this.packetsFn=[],this.sentCallbackFn=[],this.cleanupFn=[],this.id=id,this.server=server,this.request=req,this.protocol=protocol,req&&(req.websocket&&req.websocket._socket?this.remoteAddress=req.websocket._socket.remoteAddress:this.remoteAddress=req.connection.remoteAddress),this.pingTimeoutTimer=null,this.pingIntervalTimer=null,this.setTransport(transport),this.onOpen()}onOpen(){this.readyState="open",this.transport.sid=this.id,this.sendPacket("open",JSON.stringify({sid:this.id,upgrades:this.getAvailableUpgrades(),pingInterval:this.server.opts.pingInterval,pingTimeout:this.server.opts.pingTimeout,maxPayload:this.server.opts.maxHttpBufferSize})),this.server.opts.initialPacket&&this.sendPacket("message",this.server.opts.initialPacket),this.emit("open"),this.protocol===3?this.resetPingTimeout():this.schedulePing()}onPacket(packet){if(this.readyState!=="open")return debug("packet received with closed socket");switch(debug(`received packet ${packet.type}`),this.emit("packet",packet),packet.type){case"ping":if(this.transport.protocol!==3){this.onError(new Error("invalid heartbeat direction"));return}debug("got ping"),this.pingTimeoutTimer.refresh(),this.sendPacket("pong"),this.emit("heartbeat");break;case"pong":if(this.transport.protocol===3){this.onError(new Error("invalid heartbeat direction"));return}debug("got pong"),(0,timers_1.clearTimeout)(this.pingTimeoutTimer),this.pingIntervalTimer.refresh(),this.emit("heartbeat");break;case"error":this.onClose("parse error");break;case"message":this.emit("data",packet.data),this.emit("message",packet.data);break}}onError(err){debug("transport error"),this.onClose("transport error",err)}schedulePing(){this.pingIntervalTimer=(0,timers_1.setTimeout)(()=>{debug("writing ping packet - expecting pong within %sms",this.server.opts.pingTimeout),this.sendPacket("ping"),this.resetPingTimeout()},this.server.opts.pingInterval)}resetPingTimeout(){(0,timers_1.clearTimeout)(this.pingTimeoutTimer),this.pingTimeoutTimer=(0,timers_1.setTimeout)(()=>{this.readyState!=="closed"&&this.onClose("ping timeout")},this.protocol===3?this.server.opts.pingInterval+this.server.opts.pingTimeout:this.server.opts.pingTimeout)}setTransport(transport){let onError=this.onError.bind(this),onReady=()=>this.flush(),onPacket=this.onPacket.bind(this),onDrain=this.onDrain.bind(this),onClose=this.onClose.bind(this,"transport close");this.transport=transport,this.transport.once("error",onError),this.transport.on("ready",onReady),this.transport.on("packet",onPacket),this.transport.on("drain",onDrain),this.transport.once("close",onClose),this.cleanupFn.push(function(){transport.removeListener("error",onError),transport.removeListener("ready",onReady),transport.removeListener("packet",onPacket),transport.removeListener("drain",onDrain),transport.removeListener("close",onClose)})}onDrain(){if(this.sentCallbackFn.length>0){debug("executing batch send callback");let seqFn=this.sentCallbackFn.shift();if(seqFn)for(let i=0;i<seqFn.length;i++)seqFn[i](this.transport)}}_maybeUpgrade(transport){debug('might upgrade socket transport from "%s" to "%s"',this.transport.name,transport.name),this.upgrading=!0;let upgradeTimeoutTimer=(0,timers_1.setTimeout)(()=>{debug("client did not complete upgrade - closing transport"),cleanup(),transport.readyState==="open"&&transport.close()},this.server.opts.upgradeTimeout),checkIntervalTimer,onPacket=packet=>{packet.type==="ping"&&packet.data==="probe"?(debug("got probe ping packet, sending pong"),transport.send([{type:"pong",data:"probe"}]),this.emit("upgrading",transport),clearInterval(checkIntervalTimer),checkIntervalTimer=setInterval(check,100)):packet.type==="upgrade"&&this.readyState!=="closed"?(debug("got upgrade packet - upgrading"),cleanup(),this.transport.discard(),this.upgraded=!0,this.clearTransport(),this.setTransport(transport),this.emit("upgrade",transport),this.flush(),this.readyState==="closing"&&transport.close(()=>{this.onClose("forced close")})):(cleanup(),transport.close())},check=()=>{this.transport.name==="polling"&&this.transport.writable&&(debug("writing a noop packet to polling for fast upgrade"),this.transport.send([{type:"noop"}]))},cleanup=()=>{this.upgrading=!1,clearInterval(checkIntervalTimer),(0,timers_1.clearTimeout)(upgradeTimeoutTimer),transport.removeListener("packet",onPacket),transport.removeListener("close",onTransportClose),transport.removeListener("error",onError),this.removeListener("close",onClose)},onError=err=>{debug("client did not complete upgrade - %s",err),cleanup(),transport.close(),transport=null},onTransportClose=()=>{onError("transport closed")},onClose=()=>{onError("socket closed")};transport.on("packet",onPacket),transport.once("close",onTransportClose),transport.once("error",onError),this.once("close",onClose)}clearTransport(){let cleanup,toCleanUp=this.cleanupFn.length;for(let i=0;i<toCleanUp;i++)cleanup=this.cleanupFn.shift(),cleanup();this.transport.on("error",function(){debug("error triggered by discarded transport")}),this.transport.close(),(0,timers_1.clearTimeout)(this.pingTimeoutTimer)}onClose(reason,description){this.readyState!=="closed"&&(this.readyState="closed",(0,timers_1.clearTimeout)(this.pingIntervalTimer),(0,timers_1.clearTimeout)(this.pingTimeoutTimer),process.nextTick(()=>{this.writeBuffer=[]}),this.packetsFn=[],this.sentCallbackFn=[],this.clearTransport(),this.emit("close",reason,description))}send(data,options,callback){return this.sendPacket("message",data,options,callback),this}write(data,options,callback){return this.sendPacket("message",data,options,callback),this}sendPacket(type,data,options={},callback){if(typeof options=="function"&&(callback=options,options={}),this.readyState!=="closing"&&this.readyState!=="closed"){debug('sending packet "%s" (%s)',type,data),options.compress=options.compress!==!1;let packet={type,options};data&&(packet.data=data),this.emit("packetCreate",packet),this.writeBuffer.push(packet),typeof callback=="function"&&this.packetsFn.push(callback),this.flush()}}flush(){if(this.readyState!=="closed"&&this.transport.writable&&this.writeBuffer.length){debug("flushing buffer to transport"),this.emit("flush",this.writeBuffer),this.server.emit("flush",this,this.writeBuffer);let wbuf=this.writeBuffer;this.writeBuffer=[],this.packetsFn.length?(this.sentCallbackFn.push(this.packetsFn),this.packetsFn=[]):this.sentCallbackFn.push(null),this.transport.send(wbuf),this.emit("drain"),this.server.emit("drain",this)}}getAvailableUpgrades(){let availableUpgrades=[],allUpgrades=this.server.upgrades(this.transport.name);for(let i=0;i<allUpgrades.length;++i){let upg=allUpgrades[i];this.server.opts.transports.indexOf(upg)!==-1&&availableUpgrades.push(upg)}return availableUpgrades}close(discard){if(discard&&(this.readyState==="open"||this.readyState==="closing"))return this.closeTransport(discard);if(this.readyState==="open"){if(this.readyState="closing",this.writeBuffer.length){debug("there are %d remaining packets in the buffer, waiting for the 'drain' event",this.writeBuffer.length),this.once("drain",()=>{debug("all packets have been sent, closing the transport"),this.closeTransport(discard)});return}debug("the buffer is empty, closing the transport right away"),this.closeTransport(discard)}}closeTransport(discard){debug("closing the transport (discard? %s)",!!discard),discard&&this.transport.discard(),this.transport.close(this.onClose.bind(this,"forced close"))}};exports2.Socket=Socket}});var require_constants4=__commonJS({"node_modules/ws/lib/constants.js"(exports2,module2){"use strict";var BINARY_TYPES=["nodebuffer","arraybuffer","fragments"],hasBlob=typeof Blob<"u";hasBlob&&BINARY_TYPES.push("blob");module2.exports={BINARY_TYPES,CLOSE_TIMEOUT:3e4,EMPTY_BUFFER:Buffer.alloc(0),GUID:"258EAFA5-E914-47DA-95CA-C5AB0DC85B11",hasBlob,kForOnEventAttribute:Symbol("kIsForOnEventAttribute"),kListener:Symbol("kListener"),kStatusCode:Symbol("status-code"),kWebSocket:Symbol("websocket"),NOOP:()=>{}}}});var require_buffer_util=__commonJS({"node_modules/ws/lib/buffer-util.js"(exports2,module2){"use strict";var{EMPTY_BUFFER}=require_constants4(),FastBuffer=Buffer[Symbol.species];function concat(list,totalLength){if(list.length===0)return EMPTY_BUFFER;if(list.length===1)return list[0];let target=Buffer.allocUnsafe(totalLength),offset=0;for(let i=0;i<list.length;i++){let buf=list[i];target.set(buf,offset),offset+=buf.length}return offset<totalLength?new FastBuffer(target.buffer,target.byteOffset,offset):target}function _mask(source,mask,output,offset,length){for(let i=0;i<length;i++)output[offset+i]=source[i]^mask[i&3]}function _unmask(buffer,mask){for(let i=0;i<buffer.length;i++)buffer[i]^=mask[i&3]}function toArrayBuffer(buf){return buf.length===buf.buffer.byteLength?buf.buffer:buf.buffer.slice(buf.byteOffset,buf.byteOffset+buf.length)}function toBuffer(data){if(toBuffer.readOnly=!0,Buffer.isBuffer(data))return data;let buf;return data instanceof ArrayBuffer?buf=new FastBuffer(data):ArrayBuffer.isView(data)?buf=new FastBuffer(data.buffer,data.byteOffset,data.byteLength):(buf=Buffer.from(data),toBuffer.readOnly=!1),buf}module2.exports={concat,mask:_mask,toArrayBuffer,toBuffer,unmask:_unmask};if(!process.env.WS_NO_BUFFER_UTIL)try{let bufferUtil=require("bufferutil");module2.exports.mask=function(source,mask,output,offset,length){length<48?_mask(source,mask,output,offset,length):bufferUtil.mask(source,mask,output,offset,length)},module2.exports.unmask=function(buffer,mask){buffer.length<32?_unmask(buffer,mask):bufferUtil.unmask(buffer,mask)}}catch{}}});var require_limiter=__commonJS({"node_modules/ws/lib/limiter.js"(exports2,module2){"use strict";var kDone=Symbol("kDone"),kRun=Symbol("kRun"),Limiter=class{constructor(concurrency){this[kDone]=()=>{this.pending--,this[kRun]()},this.concurrency=concurrency||1/0,this.jobs=[],this.pending=0}add(job){this.jobs.push(job),this[kRun]()}[kRun](){if(this.pending!==this.concurrency&&this.jobs.length){let job=this.jobs.shift();this.pending++,job(this[kDone])}}};module2.exports=Limiter}});var require_permessage_deflate=__commonJS({"node_modules/ws/lib/permessage-deflate.js"(exports2,module2){"use strict";var zlib=require("zlib"),bufferUtil=require_buffer_util(),Limiter=require_limiter(),{kStatusCode}=require_constants4(),FastBuffer=Buffer[Symbol.species],TRAILER=Buffer.from([0,0,255,255]),kPerMessageDeflate=Symbol("permessage-deflate"),kTotalLength=Symbol("total-length"),kCallback=Symbol("callback"),kBuffers=Symbol("buffers"),kError=Symbol("error"),zlibLimiter,PerMessageDeflate=class{constructor(options){if(this._options=options||{},this._threshold=this._options.threshold!==void 0?this._options.threshold:1024,this._maxPayload=this._options.maxPayload|0,this._isServer=!!this._options.isServer,this._deflate=null,this._inflate=null,this.params=null,!zlibLimiter){let concurrency=this._options.concurrencyLimit!==void 0?this._options.concurrencyLimit:10;zlibLimiter=new Limiter(concurrency)}}static get extensionName(){return"permessage-deflate"}offer(){let params={};return this._options.serverNoContextTakeover&&(params.server_no_context_takeover=!0),this._options.clientNoContextTakeover&&(params.client_no_context_takeover=!0),this._options.serverMaxWindowBits&&(params.server_max_window_bits=this._options.serverMaxWindowBits),this._options.clientMaxWindowBits?params.client_max_window_bits=this._options.clientMaxWindowBits:this._options.clientMaxWindowBits==null&&(params.client_max_window_bits=!0),params}accept(configurations){return configurations=this.normalizeParams(configurations),this.params=this._isServer?this.acceptAsServer(configurations):this.acceptAsClient(configurations),this.params}cleanup(){if(this._inflate&&(this._inflate.close(),this._inflate=null),this._deflate){let callback=this._deflate[kCallback];this._deflate.close(),this._deflate=null,callback&&callback(new Error("The deflate stream was closed while data was being processed"))}}acceptAsServer(offers){let opts=this._options,accepted=offers.find(params=>!(opts.serverNoContextTakeover===!1&¶ms.server_no_context_takeover||params.server_max_window_bits&&(opts.serverMaxWindowBits===!1||typeof opts.serverMaxWindowBits=="number"&&opts.serverMaxWindowBits>params.server_max_window_bits)||typeof opts.clientMaxWindowBits=="number"&&!params.client_max_window_bits));if(!accepted)throw new Error("None of the extension offers can be accepted");return opts.serverNoContextTakeover&&(accepted.server_no_context_takeover=!0),opts.clientNoContextTakeover&&(accepted.client_no_context_takeover=!0),typeof opts.serverMaxWindowBits=="number"&&(accepted.server_max_window_bits=opts.serverMaxWindowBits),typeof opts.clientMaxWindowBits=="number"?accepted.client_max_window_bits=opts.clientMaxWindowBits:(accepted.client_max_window_bits===!0||opts.clientMaxWindowBits===!1)&&delete accepted.client_max_window_bits,accepted}acceptAsClient(response){let params=response[0];if(this._options.clientNoContextTakeover===!1&¶ms.client_no_context_takeover)throw new Error('Unexpected parameter "client_no_context_takeover"');if(!params.client_max_window_bits)typeof this._options.clientMaxWindowBits=="number"&&(params.client_max_window_bits=this._options.clientMaxWindowBits);else if(this._options.clientMaxWindowBits===!1||typeof this._options.clientMaxWindowBits=="number"&¶ms.client_max_window_bits>this._options.clientMaxWindowBits)throw new Error('Unexpected or invalid parameter "client_max_window_bits"');return params}normalizeParams(configurations){return configurations.forEach(params=>{Object.keys(params).forEach(key=>{let value=params[key];if(value.length>1)throw new Error(`Parameter "${key}" must have only a single value`);if(value=value[0],key==="client_max_window_bits"){if(value!==!0){let num=+value;if(!Number.isInteger(num)||num<8||num>15)throw new TypeError(`Invalid value for parameter "${key}": ${value}`);value=num}else if(!this._isServer)throw new TypeError(`Invalid value for parameter "${key}": ${value}`)}else if(key==="server_max_window_bits"){let num=+value;if(!Number.isInteger(num)||num<8||num>15)throw new TypeError(`Invalid value for parameter "${key}": ${value}`);value=num}else if(key==="client_no_context_takeover"||key==="server_no_context_takeover"){if(value!==!0)throw new TypeError(`Invalid value for parameter "${key}": ${value}`)}else throw new Error(`Unknown parameter "${key}"`);params[key]=value})}),configurations}decompress(data,fin,callback){zlibLimiter.add(done=>{this._decompress(data,fin,(err,result)=>{done(),callback(err,result)})})}compress(data,fin,callback){zlibLimiter.add(done=>{this._compress(data,fin,(err,result)=>{done(),callback(err,result)})})}_decompress(data,fin,callback){let endpoint=this._isServer?"client":"server";if(!this._inflate){let key=`${endpoint}_max_window_bits`,windowBits=typeof this.params[key]!="number"?zlib.Z_DEFAULT_WINDOWBITS:this.params[key];this._inflate=zlib.createInflateRaw({...this._options.zlibInflateOptions,windowBits}),this._inflate[kPerMessageDeflate]=this,this._inflate[kTotalLength]=0,this._inflate[kBuffers]=[],this._inflate.on("error",inflateOnError),this._inflate.on("data",inflateOnData)}this._inflate[kCallback]=callback,this._inflate.write(data),fin&&this._inflate.write(TRAILER),this._inflate.flush(()=>{let err=this._inflate[kError];if(err){this._inflate.close(),this._inflate=null,callback(err);return}let data2=bufferUtil.concat(this._inflate[kBuffers],this._inflate[kTotalLength]);this._inflate._readableState.endEmitted?(this._inflate.close(),this._inflate=null):(this._inflate[kTotalLength]=0,this._inflate[kBuffers]=[],fin&&this.params[`${endpoint}_no_context_takeover`]&&this._inflate.reset()),callback(null,data2)})}_compress(data,fin,callback){let endpoint=this._isServer?"server":"client";if(!this._deflate){let key=`${endpoint}_max_window_bits`,windowBits=typeof this.params[key]!="number"?zlib.Z_DEFAULT_WINDOWBITS:this.params[key];this._deflate=zlib.createDeflateRaw({...this._options.zlibDeflateOptions,windowBits}),this._deflate[kTotalLength]=0,this._deflate[kBuffers]=[],this._deflate.on("data",deflateOnData)}this._deflate[kCallback]=callback,this._deflate.write(data),this._deflate.flush(zlib.Z_SYNC_FLUSH,()=>{if(!this._deflate)return;let data2=bufferUtil.concat(this._deflate[kBuffers],this._deflate[kTotalLength]);fin&&(data2=new FastBuffer(data2.buffer,data2.byteOffset,data2.length-4)),this._deflate[kCallback]=null,this._deflate[kTotalLength]=0,this._deflate[kBuffers]=[],fin&&this.params[`${endpoint}_no_context_takeover`]&&this._deflate.reset(),callback(null,data2)})}};module2.exports=PerMessageDeflate;function deflateOnData(chunk){this[kBuffers].push(chunk),this[kTotalLength]+=chunk.length}function inflateOnData(chunk){if(this[kTotalLength]+=chunk.length,this[kPerMessageDeflate]._maxPayload<1||this[kTotalLength]<=this[kPerMessageDeflate]._maxPayload){this[kBuffers].push(chunk);return}this[kError]=new RangeError("Max payload size exceeded"),this[kError].code="WS_ERR_UNSUPPORTED_MESSAGE_LENGTH",this[kError][kStatusCode]=1009,this.removeListener("data",inflateOnData),this.reset()}function inflateOnError(err){if(this[kPerMessageDeflate]._inflate=null,this[kError]){this[kCallback](this[kError]);return}err[kStatusCode]=1007,this[kCallback](err)}}});var require_validation=__commonJS({"node_modules/ws/lib/validation.js"(exports2,module2){"use strict";var{isUtf8}=require("buffer"),{hasBlob}=require_constants4(),tokenChars=[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,1,1,1,1,1,0,0,1,1,0,1,1,0,1,1,1,1,1,1,1,1,1,1,0,0,0,0,0,0,0,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,0,0,0,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,0,1,0,1,0];function isValidStatusCode(code){return code>=1e3&&code<=1014&&code!==1004&&code!==1005&&code!==1006||code>=3e3&&code<=4999}function _isValidUTF8(buf){let len=buf.length,i=0;for(;i<len;)if((buf[i]&128)===0)i++;else if((buf[i]&224)===192){if(i+1===len||(buf[i+1]&192)!==128||(buf[i]&254)===192)return!1;i+=2}else if((buf[i]&240)===224){if(i+2>=len||(buf[i+1]&192)!==128||(buf[i+2]&192)!==128||buf[i]===224&&(buf[i+1]&224)===128||buf[i]===237&&(buf[i+1]&224)===160)return!1;i+=3}else if((buf[i]&248)===240){if(i+3>=len||(buf[i+1]&192)!==128||(buf[i+2]&192)!==128||(buf[i+3]&192)!==128||buf[i]===240&&(buf[i+1]&240)===128||buf[i]===244&&buf[i+1]>143||buf[i]>244)return!1;i+=4}else return!1;return!0}function isBlob(value){return hasBlob&&typeof value=="object"&&typeof value.arrayBuffer=="function"&&typeof value.type=="string"&&typeof value.stream=="function"&&(value[Symbol.toStringTag]==="Blob"||value[Symbol.toStringTag]==="File")}module2.exports={isBlob,isValidStatusCode,isValidUTF8:_isValidUTF8,tokenChars};if(isUtf8)module2.exports.isValidUTF8=function(buf){return buf.length<24?_isValidUTF8(buf):isUtf8(buf)};else if(!process.env.WS_NO_UTF_8_VALIDATE)try{let isValidUTF8=require("utf-8-validate");module2.exports.isValidUTF8=function(buf){return buf.length<32?_isValidUTF8(buf):isValidUTF8(buf)}}catch{}}});var require_receiver=__commonJS({"node_modules/ws/lib/receiver.js"(exports2,module2){"use strict";var{Writable}=require("stream"),PerMessageDeflate=require_permessage_deflate(),{BINARY_TYPES,EMPTY_BUFFER,kStatusCode,kWebSocket}=require_constants4(),{concat,toArrayBuffer,unmask}=require_buffer_util(),{isValidStatusCode,isValidUTF8}=require_validation(),FastBuffer=Buffer[Symbol.species],GET_INFO=0,GET_PAYLOAD_LENGTH_16=1,GET_PAYLOAD_LENGTH_64=2,GET_MASK=3,GET_DATA=4,INFLATING=5,DEFER_EVENT=6,Receiver=class extends Writable{constructor(options={}){super(),this._allowSynchronousEvents=options.allowSynchronousEvents!==void 0?options.allowSynchronousEvents:!0,this._binaryType=options.binaryType||BINARY_TYPES[0],this._extensions=options.extensions||{},this._isServer=!!options.isServer,this._maxBufferedChunks=options.maxBufferedChunks|0,this._maxFragments=options.maxFragments|0,this._maxPayload=options.maxPayload|0,this._skipUTF8Validation=!!options.skipUTF8Validation,this[kWebSocket]=void 0,this._bufferedBytes=0,this._buffers=[],this._compressed=!1,this._payloadLength=0,this._mask=void 0,this._fragmented=0,this._masked=!1,this._fin=!1,this._opcode=0,this._totalPayloadLength=0,this._messageLength=0,this._numFragments=0,this._fragments=[],this._errored=!1,this._loop=!1,this._state=GET_INFO}_write(chunk,encoding,cb){if(this._opcode===8&&this._state==GET_INFO)return cb();if(this._maxBufferedChunks>0&&this._buffers.length>=this._maxBufferedChunks){cb(this.createError(RangeError,"Too many buffered chunks",!1,1008,"WS_ERR_TOO_MANY_BUFFERED_PARTS"));return}this._bufferedBytes+=chunk.length,this._buffers.push(chunk),this.startLoop(cb)}consume(n){if(this._bufferedBytes-=n,n===this._buffers[0].length)return this._buffers.shift();if(n<this._buffers[0].length){let buf=this._buffers[0];return this._buffers[0]=new FastBuffer(buf.buffer,buf.byteOffset+n,buf.length-n),new FastBuffer(buf.buffer,buf.byteOffset,n)}let dst=Buffer.allocUnsafe(n);do{let buf=this._buffers[0],offset=dst.length-n;n>=buf.length?dst.set(this._buffers.shift(),offset):(dst.set(new Uint8Array(buf.buffer,buf.byteOffset,n),offset),this._buffers[0]=new FastBuffer(buf.buffer,buf.byteOffset+n,buf.length-n)),n-=buf.length}while(n>0);return dst}startLoop(cb){this._loop=!0;do switch(this._state){case GET_INFO:this.getInfo(cb);break;case GET_PAYLOAD_LENGTH_16:this.getPayloadLength16(cb);break;case GET_PAYLOAD_LENGTH_64:this.getPayloadLength64(cb);break;case GET_MASK:this.getMask();break;case GET_DATA:this.getData(cb);break;case INFLATING:case DEFER_EVENT:this._loop=!1;return}while(this._loop);this._errored||cb()}getInfo(cb){if(this._bufferedBytes<2){this._loop=!1;return}let buf=this.consume(2);if((buf[0]&48)!==0){let error=this.createError(RangeError,"RSV2 and RSV3 must be clear",!0,1002,"WS_ERR_UNEXPECTED_RSV_2_3");cb(error);return}let compressed=(buf[0]&64)===64;if(compressed&&!this._extensions[PerMessageDeflate.extensionName]){let error=this.createError(RangeError,"RSV1 must be clear",!0,1002,"WS_ERR_UNEXPECTED_RSV_1");cb(error);return}if(this._fin=(buf[0]&128)===128,this._opcode=buf[0]&15,this._payloadLength=buf[1]&127,this._opcode===0){if(compressed){let error=this.createError(RangeError,"RSV1 must be clear",!0,1002,"WS_ERR_UNEXPECTED_RSV_1");cb(error);return}if(!this._fragmented){let error=this.createError(RangeError,"invalid opcode 0",!0,1002,"WS_ERR_INVALID_OPCODE");cb(error);return}this._opcode=this._fragmented}else if(this._opcode===1||this._opcode===2){if(this._fragmented){let error=this.createError(RangeError,`invalid opcode ${this._opcode}`,!0,1002,"WS_ERR_INVALID_OPCODE");cb(error);return}this._compressed=compressed}else if(this._opcode>7&&this._opcode<11){if(!this._fin){let error=this.createError(RangeError,"FIN must be set",!0,1002,"WS_ERR_EXPECTED_FIN");cb(error);return}if(compressed){let error=this.createError(RangeError,"RSV1 must be clear",!0,1002,"WS_ERR_UNEXPECTED_RSV_1");cb(error);return}if(this._payloadLength>125||this._opcode===8&&this._payloadLength===1){let error=this.createError(RangeError,`invalid payload length ${this._payloadLength}`,!0,1002,"WS_ERR_INVALID_CONTROL_PAYLOAD_LENGTH");cb(error);return}}else{let error=this.createError(RangeError,`invalid opcode ${this._opcode}`,!0,1002,"WS_ERR_INVALID_OPCODE");cb(error);return}if(!this._fin&&!this._fragmented&&(this._fragmented=this._opcode),this._masked=(buf[1]&128)===128,this._isServer){if(!this._masked){let error=this.createError(RangeError,"MASK must be set",!0,1002,"WS_ERR_EXPECTED_MASK");cb(error);return}}else if(this._masked){let error=this.createError(RangeError,"MASK must be clear",!0,1002,"WS_ERR_UNEXPECTED_MASK");cb(error);return}this._payloadLength===126?this._state=GET_PAYLOAD_LENGTH_16:this._payloadLength===127?this._state=GET_PAYLOAD_LENGTH_64:this.haveLength(cb)}getPayloadLength16(cb){if(this._bufferedBytes<2){this._loop=!1;return}this._payloadLength=this.consume(2).readUInt16BE(0),this.haveLength(cb)}getPayloadLength64(cb){if(this._bufferedBytes<8){this._loop=!1;return}let buf=this.consume(8),num=buf.readUInt32BE(0);if(num>Math.pow(2,21)-1){let error=this.createError(RangeError,"Unsupported WebSocket frame: payload length > 2^53 - 1",!1,1009,"WS_ERR_UNSUPPORTED_DATA_PAYLOAD_LENGTH");cb(error);return}this._payloadLength=num*Math.pow(2,32)+buf.readUInt32BE(4),this.haveLength(cb)}haveLength(cb){if(this._payloadLength&&this._opcode<8&&(this._totalPayloadLength+=this._payloadLength,this._totalPayloadLength>this._maxPayload&&this._maxPayload>0)){let error=this.createError(RangeError,"Max payload size exceeded",!1,1009,"WS_ERR_UNSUPPORTED_MESSAGE_LENGTH");cb(error);return}this._masked?this._state=GET_MASK:this._state=GET_DATA}getMask(){if(this._bufferedBytes<4){this._loop=!1;return}this._mask=this.consume(4),this._state=GET_DATA}getData(cb){let data=EMPTY_BUFFER;if(this._payloadLength){if(this._bufferedBytes<this._payloadLength){this._loop=!1;return}data=this.consume(this._payloadLength),this._masked&&(this._mask[0]|this._mask[1]|this._mask[2]|this._mask[3])!==0&&unmask(data,this._mask)}if(this._opcode>7){this.controlMessage(data,cb);return}if(this._maxFragments>0&&++this._numFragments>this._maxFragments){let error=this.createError(RangeError,"Too many message fragments",!1,1008,"WS_ERR_TOO_MANY_BUFFERED_PARTS");cb(error);return}if(this._compressed){this._state=INFLATING,this.decompress(data,cb);return}data.length&&(this._messageLength=this._totalPayloadLength,this._fragments.push(data)),this.dataMessage(cb)}decompress(data,cb){this._extensions[PerMessageDeflate.extensionName].decompress(data,this._fin,(err,buf)=>{if(err)return cb(err);if(buf.length){if(this._messageLength+=buf.length,this._messageLength>this._maxPayload&&this._maxPayload>0){let error=this.createError(RangeError,"Max payload size exceeded",!1,1009,"WS_ERR_UNSUPPORTED_MESSAGE_LENGTH");cb(error);return}this._fragments.push(buf)}this.dataMessage(cb),this._state===GET_INFO&&this.startLoop(cb)})}dataMessage(cb){if(!this._fin){this._state=GET_INFO;return}let messageLength=this._messageLength,fragments=this._fragments;if(this._totalPayloadLength=0,this._messageLength=0,this._fragmented=0,this._numFragments=0,this._fragments=[],this._opcode===2){let data;this._binaryType==="nodebuffer"?data=concat(fragments,messageLength):this._binaryType==="arraybuffer"?data=toArrayBuffer(concat(fragments,messageLength)):this._binaryType==="blob"?data=new Blob(fragments):data=fragments,this._allowSynchronousEvents?(this.emit("message",data,!0),this._state=GET_INFO):(this._state=DEFER_EVENT,setImmediate(()=>{this.emit("message",data,!0),this._state=GET_INFO,this.startLoop(cb)}))}else{let buf=concat(fragments,messageLength);if(!this._skipUTF8Validation&&!isValidUTF8(buf)){let error=this.createError(Error,"invalid UTF-8 sequence",!0,1007,"WS_ERR_INVALID_UTF8");cb(error);return}this._state===INFLATING||this._allowSynchronousEvents?(this.emit("message",buf,!1),this._state=GET_INFO):(this._state=DEFER_EVENT,setImmediate(()=>{this.emit("message",buf,!1),this._state=GET_INFO,this.startLoop(cb)}))}}controlMessage(data,cb){if(this._opcode===8){if(data.length===0)this._loop=!1,this.emit("conclude",1005,EMPTY_BUFFER),this.end();else{let code=data.readUInt16BE(0);if(!isValidStatusCode(code)){let error=this.createError(RangeError,`invalid status code ${code}`,!0,1002,"WS_ERR_INVALID_CLOSE_CODE");cb(error);return}let buf=new FastBuffer(data.buffer,data.byteOffset+2,data.length-2);if(!this._skipUTF8Validation&&!isValidUTF8(buf)){let error=this.createError(Error,"invalid UTF-8 sequence",!0,1007,"WS_ERR_INVALID_UTF8");cb(error);return}this._loop=!1,this.emit("conclude",code,buf),this.end()}this._state=GET_INFO;return}this._allowSynchronousEvents?(this.emit(this._opcode===9?"ping":"pong",data),this._state=GET_INFO):(this._state=DEFER_EVENT,setImmediate(()=>{this.emit(this._opcode===9?"ping":"pong",data),this._state=GET_INFO,this.startLoop(cb)}))}createError(ErrorCtor,message,prefix,statusCode,errorCode){this._loop=!1,this._errored=!0;let err=new ErrorCtor(prefix?`Invalid WebSocket frame: ${message}`:message);return Error.captureStackTrace(err,this.createError),err.code=errorCode,err[kStatusCode]=statusCode,err}};module2.exports=Receiver}});var require_sender=__commonJS({"node_modules/ws/lib/sender.js"(exports2,module2){"use strict";var{Duplex}=require("stream"),{randomFillSync}=require("crypto"),{types:{isUint8Array}}=require("util"),PerMessageDeflate=require_permessage_deflate(),{EMPTY_BUFFER,kWebSocket,NOOP}=require_constants4(),{isBlob,isValidStatusCode}=require_validation(),{mask:applyMask,toBuffer}=require_buffer_util(),kByteLength=Symbol("kByteLength"),maskBuffer=Buffer.alloc(4),RANDOM_POOL_SIZE=8*1024,randomPool,randomPoolPointer=RANDOM_POOL_SIZE,DEFAULT=0,DEFLATING=1,GET_BLOB_DATA=2,Sender=class _Sender{constructor(socket,extensions,generateMask){this._extensions=extensions||{},generateMask&&(this._generateMask=generateMask,this._maskBuffer=Buffer.alloc(4)),this._socket=socket,this._firstFragment=!0,this._compress=!1,this._bufferedBytes=0,this._queue=[],this._state=DEFAULT,this.onerror=NOOP,this[kWebSocket]=void 0}static frame(data,options){let mask,merge=!1,offset=2,skipMasking=!1;options.mask&&(mask=options.maskBuffer||maskBuffer,options.generateMask?options.generateMask(mask):(randomPoolPointer===RANDOM_POOL_SIZE&&(randomPool===void 0&&(randomPool=Buffer.alloc(RANDOM_POOL_SIZE)),randomFillSync(randomPool,0,RANDOM_POOL_SIZE),randomPoolPointer=0),mask[0]=randomPool[randomPoolPointer++],mask[1]=randomPool[randomPoolPointer++],mask[2]=randomPool[randomPoolPointer++],mask[3]=randomPool[randomPoolPointer++]),skipMasking=(mask[0]|mask[1]|mask[2]|mask[3])===0,offset=6);let dataLength;typeof data=="string"?(!options.mask||skipMasking)&&options[kByteLength]!==void 0?dataLength=options[kByteLength]:(data=Buffer.from(data),dataLength=data.length):(dataLength=data.length,merge=options.mask&&options.readOnly&&!skipMasking);let payloadLength=dataLength;dataLength>=65536?(offset+=8,payloadLength=127):dataLength>125&&(offset+=2,payloadLength=126);let target=Buffer.allocUnsafe(merge?dataLength+offset:offset);return target[0]=options.fin?options.opcode|128:options.opcode,options.rsv1&&(target[0]|=64),target[1]=payloadLength,payloadLength===126?target.writeUInt16BE(dataLength,2):payloadLength===127&&(target[2]=target[3]=0,target.writeUIntBE(dataLength,4,6)),options.mask?(target[1]|=128,target[offset-4]=mask[0],target[offset-3]=mask[1],target[offset-2]=mask[2],target[offset-1]=mask[3],skipMasking?[target,data]:merge?(applyMask(data,mask,target,offset,dataLength),[target]):(applyMask(data,mask,data,0,dataLength),[target,data])):[target,data]}close(code,data,mask,cb){let buf;if(code===void 0)buf=EMPTY_BUFFER;else{if(typeof code!="number"||!isValidStatusCode(code))throw new TypeError("First argument must be a valid error code number");if(data===void 0||!data.length)buf=Buffer.allocUnsafe(2),buf.writeUInt16BE(code,0);else{let length=Buffer.byteLength(data);if(length>123)throw new RangeError("The message must not be greater than 123 bytes");if(buf=Buffer.allocUnsafe(2+length),buf.writeUInt16BE(code,0),typeof data=="string")buf.write(data,2);else if(isUint8Array(data))buf.set(data,2);else throw new TypeError("Second argument must be a string or a Uint8Array")}}let options={[kByteLength]:buf.length,fin:!0,generateMask:this._generateMask,mask,maskBuffer:this._maskBuffer,opcode:8,readOnly:!1,rsv1:!1};this._state!==DEFAULT?this.enqueue([this.dispatch,buf,!1,options,cb]):this.sendFrame(_Sender.frame(buf,options),cb)}ping(data,mask,cb){let byteLength,readOnly;if(typeof data=="string"?(byteLength=Buffer.byteLength(data),readOnly=!1):isBlob(data)?(byteLength=data.size,readOnly=!1):(data=toBuffer(data),byteLength=data.length,readOnly=toBuffer.readOnly),byteLength>125)throw new RangeError("The data size must not be greater than 125 bytes");let options={[kByteLength]:byteLength,fin:!0,generateMask:this._generateMask,mask,maskBuffer:this._maskBuffer,opcode:9,readOnly,rsv1:!1};isBlob(data)?this._state!==DEFAULT?this.enqueue([this.getBlobData,data,!1,options,cb]):this.getBlobData(data,!1,options,cb):this._state!==DEFAULT?this.enqueue([this.dispatch,data,!1,options,cb]):this.sendFrame(_Sender.frame(data,options),cb)}pong(data,mask,cb){let byteLength,readOnly;if(typeof data=="string"?(byteLength=Buffer.byteLength(data),readOnly=!1):isBlob(data)?(byteLength=data.size,readOnly=!1):(data=toBuffer(data),byteLength=data.length,readOnly=toBuffer.readOnly),byteLength>125)throw new RangeError("The data size must not be greater than 125 bytes");let options={[kByteLength]:byteLength,fin:!0,generateMask:this._generateMask,mask,maskBuffer:this._maskBuffer,opcode:10,readOnly,rsv1:!1};isBlob(data)?this._state!==DEFAULT?this.enqueue([this.getBlobData,data,!1,options,cb]):this.getBlobData(data,!1,options,cb):this._state!==DEFAULT?this.enqueue([this.dispatch,data,!1,options,cb]):this.sendFrame(_Sender.frame(data,options),cb)}send(data,options,cb){let perMessageDeflate=this._extensions[PerMessageDeflate.extensionName],opcode=options.binary?2:1,rsv1=options.compress,byteLength,readOnly;typeof data=="string"?(byteLength=Buffer.byteLength(data),readOnly=!1):isBlob(data)?(byteLength=data.size,readOnly=!1):(data=toBuffer(data),byteLength=data.length,readOnly=toBuffer.readOnly),this._firstFragment?(this._firstFragment=!1,rsv1&&perMessageDeflate&&perMessageDeflate.params[perMessageDeflate._isServer?"server_no_context_takeover":"client_no_context_takeover"]&&(rsv1=byteLength>=perMessageDeflate._threshold),this._compress=rsv1):(rsv1=!1,opcode=0),options.fin&&(this._firstFragment=!0);let opts={[kByteLength]:byteLength,fin:options.fin,generateMask:this._generateMask,mask:options.mask,maskBuffer:this._maskBuffer,opcode,readOnly,rsv1};isBlob(data)?this._state!==DEFAULT?this.enqueue([this.getBlobData,data,this._compress,opts,cb]):this.getBlobData(data,this._compress,opts,cb):this._state!==DEFAULT?this.enqueue([this.dispatch,data,this._compress,opts,cb]):this.dispatch(data,this._compress,opts,cb)}getBlobData(blob,compress,options,cb){this._bufferedBytes+=options[kByteLength],this._state=GET_BLOB_DATA,blob.arrayBuffer().then(arrayBuffer=>{if(this._socket.destroyed){let err=new Error("The socket was closed while the blob was being read");process.nextTick(callCallbacks,this,err,cb);return}this._bufferedBytes-=options[kByteLength];let data=toBuffer(arrayBuffer);compress?this.dispatch(data,compress,options,cb):(this._state=DEFAULT,this.sendFrame(_Sender.frame(data,options),cb),this.dequeue())}).catch(err=>{process.nextTick(onError,this,err,cb)})}dispatch(data,compress,options,cb){if(!compress){this.sendFrame(_Sender.frame(data,options),cb);return}let perMessageDeflate=this._extensions[PerMessageDeflate.extensionName];this._bufferedBytes+=options[kByteLength],this._state=DEFLATING,perMessageDeflate.compress(data,options.fin,(_,buf)=>{if(this._socket.destroyed){let err=new Error("The socket was closed while data was being compressed");callCallbacks(this,err,cb);return}this._bufferedBytes-=options[kByteLength],this._state=DEFAULT,options.readOnly=!1,this.sendFrame(_Sender.frame(buf,options),cb),this.dequeue()})}dequeue(){for(;this._state===DEFAULT&&this._queue.length;){let params=this._queue.shift();this._bufferedBytes-=params[3][kByteLength],Reflect.apply(params[0],this,params.slice(1))}}enqueue(params){this._bufferedBytes+=params[3][kByteLength],this._queue.push(params)}sendFrame(list,cb){list.length===2?(this._socket.cork(),this._socket.write(list[0]),this._socket.write(list[1],cb),this._socket.uncork()):this._socket.write(list[0],cb)}};module2.exports=Sender;function callCallbacks(sender,err,cb){typeof cb=="function"&&cb(err);for(let i=0;i<sender._queue.length;i++){let params=sender._queue[i],callback=params[params.length-1];typeof callback=="function"&&callback(err)}}function onError(sender,err,cb){callCallbacks(sender,err,cb),sender.onerror(err)}}});var require_event_target=__commonJS({"node_modules/ws/lib/event-target.js"(exports2,module2){"use strict";var{kForOnEventAttribute,kListener}=require_constants4(),kCode=Symbol("kCode"),kData=Symbol("kData"),kError=Symbol("kError"),kMessage=Symbol("kMessage"),kReason=Symbol("kReason"),kTarget=Symbol("kTarget"),kType=Symbol("kType"),kWasClean=Symbol("kWasClean"),Event=class{constructor(type){this[kTarget]=null,this[kType]=type}get target(){return this[kTarget]}get type(){return this[kType]}};Object.defineProperty(Event.prototype,"target",{enumerable:!0});Object.defineProperty(Event.prototype,"type",{enumerable:!0});var CloseEvent=class extends Event{constructor(type,options={}){super(type),this[kCode]=options.code===void 0?0:options.code,this[kReason]=options.reason===void 0?"":options.reason,this[kWasClean]=options.wasClean===void 0?!1:options.wasClean}get code(){return this[kCode]}get reason(){return this[kReason]}get wasClean(){return this[kWasClean]}};Object.defineProperty(CloseEvent.prototype,"code",{enumerable:!0});Object.defineProperty(CloseEvent.prototype,"reason",{enumerable:!0});Object.defineProperty(CloseEvent.prototype,"wasClean",{enumerable:!0});var ErrorEvent=class extends Event{constructor(type,options={}){super(type),this[kError]=options.error===void 0?null:options.error,this[kMessage]=options.message===void 0?"":options.message}get error(){return this[kError]}get message(){return this[kMessage]}};Object.defineProperty(ErrorEvent.prototype,"error",{enumerable:!0});Object.defineProperty(ErrorEvent.prototype,"message",{enumerable:!0});var MessageEvent=class extends Event{constructor(type,options={}){super(type),this[kData]=options.data===void 0?null:options.data}get data(){return this[kData]}};Object.defineProperty(MessageEvent.prototype,"data",{enumerable:!0});var EventTarget={addEventListener(type,handler,options={}){for(let listener of this.listeners(type))if(!options[kForOnEventAttribute]&&listener[kListener]===handler&&!listener[kForOnEventAttribute])return;let wrapper;if(type==="message")wrapper=function(data,isBinary){let event=new MessageEvent("message",{data:isBinary?data:data.toString()});event[kTarget]=this,callListener(handler,this,event)};else if(type==="close")wrapper=function(code,message){let event=new CloseEvent("close",{code,reason:message.toString(),wasClean:this._closeFrameReceived&&this._closeFrameSent});event[kTarget]=this,callListener(handler,this,event)};else if(type==="error")wrapper=function(error){let event=new ErrorEvent("error",{error,message:error.message});event[kTarget]=this,callListener(handler,this,event)};else if(type==="open")wrapper=function(){let event=new Event("open");event[kTarget]=this,callListener(handler,this,event)};else return;wrapper[kForOnEventAttribute]=!!options[kForOnEventAttribute],wrapper[kListener]=handler,options.once?this.once(type,wrapper):this.on(type,wrapper)},removeEventListener(type,handler){for(let listener of this.listeners(type))if(listener[kListener]===handler&&!listener[kForOnEventAttribute]){this.removeListener(type,listener);break}}};module2.exports={CloseEvent,ErrorEvent,Event,EventTarget,MessageEvent};function callListener(listener,thisArg,event){typeof listener=="object"&&listener.handleEvent?listener.handleEvent.call(listener,event):listener.call(thisArg,event)}}});var require_extension=__commonJS({"node_modules/ws/lib/extension.js"(exports2,module2){"use strict";var{tokenChars}=require_validation();function push(dest,name,elem){dest[name]===void 0?dest[name]=[elem]:dest[name].push(elem)}function parse(header){let offers=Object.create(null),params=Object.create(null),mustUnescape=!1,isEscaping=!1,inQuotes=!1,extensionName,paramName,start=-1,code=-1,end=-1,i=0;for(;i<header.length;i++)if(code=header.charCodeAt(i),extensionName===void 0)if(end===-1&&tokenChars[code]===1)start===-1&&(start=i);else if(i!==0&&(code===32||code===9))end===-1&&start!==-1&&(end=i);else if(code===59||code===44){if(start===-1)throw new SyntaxError(`Unexpected character at index ${i}`);end===-1&&(end=i);let name=header.slice(start,end);code===44?(push(offers,name,params),params=Object.create(null)):extensionName=name,start=end=-1}else throw new SyntaxError(`Unexpected character at index ${i}`);else if(paramName===void 0)if(end===-1&&tokenChars[code]===1)start===-1&&(start=i);else if(code===32||code===9)end===-1&&start!==-1&&(end=i);else if(code===59||code===44){if(start===-1)throw new SyntaxError(`Unexpected character at index ${i}`);end===-1&&(end=i),push(params,header.slice(start,end),!0),code===44&&(push(offers,extensionName,params),params=Object.create(null),extensionName=void 0),start=end=-1}else if(code===61&&start!==-1&&end===-1)paramName=header.slice(start,i),start=end=-1;else throw new SyntaxError(`Unexpected character at index ${i}`);else if(isEscaping){if(tokenChars[code]!==1)throw new SyntaxError(`Unexpected character at index ${i}`);start===-1?start=i:mustUnescape||(mustUnescape=!0),isEscaping=!1}else if(inQuotes)if(tokenChars[code]===1)start===-1&&(start=i);else if(code===34&&start!==-1)inQuotes=!1,end=i;else if(code===92)isEscaping=!0;else throw new SyntaxError(`Unexpected character at index ${i}`);else if(code===34&&header.charCodeAt(i-1)===61)inQuotes=!0;else if(end===-1&&tokenChars[code]===1)start===-1&&(start=i);else if(start!==-1&&(code===32||code===9))end===-1&&(end=i);else if(code===59||code===44){if(start===-1)throw new SyntaxError(`Unexpected character at index ${i}`);end===-1&&(end=i);let value=header.slice(start,end);mustUnescape&&(value=value.replace(/\\/g,""),mustUnescape=!1),push(params,paramName,value),code===44&&(push(offers,extensionName,params),params=Object.create(null),extensionName=void 0),paramName=void 0,start=end=-1}else throw new SyntaxError(`Unexpected character at index ${i}`);if(start===-1||inQuotes||code===32||code===9)throw new SyntaxError("Unexpected end of input");end===-1&&(end=i);let token=header.slice(start,end);return extensionName===void 0?push(offers,token,params):(paramName===void 0?push(params,token,!0):mustUnescape?push(params,paramName,token.replace(/\\/g,"")):push(params,paramName,token),push(offers,extensionName,params)),offers}function format(extensions){return Object.keys(extensions).map(extension=>{let configurations=extensions[extension];return Array.isArray(configurations)||(configurations=[configurations]),configurations.map(params=>[extension].concat(Object.keys(params).map(k=>{let values=params[k];return Array.isArray(values)||(values=[values]),values.map(v=>v===!0?k:`${k}=${v}`).join("; ")})).join("; ")).join(", ")}).join(", ")}module2.exports={format,parse}}});var require_websocket2=__commonJS({"node_modules/ws/lib/websocket.js"(exports2,module2){"use strict";var EventEmitter=require("events"),https=require("https"),http=require("http"),net=require("net"),tls=require("tls"),{randomBytes,createHash}=require("crypto"),{Duplex,Readable}=require("stream"),{URL:URL2}=require("url"),PerMessageDeflate=require_permessage_deflate(),Receiver=require_receiver(),Sender=require_sender(),{isBlob}=require_validation(),{BINARY_TYPES,CLOSE_TIMEOUT,EMPTY_BUFFER,GUID,kForOnEventAttribute,kListener,kStatusCode,kWebSocket,NOOP}=require_constants4(),{EventTarget:{addEventListener,removeEventListener}}=require_event_target(),{format,parse}=require_extension(),{toBuffer}=require_buffer_util(),kAborted=Symbol("kAborted"),protocolVersions=[8,13],readyStates=["CONNECTING","OPEN","CLOSING","CLOSED"],subprotocolRegex=/^[!#$%&'*+\-.0-9A-Z^_`|a-z~]+$/,WebSocket=class _WebSocket extends EventEmitter{constructor(address,protocols,options){super(),this._binaryType=BINARY_TYPES[0],this._closeCode=1006,this._closeFrameReceived=!1,this._closeFrameSent=!1,this._closeMessage=EMPTY_BUFFER,this._closeTimer=null,this._errorEmitted=!1,this._extensions={},this._paused=!1,this._protocol="",this._readyState=_WebSocket.CONNECTING,this._receiver=null,this._sender=null,this._socket=null,address!==null?(this._bufferedAmount=0,this._isServer=!1,this._redirects=0,protocols===void 0?protocols=[]:Array.isArray(protocols)||(typeof protocols=="object"&&protocols!==null?(options=protocols,protocols=[]):protocols=[protocols]),initAsClient(this,address,protocols,options)):(this._autoPong=options.autoPong,this._closeTimeout=options.closeTimeout,this._isServer=!0)}get binaryType(){return this._binaryType}set binaryType(type){BINARY_TYPES.includes(type)&&(this._binaryType=type,this._receiver&&(this._receiver._binaryType=type))}get bufferedAmount(){return this._socket?this._socket._writableState.length+this._sender._bufferedBytes:this._bufferedAmount}get extensions(){return Object.keys(this._extensions).join()}get isPaused(){return this._paused}get onclose(){return null}get onerror(){return null}get onopen(){return null}get onmessage(){return null}get protocol(){return this._protocol}get readyState(){return this._readyState}get url(){return this._url}setSocket(socket,head,options){let receiver=new Receiver({allowSynchronousEvents:options.allowSynchronousEvents,binaryType:this.binaryType,extensions:this._extensions,isServer:this._isServer,maxBufferedChunks:options.maxBufferedChunks,maxFragments:options.maxFragments,maxPayload:options.maxPayload,skipUTF8Validation:options.skipUTF8Validation}),sender=new Sender(socket,this._extensions,options.generateMask);this._receiver=receiver,this._sender=sender,this._socket=socket,receiver[kWebSocket]=this,sender[kWebSocket]=this,socket[kWebSocket]=this,receiver.on("conclude",receiverOnConclude),receiver.on("drain",receiverOnDrain),receiver.on("error",receiverOnError),receiver.on("message",receiverOnMessage),receiver.on("ping",receiverOnPing),receiver.on("pong",receiverOnPong),sender.onerror=senderOnError,socket.setTimeout&&socket.setTimeout(0),socket.setNoDelay&&socket.setNoDelay(),head.length>0&&socket.unshift(head),socket.on("close",socketOnClose),socket.on("data",socketOnData),socket.on("end",socketOnEnd),socket.on("error",socketOnError),this._readyState=_WebSocket.OPEN,this.emit("open")}emitClose(){if(!this._socket){this._readyState=_WebSocket.CLOSED,this.emit("close",this._closeCode,this._closeMessage);return}this._extensions[PerMessageDeflate.extensionName]&&this._extensions[PerMessageDeflate.extensionName].cleanup(),this._receiver.removeAllListeners(),this._readyState=_WebSocket.CLOSED,this.emit("close",this._closeCode,this._closeMessage)}close(code,data){if(this.readyState!==_WebSocket.CLOSED){if(this.readyState===_WebSocket.CONNECTING){abortHandshake(this,this._req,"WebSocket was closed before the connection was established");return}if(this.readyState===_WebSocket.CLOSING){this._closeFrameSent&&(this._closeFrameReceived||this._receiver._writableState.errorEmitted)&&this._socket.end();return}this._readyState=_WebSocket.CLOSING,this._sender.close(code,data,!this._isServer,err=>{err||(this._closeFrameSent=!0,(this._closeFrameReceived||this._receiver._writableState.errorEmitted)&&this._socket.end())}),setCloseTimer(this)}}pause(){this.readyState===_WebSocket.CONNECTING||this.readyState===_WebSocket.CLOSED||(this._paused=!0,this._socket.pause())}ping(data,mask,cb){if(this.readyState===_WebSocket.CONNECTING)throw new Error("WebSocket is not open: readyState 0 (CONNECTING)");if(typeof data=="function"?(cb=data,data=mask=void 0):typeof mask=="function"&&(cb=mask,mask=void 0),typeof data=="number"&&(data=data.toString()),this.readyState!==_WebSocket.OPEN){sendAfterClose(this,data,cb);return}mask===void 0&&(mask=!this._isServer),this._sender.ping(data||EMPTY_BUFFER,mask,cb)}pong(data,mask,cb){if(this.readyState===_WebSocket.CONNECTING)throw new Error("WebSocket is not open: readyState 0 (CONNECTING)");if(typeof data=="function"?(cb=data,data=mask=void 0):typeof mask=="function"&&(cb=mask,mask=void 0),typeof data=="number"&&(data=data.toString()),this.readyState!==_WebSocket.OPEN){sendAfterClose(this,data,cb);return}mask===void 0&&(mask=!this._isServer),this._sender.pong(data||EMPTY_BUFFER,mask,cb)}resume(){this.readyState===_WebSocket.CONNECTING||this.readyState===_WebSocket.CLOSED||(this._paused=!1,this._receiver._writableState.needDrain||this._socket.resume())}send(data,options,cb){if(this.readyState===_WebSocket.CONNECTING)throw new Error("WebSocket is not open: readyState 0 (CONNECTING)");if(typeof options=="function"&&(cb=options,options={}),typeof data=="number"&&(data=data.toString()),this.readyState!==_WebSocket.OPEN){sendAfterClose(this,data,cb);return}let opts={binary:typeof data!="string",mask:!this._isServer,compress:!0,fin:!0,...options};this._extensions[PerMessageDeflate.extensionName]||(opts.compress=!1),this._sender.send(data||EMPTY_BUFFER,opts,cb)}terminate(){if(this.readyState!==_WebSocket.CLOSED){if(this.readyState===_WebSocket.CONNECTING){abortHandshake(this,this._req,"WebSocket was closed before the connection was established");return}this._socket&&(this._readyState=_WebSocket.CLOSING,this._socket.destroy())}}};Object.defineProperty(WebSocket,"CONNECTING",{enumerable:!0,value:readyStates.indexOf("CONNECTING")});Object.defineProperty(WebSocket.prototype,"CONNECTING",{enumerable:!0,value:readyStates.indexOf("CONNECTING")});Object.defineProperty(WebSocket,"OPEN",{enumerable:!0,value:readyStates.indexOf("OPEN")});Object.defineProperty(WebSocket.prototype,"OPEN",{enumerable:!0,value:readyStates.indexOf("OPEN")});Object.defineProperty(WebSocket,"CLOSING",{enumerable:!0,value:readyStates.indexOf("CLOSING")});Object.defineProperty(WebSocket.prototype,"CLOSING",{enumerable:!0,value:readyStates.indexOf("CLOSING")});Object.defineProperty(WebSocket,"CLOSED",{enumerable:!0,value:readyStates.indexOf("CLOSED")});Object.defineProperty(WebSocket.prototype,"CLOSED",{enumerable:!0,value:readyStates.indexOf("CLOSED")});["binaryType","bufferedAmount","extensions","isPaused","protocol","readyState","url"].forEach(property=>{Object.defineProperty(WebSocket.prototype,property,{enumerable:!0})});["open","error","close","message"].forEach(method=>{Object.defineProperty(WebSocket.prototype,`on${method}`,{enumerable:!0,get(){for(let listener of this.listeners(method))if(listener[kForOnEventAttribute])return listener[kListener];return null},set(handler){for(let listener of this.listeners(method))if(listener[kForOnEventAttribute]){this.removeListener(method,listener);break}typeof handler=="function"&&this.addEventListener(method,handler,{[kForOnEventAttribute]:!0})}})});WebSocket.prototype.addEventListener=addEventListener;WebSocket.prototype.removeEventListener=removeEventListener;module2.exports=WebSocket;function initAsClient(websocket,address,protocols,options){let opts={allowSynchronousEvents:!0,autoPong:!0,closeTimeout:CLOSE_TIMEOUT,protocolVersion:protocolVersions[1],maxBufferedChunks:262144,maxFragments:16384,maxPayload:104857600,skipUTF8Validation:!1,perMessageDeflate:!0,followRedirects:!1,maxRedirects:10,...options,socketPath:void 0,hostname:void 0,protocol:void 0,timeout:void 0,method:"GET",host:void 0,path:void 0,port:void 0};if(websocket._autoPong=opts.autoPong,websocket._closeTimeout=opts.closeTimeout,!protocolVersions.includes(opts.protocolVersion))throw new RangeError(`Unsupported protocol version: ${opts.protocolVersion} (supported versions: ${protocolVersions.join(", ")})`);let parsedUrl;if(address instanceof URL2)parsedUrl=address;else try{parsedUrl=new URL2(address)}catch{throw new SyntaxError(`Invalid URL: ${address}`)}parsedUrl.protocol==="http:"?parsedUrl.protocol="ws:":parsedUrl.protocol==="https:"&&(parsedUrl.protocol="wss:"),websocket._url=parsedUrl.href;let isSecure=parsedUrl.protocol==="wss:",isIpcUrl=parsedUrl.protocol==="ws+unix:",invalidUrlMessage;if(parsedUrl.protocol!=="ws:"&&!isSecure&&!isIpcUrl?invalidUrlMessage=`The URL's protocol must be one of "ws:", "wss:", "http:", "https:", or "ws+unix:"`:isIpcUrl&&!parsedUrl.pathname?invalidUrlMessage="The URL's pathname is empty":parsedUrl.hash&&(invalidUrlMessage="The URL contains a fragment identifier"),invalidUrlMessage){let err=new SyntaxError(invalidUrlMessage);if(websocket._redirects===0)throw err;emitErrorAndClose(websocket,err);return}let defaultPort=isSecure?443:80,key=randomBytes(16).toString("base64"),request=isSecure?https.request:http.request,protocolSet=new Set,perMessageDeflate;if(opts.createConnection=opts.createConnection||(isSecure?tlsConnect:netConnect),opts.defaultPort=opts.defaultPort||defaultPort,opts.port=parsedUrl.port||defaultPort,opts.host=parsedUrl.hostname.startsWith("[")?parsedUrl.hostname.slice(1,-1):parsedUrl.hostname,opts.headers={...opts.headers,"Sec-WebSocket-Version":opts.protocolVersion,"Sec-WebSocket-Key":key,Connection:"Upgrade",Upgrade:"websocket"},opts.path=parsedUrl.pathname+parsedUrl.search,opts.timeout=opts.handshakeTimeout,opts.perMessageDeflate&&(perMessageDeflate=new PerMessageDeflate({...opts.perMessageDeflate,isServer:!1,maxPayload:opts.maxPayload}),opts.headers["Sec-WebSocket-Extensions"]=format({[PerMessageDeflate.extensionName]:perMessageDeflate.offer()})),protocols.length){for(let protocol of protocols){if(typeof protocol!="string"||!subprotocolRegex.test(protocol)||protocolSet.has(protocol))throw new SyntaxError("An invalid or duplicated subprotocol was specified");protocolSet.add(protocol)}opts.headers["Sec-WebSocket-Protocol"]=protocols.join(",")}if(opts.origin&&(opts.protocolVersion<13?opts.headers["Sec-WebSocket-Origin"]=opts.origin:opts.headers.Origin=opts.origin),(parsedUrl.username||parsedUrl.password)&&(opts.auth=`${parsedUrl.username}:${parsedUrl.password}`),isIpcUrl){let parts=opts.path.split(":");opts.socketPath=parts[0],opts.path=parts[1]}let req;if(opts.followRedirects){if(websocket._redirects===0){websocket._originalIpc=isIpcUrl,websocket._originalSecure=isSecure,websocket._originalHostOrSocketPath=isIpcUrl?opts.socketPath:parsedUrl.host;let headers=options&&options.headers;if(options={...options,headers:{}},headers)for(let[key2,value]of Object.entries(headers))options.headers[key2.toLowerCase()]=value}else if(websocket.listenerCount("redirect")===0){let isSameHost=isIpcUrl?websocket._originalIpc?opts.socketPath===websocket._originalHostOrSocketPath:!1:websocket._originalIpc?!1:parsedUrl.host===websocket._originalHostOrSocketPath;(!isSameHost||websocket._originalSecure&&!isSecure)&&(delete opts.headers.authorization,delete opts.headers.cookie,isSameHost||delete opts.headers.host,opts.auth=void 0)}opts.auth&&!options.headers.authorization&&(options.headers.authorization="Basic "+Buffer.from(opts.auth).toString("base64")),req=websocket._req=request(opts),websocket._redirects&&websocket.emit("redirect",websocket.url,req)}else req=websocket._req=request(opts);opts.timeout&&req.on("timeout",()=>{abortHandshake(websocket,req,"Opening handshake has timed out")}),req.on("error",err=>{req===null||req[kAborted]||(req=websocket._req=null,emitErrorAndClose(websocket,err))}),req.on("response",res=>{let location=res.headers.location,statusCode=res.statusCode;if(location&&opts.followRedirects&&statusCode>=300&&statusCode<400){if(++websocket._redirects>opts.maxRedirects){abortHandshake(websocket,req,"Maximum redirects exceeded");return}req.abort();let addr;try{addr=new URL2(location,address)}catch{let err=new SyntaxError(`Invalid URL: ${location}`);emitErrorAndClose(websocket,err);return}initAsClient(websocket,addr,protocols,options)}else websocket.emit("unexpected-response",req,res)||abortHandshake(websocket,req,`Unexpected server response: ${res.statusCode}`)}),req.on("upgrade",(res,socket,head)=>{if(websocket.emit("upgrade",res),websocket.readyState!==WebSocket.CONNECTING)return;req=websocket._req=null;let upgrade=res.headers.upgrade;if(upgrade===void 0||upgrade.toLowerCase()!=="websocket"){abortHandshake(websocket,socket,"Invalid Upgrade header");return}let digest=createHash("sha1").update(key+GUID).digest("base64");if(res.headers["sec-websocket-accept"]!==digest){abortHandshake(websocket,socket,"Invalid Sec-WebSocket-Accept header");return}let serverProt=res.headers["sec-websocket-protocol"],protError;if(serverProt!==void 0?protocolSet.size?protocolSet.has(serverProt)||(protError="Server sent an invalid subprotocol"):protError="Server sent a subprotocol but none was requested":protocolSet.size&&(protError="Server sent no subprotocol"),protError){abortHandshake(websocket,socket,protError);return}serverProt&&(websocket._protocol=serverProt);let secWebSocketExtensions=res.headers["sec-websocket-extensions"];if(secWebSocketExtensions!==void 0){if(!perMessageDeflate){abortHandshake(websocket,socket,"Server sent a Sec-WebSocket-Extensions header but no extension was requested");return}let extensions;try{extensions=parse(secWebSocketExtensions)}catch{abortHandshake(websocket,socket,"Invalid Sec-WebSocket-Extensions header");return}let extensionNames=Object.keys(extensions);if(extensionNames.length!==1||extensionNames[0]!==PerMessageDeflate.extensionName){abortHandshake(websocket,socket,"Server indicated an extension that was not requested");return}try{perMessageDeflate.accept(extensions[PerMessageDeflate.extensionName])}catch{abortHandshake(websocket,socket,"Invalid Sec-WebSocket-Extensions header");return}websocket._extensions[PerMessageDeflate.extensionName]=perMessageDeflate}websocket.setSocket(socket,head,{allowSynchronousEvents:opts.allowSynchronousEvents,generateMask:opts.generateMask,maxBufferedChunks:opts.maxBufferedChunks,maxFragments:opts.maxFragments,maxPayload:opts.maxPayload,skipUTF8Validation:opts.skipUTF8Validation})}),opts.finishRequest?opts.finishRequest(req,websocket):req.end()}function emitErrorAndClose(websocket,err){websocket._readyState=WebSocket.CLOSING,websocket._errorEmitted=!0,websocket.emit("error",err),websocket.emitClose()}function netConnect(options){return options.path=options.socketPath,net.connect(options)}function tlsConnect(options){return options.path=void 0,!options.servername&&options.servername!==""&&(options.servername=net.isIP(options.host)?"":options.host),tls.connect(options)}function abortHandshake(websocket,stream,message){websocket._readyState=WebSocket.CLOSING;let err=new Error(message);Error.captureStackTrace(err,abortHandshake),stream.setHeader?(stream[kAborted]=!0,stream.abort(),stream.socket&&!stream.socket.destroyed&&stream.socket.destroy(),process.nextTick(emitErrorAndClose,websocket,err)):(stream.destroy(err),stream.once("error",websocket.emit.bind(websocket,"error")),stream.once("close",websocket.emitClose.bind(websocket)))}function sendAfterClose(websocket,data,cb){if(data){let length=isBlob(data)?data.size:toBuffer(data).length;websocket._socket?websocket._sender._bufferedBytes+=length:websocket._bufferedAmount+=length}if(cb){let err=new Error(`WebSocket is not open: readyState ${websocket.readyState} (${readyStates[websocket.readyState]})`);process.nextTick(cb,err)}}function receiverOnConclude(code,reason){let websocket=this[kWebSocket];websocket._closeFrameReceived=!0,websocket._closeMessage=reason,websocket._closeCode=code,websocket._socket[kWebSocket]!==void 0&&(websocket._socket.removeListener("data",socketOnData),process.nextTick(resume,websocket._socket),code===1005?websocket.close():websocket.close(code,reason))}function receiverOnDrain(){let websocket=this[kWebSocket];websocket.isPaused||websocket._socket.resume()}function receiverOnError(err){let websocket=this[kWebSocket];websocket._socket[kWebSocket]!==void 0&&(websocket._socket.removeListener("data",socketOnData),process.nextTick(resume,websocket._socket),websocket.close(err[kStatusCode])),websocket._errorEmitted||(websocket._errorEmitted=!0,websocket.emit("error",err))}function receiverOnFinish(){this[kWebSocket].emitClose()}function receiverOnMessage(data,isBinary){this[kWebSocket].emit("message",data,isBinary)}function receiverOnPing(data){let websocket=this[kWebSocket];websocket._autoPong&&websocket.pong(data,!this._isServer,NOOP),websocket.emit("ping",data)}function receiverOnPong(data){this[kWebSocket].emit("pong",data)}function resume(stream){stream.resume()}function senderOnError(err){let websocket=this[kWebSocket];websocket.readyState!==WebSocket.CLOSED&&(websocket.readyState===WebSocket.OPEN&&(websocket._readyState=WebSocket.CLOSING,setCloseTimer(websocket)),this._socket.end(),websocket._errorEmitted||(websocket._errorEmitted=!0,websocket.emit("error",err)))}function setCloseTimer(websocket){websocket._closeTimer=setTimeout(websocket._socket.destroy.bind(websocket._socket),websocket._closeTimeout)}function socketOnClose(){let websocket=this[kWebSocket];if(this.removeListener("close",socketOnClose),this.removeListener("data",socketOnData),this.removeListener("end",socketOnEnd),websocket._readyState=WebSocket.CLOSING,!this._readableState.endEmitted&&!websocket._closeFrameReceived&&!websocket._receiver._writableState.errorEmitted&&this._readableState.length!==0){let chunk=this.read(this._readableState.length);websocket._receiver.write(chunk)}websocket._receiver.end(),this[kWebSocket]=void 0,clearTimeout(websocket._closeTimer),websocket._receiver._writableState.finished||websocket._receiver._writableState.errorEmitted?websocket.emitClose():(websocket._receiver.on("error",receiverOnFinish),websocket._receiver.on("finish",receiverOnFinish))}function socketOnData(chunk){this[kWebSocket]._receiver.write(chunk)||this.pause()}function socketOnEnd(){let websocket=this[kWebSocket];websocket._readyState=WebSocket.CLOSING,websocket._receiver.end(),this.end()}function socketOnError(){let websocket=this[kWebSocket];this.removeListener("error",socketOnError),this.on("error",NOOP),websocket&&(websocket._readyState=WebSocket.CLOSING,this.destroy())}}});var require_stream=__commonJS({"node_modules/ws/lib/stream.js"(exports2,module2){"use strict";var WebSocket=require_websocket2(),{Duplex}=require("stream");function emitClose(stream){stream.emit("close")}function duplexOnEnd(){!this.destroyed&&this._writableState.finished&&this.destroy()}function duplexOnError(err){this.removeListener("error",duplexOnError),this.destroy(),this.listenerCount("error")===0&&this.emit("error",err)}function createWebSocketStream(ws,options){let terminateOnDestroy=!0,duplex=new Duplex({...options,autoDestroy:!1,emitClose:!1,objectMode:!1,writableObjectMode:!1});return ws.on("message",function(msg,isBinary){let data=!isBinary&&duplex._readableState.objectMode?msg.toString():msg;duplex.push(data)||ws.pause()}),ws.once("error",function(err){duplex.destroyed||(terminateOnDestroy=!1,duplex.destroy(err))}),ws.once("close",function(){duplex.destroyed||duplex.push(null)}),duplex._destroy=function(err,callback){if(ws.readyState===ws.CLOSED){callback(err),process.nextTick(emitClose,duplex);return}let called=!1;ws.once("error",function(err2){called=!0,callback(err2)}),ws.once("close",function(){called||callback(err),process.nextTick(emitClose,duplex)}),terminateOnDestroy&&ws.terminate()},duplex._final=function(callback){if(ws.readyState===ws.CONNECTING){ws.once("open",function(){duplex._final(callback)});return}ws._socket!==null&&(ws._socket._writableState.finished?(callback(),duplex._readableState.endEmitted&&duplex.destroy()):(ws._socket.once("finish",function(){callback()}),ws.close()))},duplex._read=function(){ws.isPaused&&ws.resume()},duplex._write=function(chunk,encoding,callback){if(ws.readyState===ws.CONNECTING){ws.once("open",function(){duplex._write(chunk,encoding,callback)});return}ws.send(chunk,callback)},duplex.on("end",duplexOnEnd),duplex.on("error",duplexOnError),duplex}module2.exports=createWebSocketStream}});var require_subprotocol=__commonJS({"node_modules/ws/lib/subprotocol.js"(exports2,module2){"use strict";var{tokenChars}=require_validation();function parse(header){let protocols=new Set,start=-1,end=-1,i=0;for(i;i<header.length;i++){let code=header.charCodeAt(i);if(end===-1&&tokenChars[code]===1)start===-1&&(start=i);else if(i!==0&&(code===32||code===9))end===-1&&start!==-1&&(end=i);else if(code===44){if(start===-1)throw new SyntaxError(`Unexpected character at index ${i}`);end===-1&&(end=i);let protocol2=header.slice(start,end);if(protocols.has(protocol2))throw new SyntaxError(`The "${protocol2}" subprotocol is duplicated`);protocols.add(protocol2),start=end=-1}else throw new SyntaxError(`Unexpected character at index ${i}`)}if(start===-1||end!==-1)throw new SyntaxError("Unexpected end of input");let protocol=header.slice(start,i);if(protocols.has(protocol))throw new SyntaxError(`The "${protocol}" subprotocol is duplicated`);return protocols.add(protocol),protocols}module2.exports={parse}}});var require_websocket_server=__commonJS({"node_modules/ws/lib/websocket-server.js"(exports2,module2){"use strict";var EventEmitter=require("events"),http=require("http"),{Duplex}=require("stream"),{createHash}=require("crypto"),extension=require_extension(),PerMessageDeflate=require_permessage_deflate(),subprotocol=require_subprotocol(),WebSocket=require_websocket2(),{CLOSE_TIMEOUT,GUID,kWebSocket}=require_constants4(),keyRegex=/^[+/0-9A-Za-z]{22}==$/,RUNNING=0,CLOSING=1,CLOSED=2,WebSocketServer=class extends EventEmitter{constructor(options,callback){if(super(),options={allowSynchronousEvents:!0,autoPong:!0,maxBufferedChunks:256*1024,maxFragments:16*1024,maxPayload:100*1024*1024,skipUTF8Validation:!1,perMessageDeflate:!1,handleProtocols:null,clientTracking:!0,closeTimeout:CLOSE_TIMEOUT,verifyClient:null,noServer:!1,backlog:null,server:null,host:null,path:null,port:null,WebSocket,...options},options.port==null&&!options.server&&!options.noServer||options.port!=null&&(options.server||options.noServer)||options.server&&options.noServer)throw new TypeError('One and only one of the "port", "server", or "noServer" options must be specified');if(options.port!=null?(this._server=http.createServer((req,res)=>{let body=http.STATUS_CODES[426];res.writeHead(426,{"Content-Length":body.length,"Content-Type":"text/plain"}),res.end(body)}),this._server.listen(options.port,options.host,options.backlog,callback)):options.server&&(this._server=options.server),this._server){let emitConnection=this.emit.bind(this,"connection");this._removeListeners=addListeners(this._server,{listening:this.emit.bind(this,"listening"),error:this.emit.bind(this,"error"),upgrade:(req,socket,head)=>{this.handleUpgrade(req,socket,head,emitConnection)}})}options.perMessageDeflate===!0&&(options.perMessageDeflate={}),options.clientTracking&&(this.clients=new Set,this._shouldEmitClose=!1),this.options=options,this._state=RUNNING}address(){if(this.options.noServer)throw new Error('The server is operating in "noServer" mode');return this._server?this._server.address():null}close(cb){if(this._state===CLOSED){cb&&this.once("close",()=>{cb(new Error("The server is not running"))}),process.nextTick(emitClose,this);return}if(cb&&this.once("close",cb),this._state!==CLOSING)if(this._state=CLOSING,this.options.noServer||this.options.server)this._server&&(this._removeListeners(),this._removeListeners=this._server=null),this.clients?this.clients.size?this._shouldEmitClose=!0:process.nextTick(emitClose,this):process.nextTick(emitClose,this);else{let server=this._server;this._removeListeners(),this._removeListeners=this._server=null,server.close(()=>{emitClose(this)})}}shouldHandle(req){if(this.options.path){let index=req.url.indexOf("?");if((index!==-1?req.url.slice(0,index):req.url)!==this.options.path)return!1}return!0}handleUpgrade(req,socket,head,cb){socket.on("error",socketOnError);let key=req.headers["sec-websocket-key"],upgrade=req.headers.upgrade,version=+req.headers["sec-websocket-version"];if(req.method!=="GET"){abortHandshakeOrEmitwsClientError(this,req,socket,405,"Invalid HTTP method");return}if(upgrade===void 0||upgrade.toLowerCase()!=="websocket"){abortHandshakeOrEmitwsClientError(this,req,socket,400,"Invalid Upgrade header");return}if(key===void 0||!keyRegex.test(key)){abortHandshakeOrEmitwsClientError(this,req,socket,400,"Missing or invalid Sec-WebSocket-Key header");return}if(version!==13&&version!==8){abortHandshakeOrEmitwsClientError(this,req,socket,400,"Missing or invalid Sec-WebSocket-Version header",{"Sec-WebSocket-Version":"13, 8"});return}if(!this.shouldHandle(req)){abortHandshake(socket,400);return}let secWebSocketProtocol=req.headers["sec-websocket-protocol"],protocols=new Set;if(secWebSocketProtocol!==void 0)try{protocols=subprotocol.parse(secWebSocketProtocol)}catch{abortHandshakeOrEmitwsClientError(this,req,socket,400,"Invalid Sec-WebSocket-Protocol header");return}let secWebSocketExtensions=req.headers["sec-websocket-extensions"],extensions={};if(this.options.perMessageDeflate&&secWebSocketExtensions!==void 0){let perMessageDeflate=new PerMessageDeflate({...this.options.perMessageDeflate,isServer:!0,maxPayload:this.options.maxPayload});try{let offers=extension.parse(secWebSocketExtensions);offers[PerMessageDeflate.extensionName]&&(perMessageDeflate.accept(offers[PerMessageDeflate.extensionName]),extensions[PerMessageDeflate.extensionName]=perMessageDeflate)}catch{abortHandshakeOrEmitwsClientError(this,req,socket,400,"Invalid or unacceptable Sec-WebSocket-Extensions header");return}}if(this.options.verifyClient){let info={origin:req.headers[`${version===8?"sec-websocket-origin":"origin"}`],secure:!!(req.socket.authorized||req.socket.encrypted),req};if(this.options.verifyClient.length===2){this.options.verifyClient(info,(verified,code,message,headers)=>{if(!verified)return abortHandshake(socket,code||401,message,headers);this.completeUpgrade(extensions,key,protocols,req,socket,head,cb)});return}if(!this.options.verifyClient(info))return abortHandshake(socket,401)}this.completeUpgrade(extensions,key,protocols,req,socket,head,cb)}completeUpgrade(extensions,key,protocols,req,socket,head,cb){if(!socket.readable||!socket.writable)return socket.destroy();if(socket[kWebSocket])throw new Error("server.handleUpgrade() was called more than once with the same socket, possibly due to a misconfiguration");if(this._state>RUNNING)return abortHandshake(socket,503);let headers=["HTTP/1.1 101 Switching Protocols","Upgrade: websocket","Connection: Upgrade",`Sec-WebSocket-Accept: ${createHash("sha1").update(key+GUID).digest("base64")}`],ws=new this.options.WebSocket(null,void 0,this.options);if(protocols.size){let protocol=this.options.handleProtocols?this.options.handleProtocols(protocols,req):protocols.values().next().value;protocol&&(headers.push(`Sec-WebSocket-Protocol: ${protocol}`),ws._protocol=protocol)}if(extensions[PerMessageDeflate.extensionName]){let params=extensions[PerMessageDeflate.extensionName].params,value=extension.format({[PerMessageDeflate.extensionName]:[params]});headers.push(`Sec-WebSocket-Extensions: ${value}`),ws._extensions=extensions}this.emit("headers",headers,req),socket.write(headers.concat(`\r
|
|
255
|
+
`}),super.onData(data.replace(rDoubleSlashes,"\\n")))}doWrite(data,options,callback){let js=JSON.stringify(data).replace(/\u2028/g,"\\u2028").replace(/\u2029/g,"\\u2029");data=this.head+js+this.foot,super.doWrite(data,options,callback)}};exports2.JSONP=JSONP}});var require_websocket=__commonJS({"node_modules/engine.io/build/transports/websocket.js"(exports2){"use strict";Object.defineProperty(exports2,"__esModule",{value:!0});exports2.WebSocket=void 0;var transport_1=require_transport(),debug_1=require_src7(),debug=(0,debug_1.default)("engine:ws"),WebSocket=class extends transport_1.Transport{constructor(req){super(req),this._doSend=data=>{this.socket.send(data,this._onSent)},this._doSendLast=data=>{this.socket.send(data,this._onSentLast)},this._onSent=err=>{err&&this.onError("write error",err.stack)},this._onSentLast=err=>{err?this.onError("write error",err.stack):(this.emit("drain"),this.writable=!0,this.emit("ready"))},this.socket=req.websocket,this.socket.on("message",(data,isBinary)=>{let message=isBinary?data:data.toString();debug('received "%s"',message),super.onData(message)}),this.socket.once("close",this.onClose.bind(this)),this.socket.on("error",this.onError.bind(this)),this.writable=!0,this.perMessageDeflate=null}get name(){return"websocket"}get handlesUpgrades(){return!0}send(packets){this.writable=!1;for(let i=0;i<packets.length;i++){let packet=packets[i],isLast=i+1===packets.length;this._canSendPreEncodedFrame(packet)?this.socket._sender.sendFrame(packet.options.wsPreEncodedFrame,isLast?this._onSentLast:this._onSent):this.parser.encodePacket(packet,this.supportsBinary,isLast?this._doSendLast:this._doSend)}}_canSendPreEncodedFrame(packet){var _a,_b,_c;return!this.perMessageDeflate&&typeof((_b=(_a=this.socket)===null||_a===void 0?void 0:_a._sender)===null||_b===void 0?void 0:_b.sendFrame)=="function"&&((_c=packet.options)===null||_c===void 0?void 0:_c.wsPreEncodedFrame)!==void 0}doClose(fn){debug("closing"),this.socket.close(),fn&&fn()}};exports2.WebSocket=WebSocket}});var require_webtransport=__commonJS({"node_modules/engine.io/build/transports/webtransport.js"(exports2){"use strict";Object.defineProperty(exports2,"__esModule",{value:!0});exports2.WebTransport=void 0;var transport_1=require_transport(),debug_1=require_src7(),engine_io_parser_1=require_cjs2(),debug=(0,debug_1.default)("engine:webtransport"),WebTransport=class extends transport_1.Transport{constructor(session,stream,reader){super({_query:{EIO:"4"}}),this.session=session;let transformStream=(0,engine_io_parser_1.createPacketEncoderStream)();transformStream.readable.pipeTo(stream.writable).catch(()=>{debug("the stream was closed")}),this.writer=transformStream.writable.getWriter(),(async()=>{try{for(;;){let{value,done}=await reader.read();if(done){debug("session is closed");break}debug("received chunk: %o",value),this.onPacket(value)}}catch(e){debug("error while reading: %s",e.message)}})(),session.closed.then(()=>this.onClose()),this.writable=!0}get name(){return"webtransport"}async send(packets){this.writable=!1;try{for(let i=0;i<packets.length;i++){let packet=packets[i];await this.writer.write(packet)}}catch(e){debug("error while writing: %s",e.message)}this.emit("drain"),this.writable=!0,this.emit("ready")}doClose(fn){debug("closing WebTransport session"),this.session.close(),fn&&fn()}};exports2.WebTransport=WebTransport}});var require_transports=__commonJS({"node_modules/engine.io/build/transports/index.js"(exports2){"use strict";Object.defineProperty(exports2,"__esModule",{value:!0});var polling_1=require_polling(),polling_jsonp_1=require_polling_jsonp(),websocket_1=require_websocket(),webtransport_1=require_webtransport();exports2.default={polling,websocket:websocket_1.WebSocket,webtransport:webtransport_1.WebTransport};function polling(req){return typeof req._query.j=="string"?new polling_jsonp_1.JSONP(req):new polling_1.Polling(req)}polling.upgradesTo=["websocket","webtransport"]}});var require_socket=__commonJS({"node_modules/engine.io/build/socket.js"(exports2){"use strict";Object.defineProperty(exports2,"__esModule",{value:!0});exports2.Socket=void 0;var events_1=require("events"),debug_1=require_src7(),timers_1=require("timers"),debug=(0,debug_1.default)("engine:socket"),Socket=class extends events_1.EventEmitter{get readyState(){return this._readyState}set readyState(state){debug("readyState updated from %s to %s",this._readyState,state),this._readyState=state}constructor(id,server,transport,req,protocol){super(),this._readyState="opening",this.upgrading=!1,this.upgraded=!1,this.writeBuffer=[],this.packetsFn=[],this.sentCallbackFn=[],this.cleanupFn=[],this.id=id,this.server=server,this.request=req,this.protocol=protocol,req&&(req.websocket&&req.websocket._socket?this.remoteAddress=req.websocket._socket.remoteAddress:this.remoteAddress=req.connection.remoteAddress),this.pingTimeoutTimer=null,this.pingIntervalTimer=null,this.setTransport(transport),this.onOpen()}onOpen(){this.readyState="open",this.transport.sid=this.id,this.sendPacket("open",JSON.stringify({sid:this.id,upgrades:this.getAvailableUpgrades(),pingInterval:this.server.opts.pingInterval,pingTimeout:this.server.opts.pingTimeout,maxPayload:this.server.opts.maxHttpBufferSize})),this.server.opts.initialPacket&&this.sendPacket("message",this.server.opts.initialPacket),this.emit("open"),this.protocol===3?this.resetPingTimeout():this.schedulePing()}onPacket(packet){if(this.readyState!=="open")return debug("packet received with closed socket");switch(debug(`received packet ${packet.type}`),this.emit("packet",packet),packet.type){case"ping":if(this.transport.protocol!==3){this.onError(new Error("invalid heartbeat direction"));return}debug("got ping"),this.pingTimeoutTimer.refresh(),this.sendPacket("pong"),this.emit("heartbeat");break;case"pong":if(this.transport.protocol===3){this.onError(new Error("invalid heartbeat direction"));return}debug("got pong"),(0,timers_1.clearTimeout)(this.pingTimeoutTimer),this.pingIntervalTimer.refresh(),this.emit("heartbeat");break;case"error":this.onClose("parse error");break;case"message":this.emit("data",packet.data),this.emit("message",packet.data);break}}onError(err){debug("transport error"),this.onClose("transport error",err)}schedulePing(){this.pingIntervalTimer=(0,timers_1.setTimeout)(()=>{debug("writing ping packet - expecting pong within %sms",this.server.opts.pingTimeout),this.sendPacket("ping"),this.resetPingTimeout()},this.server.opts.pingInterval)}resetPingTimeout(){(0,timers_1.clearTimeout)(this.pingTimeoutTimer),this.pingTimeoutTimer=(0,timers_1.setTimeout)(()=>{this.readyState!=="closed"&&this.onClose("ping timeout")},this.protocol===3?this.server.opts.pingInterval+this.server.opts.pingTimeout:this.server.opts.pingTimeout)}setTransport(transport){let onError=this.onError.bind(this),onReady=()=>this.flush(),onPacket=this.onPacket.bind(this),onDrain=this.onDrain.bind(this),onClose=this.onClose.bind(this,"transport close");this.transport=transport,this.transport.once("error",onError),this.transport.on("ready",onReady),this.transport.on("packet",onPacket),this.transport.on("drain",onDrain),this.transport.once("close",onClose),this.cleanupFn.push(function(){transport.removeListener("error",onError),transport.removeListener("ready",onReady),transport.removeListener("packet",onPacket),transport.removeListener("drain",onDrain),transport.removeListener("close",onClose)})}onDrain(){if(this.sentCallbackFn.length>0){debug("executing batch send callback");let seqFn=this.sentCallbackFn.shift();if(seqFn)for(let i=0;i<seqFn.length;i++)seqFn[i](this.transport)}}_maybeUpgrade(transport){debug('might upgrade socket transport from "%s" to "%s"',this.transport.name,transport.name),this.upgrading=!0;let upgradeTimeoutTimer=(0,timers_1.setTimeout)(()=>{debug("client did not complete upgrade - closing transport"),cleanup(),transport.readyState==="open"&&transport.close()},this.server.opts.upgradeTimeout),checkIntervalTimer,onPacket=packet=>{packet.type==="ping"&&packet.data==="probe"?(debug("got probe ping packet, sending pong"),transport.send([{type:"pong",data:"probe"}]),this.emit("upgrading",transport),clearInterval(checkIntervalTimer),checkIntervalTimer=setInterval(check,100)):packet.type==="upgrade"&&this.readyState!=="closed"?(debug("got upgrade packet - upgrading"),cleanup(),this.transport.discard(),this.upgraded=!0,this.clearTransport(),this.setTransport(transport),this.emit("upgrade",transport),this.flush(),this.readyState==="closing"&&transport.close(()=>{this.onClose("forced close")})):(cleanup(),transport.close())},check=()=>{this.transport.name==="polling"&&this.transport.writable&&(debug("writing a noop packet to polling for fast upgrade"),this.transport.send([{type:"noop"}]))},cleanup=()=>{this.upgrading=!1,clearInterval(checkIntervalTimer),(0,timers_1.clearTimeout)(upgradeTimeoutTimer),transport.removeListener("packet",onPacket),transport.removeListener("close",onTransportClose),transport.removeListener("error",onError),this.removeListener("close",onClose)},onError=err=>{debug("client did not complete upgrade - %s",err),cleanup(),transport.close(),transport=null},onTransportClose=()=>{onError("transport closed")},onClose=()=>{onError("socket closed")};transport.on("packet",onPacket),transport.once("close",onTransportClose),transport.once("error",onError),this.once("close",onClose)}clearTransport(){let cleanup,toCleanUp=this.cleanupFn.length;for(let i=0;i<toCleanUp;i++)cleanup=this.cleanupFn.shift(),cleanup();this.transport.on("error",function(){debug("error triggered by discarded transport")}),this.transport.close(),(0,timers_1.clearTimeout)(this.pingTimeoutTimer)}onClose(reason,description){this.readyState!=="closed"&&(this.readyState="closed",(0,timers_1.clearTimeout)(this.pingIntervalTimer),(0,timers_1.clearTimeout)(this.pingTimeoutTimer),process.nextTick(()=>{this.writeBuffer=[]}),this.packetsFn=[],this.sentCallbackFn=[],this.clearTransport(),this.emit("close",reason,description))}send(data,options,callback){return this.sendPacket("message",data,options,callback),this}write(data,options,callback){return this.sendPacket("message",data,options,callback),this}sendPacket(type,data,options={},callback){if(typeof options=="function"&&(callback=options,options={}),this.readyState!=="closing"&&this.readyState!=="closed"){debug('sending packet "%s" (%s)',type,data),options.compress=options.compress!==!1;let packet={type,options};data&&(packet.data=data),this.emit("packetCreate",packet),this.writeBuffer.push(packet),typeof callback=="function"&&this.packetsFn.push(callback),this.flush()}}flush(){if(this.readyState!=="closed"&&this.transport.writable&&this.writeBuffer.length){debug("flushing buffer to transport"),this.emit("flush",this.writeBuffer),this.server.emit("flush",this,this.writeBuffer);let wbuf=this.writeBuffer;this.writeBuffer=[],this.packetsFn.length?(this.sentCallbackFn.push(this.packetsFn),this.packetsFn=[]):this.sentCallbackFn.push(null),this.transport.send(wbuf),this.emit("drain"),this.server.emit("drain",this)}}getAvailableUpgrades(){let availableUpgrades=[],allUpgrades=this.server.upgrades(this.transport.name);for(let i=0;i<allUpgrades.length;++i){let upg=allUpgrades[i];this.server.opts.transports.indexOf(upg)!==-1&&availableUpgrades.push(upg)}return availableUpgrades}close(discard){if(discard&&(this.readyState==="open"||this.readyState==="closing"))return this.closeTransport(discard);if(this.readyState==="open"){if(this.readyState="closing",this.writeBuffer.length){debug("there are %d remaining packets in the buffer, waiting for the 'drain' event",this.writeBuffer.length),this.once("drain",()=>{debug("all packets have been sent, closing the transport"),this.closeTransport(discard)});return}debug("the buffer is empty, closing the transport right away"),this.closeTransport(discard)}}closeTransport(discard){debug("closing the transport (discard? %s)",!!discard),discard&&this.transport.discard(),this.transport.close(this.onClose.bind(this,"forced close"))}};exports2.Socket=Socket}});var require_constants5=__commonJS({"node_modules/ws/lib/constants.js"(exports2,module2){"use strict";var BINARY_TYPES=["nodebuffer","arraybuffer","fragments"],hasBlob=typeof Blob<"u";hasBlob&&BINARY_TYPES.push("blob");module2.exports={BINARY_TYPES,CLOSE_TIMEOUT:3e4,EMPTY_BUFFER:Buffer.alloc(0),GUID:"258EAFA5-E914-47DA-95CA-C5AB0DC85B11",hasBlob,kForOnEventAttribute:Symbol("kIsForOnEventAttribute"),kListener:Symbol("kListener"),kStatusCode:Symbol("status-code"),kWebSocket:Symbol("websocket"),NOOP:()=>{}}}});var require_buffer_util=__commonJS({"node_modules/ws/lib/buffer-util.js"(exports2,module2){"use strict";var{EMPTY_BUFFER}=require_constants5(),FastBuffer=Buffer[Symbol.species];function concat(list,totalLength){if(list.length===0)return EMPTY_BUFFER;if(list.length===1)return list[0];let target=Buffer.allocUnsafe(totalLength),offset=0;for(let i=0;i<list.length;i++){let buf=list[i];target.set(buf,offset),offset+=buf.length}return offset<totalLength?new FastBuffer(target.buffer,target.byteOffset,offset):target}function _mask(source,mask,output,offset,length){for(let i=0;i<length;i++)output[offset+i]=source[i]^mask[i&3]}function _unmask(buffer,mask){for(let i=0;i<buffer.length;i++)buffer[i]^=mask[i&3]}function toArrayBuffer(buf){return buf.length===buf.buffer.byteLength?buf.buffer:buf.buffer.slice(buf.byteOffset,buf.byteOffset+buf.length)}function toBuffer(data){if(toBuffer.readOnly=!0,Buffer.isBuffer(data))return data;let buf;return data instanceof ArrayBuffer?buf=new FastBuffer(data):ArrayBuffer.isView(data)?buf=new FastBuffer(data.buffer,data.byteOffset,data.byteLength):(buf=Buffer.from(data),toBuffer.readOnly=!1),buf}module2.exports={concat,mask:_mask,toArrayBuffer,toBuffer,unmask:_unmask};if(!process.env.WS_NO_BUFFER_UTIL)try{let bufferUtil=require("bufferutil");module2.exports.mask=function(source,mask,output,offset,length){length<48?_mask(source,mask,output,offset,length):bufferUtil.mask(source,mask,output,offset,length)},module2.exports.unmask=function(buffer,mask){buffer.length<32?_unmask(buffer,mask):bufferUtil.unmask(buffer,mask)}}catch{}}});var require_limiter=__commonJS({"node_modules/ws/lib/limiter.js"(exports2,module2){"use strict";var kDone=Symbol("kDone"),kRun=Symbol("kRun"),Limiter=class{constructor(concurrency){this[kDone]=()=>{this.pending--,this[kRun]()},this.concurrency=concurrency||1/0,this.jobs=[],this.pending=0}add(job){this.jobs.push(job),this[kRun]()}[kRun](){if(this.pending!==this.concurrency&&this.jobs.length){let job=this.jobs.shift();this.pending++,job(this[kDone])}}};module2.exports=Limiter}});var require_permessage_deflate=__commonJS({"node_modules/ws/lib/permessage-deflate.js"(exports2,module2){"use strict";var zlib=require("zlib"),bufferUtil=require_buffer_util(),Limiter=require_limiter(),{kStatusCode}=require_constants5(),FastBuffer=Buffer[Symbol.species],TRAILER=Buffer.from([0,0,255,255]),kPerMessageDeflate=Symbol("permessage-deflate"),kTotalLength=Symbol("total-length"),kCallback=Symbol("callback"),kBuffers=Symbol("buffers"),kError=Symbol("error"),zlibLimiter,PerMessageDeflate=class{constructor(options){if(this._options=options||{},this._threshold=this._options.threshold!==void 0?this._options.threshold:1024,this._maxPayload=this._options.maxPayload|0,this._isServer=!!this._options.isServer,this._deflate=null,this._inflate=null,this.params=null,!zlibLimiter){let concurrency=this._options.concurrencyLimit!==void 0?this._options.concurrencyLimit:10;zlibLimiter=new Limiter(concurrency)}}static get extensionName(){return"permessage-deflate"}offer(){let params={};return this._options.serverNoContextTakeover&&(params.server_no_context_takeover=!0),this._options.clientNoContextTakeover&&(params.client_no_context_takeover=!0),this._options.serverMaxWindowBits&&(params.server_max_window_bits=this._options.serverMaxWindowBits),this._options.clientMaxWindowBits?params.client_max_window_bits=this._options.clientMaxWindowBits:this._options.clientMaxWindowBits==null&&(params.client_max_window_bits=!0),params}accept(configurations){return configurations=this.normalizeParams(configurations),this.params=this._isServer?this.acceptAsServer(configurations):this.acceptAsClient(configurations),this.params}cleanup(){if(this._inflate&&(this._inflate.close(),this._inflate=null),this._deflate){let callback=this._deflate[kCallback];this._deflate.close(),this._deflate=null,callback&&callback(new Error("The deflate stream was closed while data was being processed"))}}acceptAsServer(offers){let opts=this._options,accepted=offers.find(params=>!(opts.serverNoContextTakeover===!1&¶ms.server_no_context_takeover||params.server_max_window_bits&&(opts.serverMaxWindowBits===!1||typeof opts.serverMaxWindowBits=="number"&&opts.serverMaxWindowBits>params.server_max_window_bits)||typeof opts.clientMaxWindowBits=="number"&&!params.client_max_window_bits));if(!accepted)throw new Error("None of the extension offers can be accepted");return opts.serverNoContextTakeover&&(accepted.server_no_context_takeover=!0),opts.clientNoContextTakeover&&(accepted.client_no_context_takeover=!0),typeof opts.serverMaxWindowBits=="number"&&(accepted.server_max_window_bits=opts.serverMaxWindowBits),typeof opts.clientMaxWindowBits=="number"?accepted.client_max_window_bits=opts.clientMaxWindowBits:(accepted.client_max_window_bits===!0||opts.clientMaxWindowBits===!1)&&delete accepted.client_max_window_bits,accepted}acceptAsClient(response){let params=response[0];if(this._options.clientNoContextTakeover===!1&¶ms.client_no_context_takeover)throw new Error('Unexpected parameter "client_no_context_takeover"');if(!params.client_max_window_bits)typeof this._options.clientMaxWindowBits=="number"&&(params.client_max_window_bits=this._options.clientMaxWindowBits);else if(this._options.clientMaxWindowBits===!1||typeof this._options.clientMaxWindowBits=="number"&¶ms.client_max_window_bits>this._options.clientMaxWindowBits)throw new Error('Unexpected or invalid parameter "client_max_window_bits"');return params}normalizeParams(configurations){return configurations.forEach(params=>{Object.keys(params).forEach(key=>{let value=params[key];if(value.length>1)throw new Error(`Parameter "${key}" must have only a single value`);if(value=value[0],key==="client_max_window_bits"){if(value!==!0){let num=+value;if(!Number.isInteger(num)||num<8||num>15)throw new TypeError(`Invalid value for parameter "${key}": ${value}`);value=num}else if(!this._isServer)throw new TypeError(`Invalid value for parameter "${key}": ${value}`)}else if(key==="server_max_window_bits"){let num=+value;if(!Number.isInteger(num)||num<8||num>15)throw new TypeError(`Invalid value for parameter "${key}": ${value}`);value=num}else if(key==="client_no_context_takeover"||key==="server_no_context_takeover"){if(value!==!0)throw new TypeError(`Invalid value for parameter "${key}": ${value}`)}else throw new Error(`Unknown parameter "${key}"`);params[key]=value})}),configurations}decompress(data,fin,callback){zlibLimiter.add(done=>{this._decompress(data,fin,(err,result)=>{done(),callback(err,result)})})}compress(data,fin,callback){zlibLimiter.add(done=>{this._compress(data,fin,(err,result)=>{done(),callback(err,result)})})}_decompress(data,fin,callback){let endpoint=this._isServer?"client":"server";if(!this._inflate){let key=`${endpoint}_max_window_bits`,windowBits=typeof this.params[key]!="number"?zlib.Z_DEFAULT_WINDOWBITS:this.params[key];this._inflate=zlib.createInflateRaw({...this._options.zlibInflateOptions,windowBits}),this._inflate[kPerMessageDeflate]=this,this._inflate[kTotalLength]=0,this._inflate[kBuffers]=[],this._inflate.on("error",inflateOnError),this._inflate.on("data",inflateOnData)}this._inflate[kCallback]=callback,this._inflate.write(data),fin&&this._inflate.write(TRAILER),this._inflate.flush(()=>{let err=this._inflate[kError];if(err){this._inflate.close(),this._inflate=null,callback(err);return}let data2=bufferUtil.concat(this._inflate[kBuffers],this._inflate[kTotalLength]);this._inflate._readableState.endEmitted?(this._inflate.close(),this._inflate=null):(this._inflate[kTotalLength]=0,this._inflate[kBuffers]=[],fin&&this.params[`${endpoint}_no_context_takeover`]&&this._inflate.reset()),callback(null,data2)})}_compress(data,fin,callback){let endpoint=this._isServer?"server":"client";if(!this._deflate){let key=`${endpoint}_max_window_bits`,windowBits=typeof this.params[key]!="number"?zlib.Z_DEFAULT_WINDOWBITS:this.params[key];this._deflate=zlib.createDeflateRaw({...this._options.zlibDeflateOptions,windowBits}),this._deflate[kTotalLength]=0,this._deflate[kBuffers]=[],this._deflate.on("data",deflateOnData)}this._deflate[kCallback]=callback,this._deflate.write(data),this._deflate.flush(zlib.Z_SYNC_FLUSH,()=>{if(!this._deflate)return;let data2=bufferUtil.concat(this._deflate[kBuffers],this._deflate[kTotalLength]);fin&&(data2=new FastBuffer(data2.buffer,data2.byteOffset,data2.length-4)),this._deflate[kCallback]=null,this._deflate[kTotalLength]=0,this._deflate[kBuffers]=[],fin&&this.params[`${endpoint}_no_context_takeover`]&&this._deflate.reset(),callback(null,data2)})}};module2.exports=PerMessageDeflate;function deflateOnData(chunk){this[kBuffers].push(chunk),this[kTotalLength]+=chunk.length}function inflateOnData(chunk){if(this[kTotalLength]+=chunk.length,this[kPerMessageDeflate]._maxPayload<1||this[kTotalLength]<=this[kPerMessageDeflate]._maxPayload){this[kBuffers].push(chunk);return}this[kError]=new RangeError("Max payload size exceeded"),this[kError].code="WS_ERR_UNSUPPORTED_MESSAGE_LENGTH",this[kError][kStatusCode]=1009,this.removeListener("data",inflateOnData),this.reset()}function inflateOnError(err){if(this[kPerMessageDeflate]._inflate=null,this[kError]){this[kCallback](this[kError]);return}err[kStatusCode]=1007,this[kCallback](err)}}});var require_validation=__commonJS({"node_modules/ws/lib/validation.js"(exports2,module2){"use strict";var{isUtf8}=require("buffer"),{hasBlob}=require_constants5(),tokenChars=[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,1,1,1,1,1,0,0,1,1,0,1,1,0,1,1,1,1,1,1,1,1,1,1,0,0,0,0,0,0,0,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,0,0,0,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,0,1,0,1,0];function isValidStatusCode(code){return code>=1e3&&code<=1014&&code!==1004&&code!==1005&&code!==1006||code>=3e3&&code<=4999}function _isValidUTF8(buf){let len=buf.length,i=0;for(;i<len;)if((buf[i]&128)===0)i++;else if((buf[i]&224)===192){if(i+1===len||(buf[i+1]&192)!==128||(buf[i]&254)===192)return!1;i+=2}else if((buf[i]&240)===224){if(i+2>=len||(buf[i+1]&192)!==128||(buf[i+2]&192)!==128||buf[i]===224&&(buf[i+1]&224)===128||buf[i]===237&&(buf[i+1]&224)===160)return!1;i+=3}else if((buf[i]&248)===240){if(i+3>=len||(buf[i+1]&192)!==128||(buf[i+2]&192)!==128||(buf[i+3]&192)!==128||buf[i]===240&&(buf[i+1]&240)===128||buf[i]===244&&buf[i+1]>143||buf[i]>244)return!1;i+=4}else return!1;return!0}function isBlob(value){return hasBlob&&typeof value=="object"&&typeof value.arrayBuffer=="function"&&typeof value.type=="string"&&typeof value.stream=="function"&&(value[Symbol.toStringTag]==="Blob"||value[Symbol.toStringTag]==="File")}module2.exports={isBlob,isValidStatusCode,isValidUTF8:_isValidUTF8,tokenChars};if(isUtf8)module2.exports.isValidUTF8=function(buf){return buf.length<24?_isValidUTF8(buf):isUtf8(buf)};else if(!process.env.WS_NO_UTF_8_VALIDATE)try{let isValidUTF8=require("utf-8-validate");module2.exports.isValidUTF8=function(buf){return buf.length<32?_isValidUTF8(buf):isValidUTF8(buf)}}catch{}}});var require_receiver=__commonJS({"node_modules/ws/lib/receiver.js"(exports2,module2){"use strict";var{Writable}=require("stream"),PerMessageDeflate=require_permessage_deflate(),{BINARY_TYPES,EMPTY_BUFFER,kStatusCode,kWebSocket}=require_constants5(),{concat,toArrayBuffer,unmask}=require_buffer_util(),{isValidStatusCode,isValidUTF8}=require_validation(),FastBuffer=Buffer[Symbol.species],GET_INFO=0,GET_PAYLOAD_LENGTH_16=1,GET_PAYLOAD_LENGTH_64=2,GET_MASK=3,GET_DATA=4,INFLATING=5,DEFER_EVENT=6,Receiver=class extends Writable{constructor(options={}){super(),this._allowSynchronousEvents=options.allowSynchronousEvents!==void 0?options.allowSynchronousEvents:!0,this._binaryType=options.binaryType||BINARY_TYPES[0],this._extensions=options.extensions||{},this._isServer=!!options.isServer,this._maxBufferedChunks=options.maxBufferedChunks|0,this._maxFragments=options.maxFragments|0,this._maxPayload=options.maxPayload|0,this._skipUTF8Validation=!!options.skipUTF8Validation,this[kWebSocket]=void 0,this._bufferedBytes=0,this._buffers=[],this._compressed=!1,this._payloadLength=0,this._mask=void 0,this._fragmented=0,this._masked=!1,this._fin=!1,this._opcode=0,this._totalPayloadLength=0,this._messageLength=0,this._numFragments=0,this._fragments=[],this._errored=!1,this._loop=!1,this._state=GET_INFO}_write(chunk,encoding,cb){if(this._opcode===8&&this._state==GET_INFO)return cb();if(this._maxBufferedChunks>0&&this._buffers.length>=this._maxBufferedChunks){cb(this.createError(RangeError,"Too many buffered chunks",!1,1008,"WS_ERR_TOO_MANY_BUFFERED_PARTS"));return}this._bufferedBytes+=chunk.length,this._buffers.push(chunk),this.startLoop(cb)}consume(n){if(this._bufferedBytes-=n,n===this._buffers[0].length)return this._buffers.shift();if(n<this._buffers[0].length){let buf=this._buffers[0];return this._buffers[0]=new FastBuffer(buf.buffer,buf.byteOffset+n,buf.length-n),new FastBuffer(buf.buffer,buf.byteOffset,n)}let dst=Buffer.allocUnsafe(n);do{let buf=this._buffers[0],offset=dst.length-n;n>=buf.length?dst.set(this._buffers.shift(),offset):(dst.set(new Uint8Array(buf.buffer,buf.byteOffset,n),offset),this._buffers[0]=new FastBuffer(buf.buffer,buf.byteOffset+n,buf.length-n)),n-=buf.length}while(n>0);return dst}startLoop(cb){this._loop=!0;do switch(this._state){case GET_INFO:this.getInfo(cb);break;case GET_PAYLOAD_LENGTH_16:this.getPayloadLength16(cb);break;case GET_PAYLOAD_LENGTH_64:this.getPayloadLength64(cb);break;case GET_MASK:this.getMask();break;case GET_DATA:this.getData(cb);break;case INFLATING:case DEFER_EVENT:this._loop=!1;return}while(this._loop);this._errored||cb()}getInfo(cb){if(this._bufferedBytes<2){this._loop=!1;return}let buf=this.consume(2);if((buf[0]&48)!==0){let error=this.createError(RangeError,"RSV2 and RSV3 must be clear",!0,1002,"WS_ERR_UNEXPECTED_RSV_2_3");cb(error);return}let compressed=(buf[0]&64)===64;if(compressed&&!this._extensions[PerMessageDeflate.extensionName]){let error=this.createError(RangeError,"RSV1 must be clear",!0,1002,"WS_ERR_UNEXPECTED_RSV_1");cb(error);return}if(this._fin=(buf[0]&128)===128,this._opcode=buf[0]&15,this._payloadLength=buf[1]&127,this._opcode===0){if(compressed){let error=this.createError(RangeError,"RSV1 must be clear",!0,1002,"WS_ERR_UNEXPECTED_RSV_1");cb(error);return}if(!this._fragmented){let error=this.createError(RangeError,"invalid opcode 0",!0,1002,"WS_ERR_INVALID_OPCODE");cb(error);return}this._opcode=this._fragmented}else if(this._opcode===1||this._opcode===2){if(this._fragmented){let error=this.createError(RangeError,`invalid opcode ${this._opcode}`,!0,1002,"WS_ERR_INVALID_OPCODE");cb(error);return}this._compressed=compressed}else if(this._opcode>7&&this._opcode<11){if(!this._fin){let error=this.createError(RangeError,"FIN must be set",!0,1002,"WS_ERR_EXPECTED_FIN");cb(error);return}if(compressed){let error=this.createError(RangeError,"RSV1 must be clear",!0,1002,"WS_ERR_UNEXPECTED_RSV_1");cb(error);return}if(this._payloadLength>125||this._opcode===8&&this._payloadLength===1){let error=this.createError(RangeError,`invalid payload length ${this._payloadLength}`,!0,1002,"WS_ERR_INVALID_CONTROL_PAYLOAD_LENGTH");cb(error);return}}else{let error=this.createError(RangeError,`invalid opcode ${this._opcode}`,!0,1002,"WS_ERR_INVALID_OPCODE");cb(error);return}if(!this._fin&&!this._fragmented&&(this._fragmented=this._opcode),this._masked=(buf[1]&128)===128,this._isServer){if(!this._masked){let error=this.createError(RangeError,"MASK must be set",!0,1002,"WS_ERR_EXPECTED_MASK");cb(error);return}}else if(this._masked){let error=this.createError(RangeError,"MASK must be clear",!0,1002,"WS_ERR_UNEXPECTED_MASK");cb(error);return}this._payloadLength===126?this._state=GET_PAYLOAD_LENGTH_16:this._payloadLength===127?this._state=GET_PAYLOAD_LENGTH_64:this.haveLength(cb)}getPayloadLength16(cb){if(this._bufferedBytes<2){this._loop=!1;return}this._payloadLength=this.consume(2).readUInt16BE(0),this.haveLength(cb)}getPayloadLength64(cb){if(this._bufferedBytes<8){this._loop=!1;return}let buf=this.consume(8),num=buf.readUInt32BE(0);if(num>Math.pow(2,21)-1){let error=this.createError(RangeError,"Unsupported WebSocket frame: payload length > 2^53 - 1",!1,1009,"WS_ERR_UNSUPPORTED_DATA_PAYLOAD_LENGTH");cb(error);return}this._payloadLength=num*Math.pow(2,32)+buf.readUInt32BE(4),this.haveLength(cb)}haveLength(cb){if(this._payloadLength&&this._opcode<8&&(this._totalPayloadLength+=this._payloadLength,this._totalPayloadLength>this._maxPayload&&this._maxPayload>0)){let error=this.createError(RangeError,"Max payload size exceeded",!1,1009,"WS_ERR_UNSUPPORTED_MESSAGE_LENGTH");cb(error);return}this._masked?this._state=GET_MASK:this._state=GET_DATA}getMask(){if(this._bufferedBytes<4){this._loop=!1;return}this._mask=this.consume(4),this._state=GET_DATA}getData(cb){let data=EMPTY_BUFFER;if(this._payloadLength){if(this._bufferedBytes<this._payloadLength){this._loop=!1;return}data=this.consume(this._payloadLength),this._masked&&(this._mask[0]|this._mask[1]|this._mask[2]|this._mask[3])!==0&&unmask(data,this._mask)}if(this._opcode>7){this.controlMessage(data,cb);return}if(this._maxFragments>0&&++this._numFragments>this._maxFragments){let error=this.createError(RangeError,"Too many message fragments",!1,1008,"WS_ERR_TOO_MANY_BUFFERED_PARTS");cb(error);return}if(this._compressed){this._state=INFLATING,this.decompress(data,cb);return}data.length&&(this._messageLength=this._totalPayloadLength,this._fragments.push(data)),this.dataMessage(cb)}decompress(data,cb){this._extensions[PerMessageDeflate.extensionName].decompress(data,this._fin,(err,buf)=>{if(err)return cb(err);if(buf.length){if(this._messageLength+=buf.length,this._messageLength>this._maxPayload&&this._maxPayload>0){let error=this.createError(RangeError,"Max payload size exceeded",!1,1009,"WS_ERR_UNSUPPORTED_MESSAGE_LENGTH");cb(error);return}this._fragments.push(buf)}this.dataMessage(cb),this._state===GET_INFO&&this.startLoop(cb)})}dataMessage(cb){if(!this._fin){this._state=GET_INFO;return}let messageLength=this._messageLength,fragments=this._fragments;if(this._totalPayloadLength=0,this._messageLength=0,this._fragmented=0,this._numFragments=0,this._fragments=[],this._opcode===2){let data;this._binaryType==="nodebuffer"?data=concat(fragments,messageLength):this._binaryType==="arraybuffer"?data=toArrayBuffer(concat(fragments,messageLength)):this._binaryType==="blob"?data=new Blob(fragments):data=fragments,this._allowSynchronousEvents?(this.emit("message",data,!0),this._state=GET_INFO):(this._state=DEFER_EVENT,setImmediate(()=>{this.emit("message",data,!0),this._state=GET_INFO,this.startLoop(cb)}))}else{let buf=concat(fragments,messageLength);if(!this._skipUTF8Validation&&!isValidUTF8(buf)){let error=this.createError(Error,"invalid UTF-8 sequence",!0,1007,"WS_ERR_INVALID_UTF8");cb(error);return}this._state===INFLATING||this._allowSynchronousEvents?(this.emit("message",buf,!1),this._state=GET_INFO):(this._state=DEFER_EVENT,setImmediate(()=>{this.emit("message",buf,!1),this._state=GET_INFO,this.startLoop(cb)}))}}controlMessage(data,cb){if(this._opcode===8){if(data.length===0)this._loop=!1,this.emit("conclude",1005,EMPTY_BUFFER),this.end();else{let code=data.readUInt16BE(0);if(!isValidStatusCode(code)){let error=this.createError(RangeError,`invalid status code ${code}`,!0,1002,"WS_ERR_INVALID_CLOSE_CODE");cb(error);return}let buf=new FastBuffer(data.buffer,data.byteOffset+2,data.length-2);if(!this._skipUTF8Validation&&!isValidUTF8(buf)){let error=this.createError(Error,"invalid UTF-8 sequence",!0,1007,"WS_ERR_INVALID_UTF8");cb(error);return}this._loop=!1,this.emit("conclude",code,buf),this.end()}this._state=GET_INFO;return}this._allowSynchronousEvents?(this.emit(this._opcode===9?"ping":"pong",data),this._state=GET_INFO):(this._state=DEFER_EVENT,setImmediate(()=>{this.emit(this._opcode===9?"ping":"pong",data),this._state=GET_INFO,this.startLoop(cb)}))}createError(ErrorCtor,message,prefix,statusCode,errorCode){this._loop=!1,this._errored=!0;let err=new ErrorCtor(prefix?`Invalid WebSocket frame: ${message}`:message);return Error.captureStackTrace(err,this.createError),err.code=errorCode,err[kStatusCode]=statusCode,err}};module2.exports=Receiver}});var require_sender=__commonJS({"node_modules/ws/lib/sender.js"(exports2,module2){"use strict";var{Duplex}=require("stream"),{randomFillSync}=require("crypto"),{types:{isUint8Array}}=require("util"),PerMessageDeflate=require_permessage_deflate(),{EMPTY_BUFFER,kWebSocket,NOOP}=require_constants5(),{isBlob,isValidStatusCode}=require_validation(),{mask:applyMask,toBuffer}=require_buffer_util(),kByteLength=Symbol("kByteLength"),maskBuffer=Buffer.alloc(4),RANDOM_POOL_SIZE=8*1024,randomPool,randomPoolPointer=RANDOM_POOL_SIZE,DEFAULT=0,DEFLATING=1,GET_BLOB_DATA=2,Sender=class _Sender{constructor(socket,extensions,generateMask){this._extensions=extensions||{},generateMask&&(this._generateMask=generateMask,this._maskBuffer=Buffer.alloc(4)),this._socket=socket,this._firstFragment=!0,this._compress=!1,this._bufferedBytes=0,this._queue=[],this._state=DEFAULT,this.onerror=NOOP,this[kWebSocket]=void 0}static frame(data,options){let mask,merge=!1,offset=2,skipMasking=!1;options.mask&&(mask=options.maskBuffer||maskBuffer,options.generateMask?options.generateMask(mask):(randomPoolPointer===RANDOM_POOL_SIZE&&(randomPool===void 0&&(randomPool=Buffer.alloc(RANDOM_POOL_SIZE)),randomFillSync(randomPool,0,RANDOM_POOL_SIZE),randomPoolPointer=0),mask[0]=randomPool[randomPoolPointer++],mask[1]=randomPool[randomPoolPointer++],mask[2]=randomPool[randomPoolPointer++],mask[3]=randomPool[randomPoolPointer++]),skipMasking=(mask[0]|mask[1]|mask[2]|mask[3])===0,offset=6);let dataLength;typeof data=="string"?(!options.mask||skipMasking)&&options[kByteLength]!==void 0?dataLength=options[kByteLength]:(data=Buffer.from(data),dataLength=data.length):(dataLength=data.length,merge=options.mask&&options.readOnly&&!skipMasking);let payloadLength=dataLength;dataLength>=65536?(offset+=8,payloadLength=127):dataLength>125&&(offset+=2,payloadLength=126);let target=Buffer.allocUnsafe(merge?dataLength+offset:offset);return target[0]=options.fin?options.opcode|128:options.opcode,options.rsv1&&(target[0]|=64),target[1]=payloadLength,payloadLength===126?target.writeUInt16BE(dataLength,2):payloadLength===127&&(target[2]=target[3]=0,target.writeUIntBE(dataLength,4,6)),options.mask?(target[1]|=128,target[offset-4]=mask[0],target[offset-3]=mask[1],target[offset-2]=mask[2],target[offset-1]=mask[3],skipMasking?[target,data]:merge?(applyMask(data,mask,target,offset,dataLength),[target]):(applyMask(data,mask,data,0,dataLength),[target,data])):[target,data]}close(code,data,mask,cb){let buf;if(code===void 0)buf=EMPTY_BUFFER;else{if(typeof code!="number"||!isValidStatusCode(code))throw new TypeError("First argument must be a valid error code number");if(data===void 0||!data.length)buf=Buffer.allocUnsafe(2),buf.writeUInt16BE(code,0);else{let length=Buffer.byteLength(data);if(length>123)throw new RangeError("The message must not be greater than 123 bytes");if(buf=Buffer.allocUnsafe(2+length),buf.writeUInt16BE(code,0),typeof data=="string")buf.write(data,2);else if(isUint8Array(data))buf.set(data,2);else throw new TypeError("Second argument must be a string or a Uint8Array")}}let options={[kByteLength]:buf.length,fin:!0,generateMask:this._generateMask,mask,maskBuffer:this._maskBuffer,opcode:8,readOnly:!1,rsv1:!1};this._state!==DEFAULT?this.enqueue([this.dispatch,buf,!1,options,cb]):this.sendFrame(_Sender.frame(buf,options),cb)}ping(data,mask,cb){let byteLength,readOnly;if(typeof data=="string"?(byteLength=Buffer.byteLength(data),readOnly=!1):isBlob(data)?(byteLength=data.size,readOnly=!1):(data=toBuffer(data),byteLength=data.length,readOnly=toBuffer.readOnly),byteLength>125)throw new RangeError("The data size must not be greater than 125 bytes");let options={[kByteLength]:byteLength,fin:!0,generateMask:this._generateMask,mask,maskBuffer:this._maskBuffer,opcode:9,readOnly,rsv1:!1};isBlob(data)?this._state!==DEFAULT?this.enqueue([this.getBlobData,data,!1,options,cb]):this.getBlobData(data,!1,options,cb):this._state!==DEFAULT?this.enqueue([this.dispatch,data,!1,options,cb]):this.sendFrame(_Sender.frame(data,options),cb)}pong(data,mask,cb){let byteLength,readOnly;if(typeof data=="string"?(byteLength=Buffer.byteLength(data),readOnly=!1):isBlob(data)?(byteLength=data.size,readOnly=!1):(data=toBuffer(data),byteLength=data.length,readOnly=toBuffer.readOnly),byteLength>125)throw new RangeError("The data size must not be greater than 125 bytes");let options={[kByteLength]:byteLength,fin:!0,generateMask:this._generateMask,mask,maskBuffer:this._maskBuffer,opcode:10,readOnly,rsv1:!1};isBlob(data)?this._state!==DEFAULT?this.enqueue([this.getBlobData,data,!1,options,cb]):this.getBlobData(data,!1,options,cb):this._state!==DEFAULT?this.enqueue([this.dispatch,data,!1,options,cb]):this.sendFrame(_Sender.frame(data,options),cb)}send(data,options,cb){let perMessageDeflate=this._extensions[PerMessageDeflate.extensionName],opcode=options.binary?2:1,rsv1=options.compress,byteLength,readOnly;typeof data=="string"?(byteLength=Buffer.byteLength(data),readOnly=!1):isBlob(data)?(byteLength=data.size,readOnly=!1):(data=toBuffer(data),byteLength=data.length,readOnly=toBuffer.readOnly),this._firstFragment?(this._firstFragment=!1,rsv1&&perMessageDeflate&&perMessageDeflate.params[perMessageDeflate._isServer?"server_no_context_takeover":"client_no_context_takeover"]&&(rsv1=byteLength>=perMessageDeflate._threshold),this._compress=rsv1):(rsv1=!1,opcode=0),options.fin&&(this._firstFragment=!0);let opts={[kByteLength]:byteLength,fin:options.fin,generateMask:this._generateMask,mask:options.mask,maskBuffer:this._maskBuffer,opcode,readOnly,rsv1};isBlob(data)?this._state!==DEFAULT?this.enqueue([this.getBlobData,data,this._compress,opts,cb]):this.getBlobData(data,this._compress,opts,cb):this._state!==DEFAULT?this.enqueue([this.dispatch,data,this._compress,opts,cb]):this.dispatch(data,this._compress,opts,cb)}getBlobData(blob,compress,options,cb){this._bufferedBytes+=options[kByteLength],this._state=GET_BLOB_DATA,blob.arrayBuffer().then(arrayBuffer=>{if(this._socket.destroyed){let err=new Error("The socket was closed while the blob was being read");process.nextTick(callCallbacks,this,err,cb);return}this._bufferedBytes-=options[kByteLength];let data=toBuffer(arrayBuffer);compress?this.dispatch(data,compress,options,cb):(this._state=DEFAULT,this.sendFrame(_Sender.frame(data,options),cb),this.dequeue())}).catch(err=>{process.nextTick(onError,this,err,cb)})}dispatch(data,compress,options,cb){if(!compress){this.sendFrame(_Sender.frame(data,options),cb);return}let perMessageDeflate=this._extensions[PerMessageDeflate.extensionName];this._bufferedBytes+=options[kByteLength],this._state=DEFLATING,perMessageDeflate.compress(data,options.fin,(_,buf)=>{if(this._socket.destroyed){let err=new Error("The socket was closed while data was being compressed");callCallbacks(this,err,cb);return}this._bufferedBytes-=options[kByteLength],this._state=DEFAULT,options.readOnly=!1,this.sendFrame(_Sender.frame(buf,options),cb),this.dequeue()})}dequeue(){for(;this._state===DEFAULT&&this._queue.length;){let params=this._queue.shift();this._bufferedBytes-=params[3][kByteLength],Reflect.apply(params[0],this,params.slice(1))}}enqueue(params){this._bufferedBytes+=params[3][kByteLength],this._queue.push(params)}sendFrame(list,cb){list.length===2?(this._socket.cork(),this._socket.write(list[0]),this._socket.write(list[1],cb),this._socket.uncork()):this._socket.write(list[0],cb)}};module2.exports=Sender;function callCallbacks(sender,err,cb){typeof cb=="function"&&cb(err);for(let i=0;i<sender._queue.length;i++){let params=sender._queue[i],callback=params[params.length-1];typeof callback=="function"&&callback(err)}}function onError(sender,err,cb){callCallbacks(sender,err,cb),sender.onerror(err)}}});var require_event_target=__commonJS({"node_modules/ws/lib/event-target.js"(exports2,module2){"use strict";var{kForOnEventAttribute,kListener}=require_constants5(),kCode=Symbol("kCode"),kData=Symbol("kData"),kError=Symbol("kError"),kMessage=Symbol("kMessage"),kReason=Symbol("kReason"),kTarget=Symbol("kTarget"),kType=Symbol("kType"),kWasClean=Symbol("kWasClean"),Event=class{constructor(type){this[kTarget]=null,this[kType]=type}get target(){return this[kTarget]}get type(){return this[kType]}};Object.defineProperty(Event.prototype,"target",{enumerable:!0});Object.defineProperty(Event.prototype,"type",{enumerable:!0});var CloseEvent=class extends Event{constructor(type,options={}){super(type),this[kCode]=options.code===void 0?0:options.code,this[kReason]=options.reason===void 0?"":options.reason,this[kWasClean]=options.wasClean===void 0?!1:options.wasClean}get code(){return this[kCode]}get reason(){return this[kReason]}get wasClean(){return this[kWasClean]}};Object.defineProperty(CloseEvent.prototype,"code",{enumerable:!0});Object.defineProperty(CloseEvent.prototype,"reason",{enumerable:!0});Object.defineProperty(CloseEvent.prototype,"wasClean",{enumerable:!0});var ErrorEvent=class extends Event{constructor(type,options={}){super(type),this[kError]=options.error===void 0?null:options.error,this[kMessage]=options.message===void 0?"":options.message}get error(){return this[kError]}get message(){return this[kMessage]}};Object.defineProperty(ErrorEvent.prototype,"error",{enumerable:!0});Object.defineProperty(ErrorEvent.prototype,"message",{enumerable:!0});var MessageEvent=class extends Event{constructor(type,options={}){super(type),this[kData]=options.data===void 0?null:options.data}get data(){return this[kData]}};Object.defineProperty(MessageEvent.prototype,"data",{enumerable:!0});var EventTarget={addEventListener(type,handler,options={}){for(let listener of this.listeners(type))if(!options[kForOnEventAttribute]&&listener[kListener]===handler&&!listener[kForOnEventAttribute])return;let wrapper;if(type==="message")wrapper=function(data,isBinary){let event=new MessageEvent("message",{data:isBinary?data:data.toString()});event[kTarget]=this,callListener(handler,this,event)};else if(type==="close")wrapper=function(code,message){let event=new CloseEvent("close",{code,reason:message.toString(),wasClean:this._closeFrameReceived&&this._closeFrameSent});event[kTarget]=this,callListener(handler,this,event)};else if(type==="error")wrapper=function(error){let event=new ErrorEvent("error",{error,message:error.message});event[kTarget]=this,callListener(handler,this,event)};else if(type==="open")wrapper=function(){let event=new Event("open");event[kTarget]=this,callListener(handler,this,event)};else return;wrapper[kForOnEventAttribute]=!!options[kForOnEventAttribute],wrapper[kListener]=handler,options.once?this.once(type,wrapper):this.on(type,wrapper)},removeEventListener(type,handler){for(let listener of this.listeners(type))if(listener[kListener]===handler&&!listener[kForOnEventAttribute]){this.removeListener(type,listener);break}}};module2.exports={CloseEvent,ErrorEvent,Event,EventTarget,MessageEvent};function callListener(listener,thisArg,event){typeof listener=="object"&&listener.handleEvent?listener.handleEvent.call(listener,event):listener.call(thisArg,event)}}});var require_extension=__commonJS({"node_modules/ws/lib/extension.js"(exports2,module2){"use strict";var{tokenChars}=require_validation();function push(dest,name,elem){dest[name]===void 0?dest[name]=[elem]:dest[name].push(elem)}function parse(header){let offers=Object.create(null),params=Object.create(null),mustUnescape=!1,isEscaping=!1,inQuotes=!1,extensionName,paramName,start=-1,code=-1,end=-1,i=0;for(;i<header.length;i++)if(code=header.charCodeAt(i),extensionName===void 0)if(end===-1&&tokenChars[code]===1)start===-1&&(start=i);else if(i!==0&&(code===32||code===9))end===-1&&start!==-1&&(end=i);else if(code===59||code===44){if(start===-1)throw new SyntaxError(`Unexpected character at index ${i}`);end===-1&&(end=i);let name=header.slice(start,end);code===44?(push(offers,name,params),params=Object.create(null)):extensionName=name,start=end=-1}else throw new SyntaxError(`Unexpected character at index ${i}`);else if(paramName===void 0)if(end===-1&&tokenChars[code]===1)start===-1&&(start=i);else if(code===32||code===9)end===-1&&start!==-1&&(end=i);else if(code===59||code===44){if(start===-1)throw new SyntaxError(`Unexpected character at index ${i}`);end===-1&&(end=i),push(params,header.slice(start,end),!0),code===44&&(push(offers,extensionName,params),params=Object.create(null),extensionName=void 0),start=end=-1}else if(code===61&&start!==-1&&end===-1)paramName=header.slice(start,i),start=end=-1;else throw new SyntaxError(`Unexpected character at index ${i}`);else if(isEscaping){if(tokenChars[code]!==1)throw new SyntaxError(`Unexpected character at index ${i}`);start===-1?start=i:mustUnescape||(mustUnescape=!0),isEscaping=!1}else if(inQuotes)if(tokenChars[code]===1)start===-1&&(start=i);else if(code===34&&start!==-1)inQuotes=!1,end=i;else if(code===92)isEscaping=!0;else throw new SyntaxError(`Unexpected character at index ${i}`);else if(code===34&&header.charCodeAt(i-1)===61)inQuotes=!0;else if(end===-1&&tokenChars[code]===1)start===-1&&(start=i);else if(start!==-1&&(code===32||code===9))end===-1&&(end=i);else if(code===59||code===44){if(start===-1)throw new SyntaxError(`Unexpected character at index ${i}`);end===-1&&(end=i);let value=header.slice(start,end);mustUnescape&&(value=value.replace(/\\/g,""),mustUnescape=!1),push(params,paramName,value),code===44&&(push(offers,extensionName,params),params=Object.create(null),extensionName=void 0),paramName=void 0,start=end=-1}else throw new SyntaxError(`Unexpected character at index ${i}`);if(start===-1||inQuotes||code===32||code===9)throw new SyntaxError("Unexpected end of input");end===-1&&(end=i);let token=header.slice(start,end);return extensionName===void 0?push(offers,token,params):(paramName===void 0?push(params,token,!0):mustUnescape?push(params,paramName,token.replace(/\\/g,"")):push(params,paramName,token),push(offers,extensionName,params)),offers}function format(extensions){return Object.keys(extensions).map(extension=>{let configurations=extensions[extension];return Array.isArray(configurations)||(configurations=[configurations]),configurations.map(params=>[extension].concat(Object.keys(params).map(k=>{let values=params[k];return Array.isArray(values)||(values=[values]),values.map(v=>v===!0?k:`${k}=${v}`).join("; ")})).join("; ")).join(", ")}).join(", ")}module2.exports={format,parse}}});var require_websocket2=__commonJS({"node_modules/ws/lib/websocket.js"(exports2,module2){"use strict";var EventEmitter=require("events"),https=require("https"),http=require("http"),net=require("net"),tls=require("tls"),{randomBytes,createHash}=require("crypto"),{Duplex,Readable}=require("stream"),{URL:URL2}=require("url"),PerMessageDeflate=require_permessage_deflate(),Receiver=require_receiver(),Sender=require_sender(),{isBlob}=require_validation(),{BINARY_TYPES,CLOSE_TIMEOUT,EMPTY_BUFFER,GUID,kForOnEventAttribute,kListener,kStatusCode,kWebSocket,NOOP}=require_constants5(),{EventTarget:{addEventListener,removeEventListener}}=require_event_target(),{format,parse}=require_extension(),{toBuffer}=require_buffer_util(),kAborted=Symbol("kAborted"),protocolVersions=[8,13],readyStates=["CONNECTING","OPEN","CLOSING","CLOSED"],subprotocolRegex=/^[!#$%&'*+\-.0-9A-Z^_`|a-z~]+$/,WebSocket=class _WebSocket extends EventEmitter{constructor(address,protocols,options){super(),this._binaryType=BINARY_TYPES[0],this._closeCode=1006,this._closeFrameReceived=!1,this._closeFrameSent=!1,this._closeMessage=EMPTY_BUFFER,this._closeTimer=null,this._errorEmitted=!1,this._extensions={},this._paused=!1,this._protocol="",this._readyState=_WebSocket.CONNECTING,this._receiver=null,this._sender=null,this._socket=null,address!==null?(this._bufferedAmount=0,this._isServer=!1,this._redirects=0,protocols===void 0?protocols=[]:Array.isArray(protocols)||(typeof protocols=="object"&&protocols!==null?(options=protocols,protocols=[]):protocols=[protocols]),initAsClient(this,address,protocols,options)):(this._autoPong=options.autoPong,this._closeTimeout=options.closeTimeout,this._isServer=!0)}get binaryType(){return this._binaryType}set binaryType(type){BINARY_TYPES.includes(type)&&(this._binaryType=type,this._receiver&&(this._receiver._binaryType=type))}get bufferedAmount(){return this._socket?this._socket._writableState.length+this._sender._bufferedBytes:this._bufferedAmount}get extensions(){return Object.keys(this._extensions).join()}get isPaused(){return this._paused}get onclose(){return null}get onerror(){return null}get onopen(){return null}get onmessage(){return null}get protocol(){return this._protocol}get readyState(){return this._readyState}get url(){return this._url}setSocket(socket,head,options){let receiver=new Receiver({allowSynchronousEvents:options.allowSynchronousEvents,binaryType:this.binaryType,extensions:this._extensions,isServer:this._isServer,maxBufferedChunks:options.maxBufferedChunks,maxFragments:options.maxFragments,maxPayload:options.maxPayload,skipUTF8Validation:options.skipUTF8Validation}),sender=new Sender(socket,this._extensions,options.generateMask);this._receiver=receiver,this._sender=sender,this._socket=socket,receiver[kWebSocket]=this,sender[kWebSocket]=this,socket[kWebSocket]=this,receiver.on("conclude",receiverOnConclude),receiver.on("drain",receiverOnDrain),receiver.on("error",receiverOnError),receiver.on("message",receiverOnMessage),receiver.on("ping",receiverOnPing),receiver.on("pong",receiverOnPong),sender.onerror=senderOnError,socket.setTimeout&&socket.setTimeout(0),socket.setNoDelay&&socket.setNoDelay(),head.length>0&&socket.unshift(head),socket.on("close",socketOnClose),socket.on("data",socketOnData),socket.on("end",socketOnEnd),socket.on("error",socketOnError),this._readyState=_WebSocket.OPEN,this.emit("open")}emitClose(){if(!this._socket){this._readyState=_WebSocket.CLOSED,this.emit("close",this._closeCode,this._closeMessage);return}this._extensions[PerMessageDeflate.extensionName]&&this._extensions[PerMessageDeflate.extensionName].cleanup(),this._receiver.removeAllListeners(),this._readyState=_WebSocket.CLOSED,this.emit("close",this._closeCode,this._closeMessage)}close(code,data){if(this.readyState!==_WebSocket.CLOSED){if(this.readyState===_WebSocket.CONNECTING){abortHandshake(this,this._req,"WebSocket was closed before the connection was established");return}if(this.readyState===_WebSocket.CLOSING){this._closeFrameSent&&(this._closeFrameReceived||this._receiver._writableState.errorEmitted)&&this._socket.end();return}this._readyState=_WebSocket.CLOSING,this._sender.close(code,data,!this._isServer,err=>{err||(this._closeFrameSent=!0,(this._closeFrameReceived||this._receiver._writableState.errorEmitted)&&this._socket.end())}),setCloseTimer(this)}}pause(){this.readyState===_WebSocket.CONNECTING||this.readyState===_WebSocket.CLOSED||(this._paused=!0,this._socket.pause())}ping(data,mask,cb){if(this.readyState===_WebSocket.CONNECTING)throw new Error("WebSocket is not open: readyState 0 (CONNECTING)");if(typeof data=="function"?(cb=data,data=mask=void 0):typeof mask=="function"&&(cb=mask,mask=void 0),typeof data=="number"&&(data=data.toString()),this.readyState!==_WebSocket.OPEN){sendAfterClose(this,data,cb);return}mask===void 0&&(mask=!this._isServer),this._sender.ping(data||EMPTY_BUFFER,mask,cb)}pong(data,mask,cb){if(this.readyState===_WebSocket.CONNECTING)throw new Error("WebSocket is not open: readyState 0 (CONNECTING)");if(typeof data=="function"?(cb=data,data=mask=void 0):typeof mask=="function"&&(cb=mask,mask=void 0),typeof data=="number"&&(data=data.toString()),this.readyState!==_WebSocket.OPEN){sendAfterClose(this,data,cb);return}mask===void 0&&(mask=!this._isServer),this._sender.pong(data||EMPTY_BUFFER,mask,cb)}resume(){this.readyState===_WebSocket.CONNECTING||this.readyState===_WebSocket.CLOSED||(this._paused=!1,this._receiver._writableState.needDrain||this._socket.resume())}send(data,options,cb){if(this.readyState===_WebSocket.CONNECTING)throw new Error("WebSocket is not open: readyState 0 (CONNECTING)");if(typeof options=="function"&&(cb=options,options={}),typeof data=="number"&&(data=data.toString()),this.readyState!==_WebSocket.OPEN){sendAfterClose(this,data,cb);return}let opts={binary:typeof data!="string",mask:!this._isServer,compress:!0,fin:!0,...options};this._extensions[PerMessageDeflate.extensionName]||(opts.compress=!1),this._sender.send(data||EMPTY_BUFFER,opts,cb)}terminate(){if(this.readyState!==_WebSocket.CLOSED){if(this.readyState===_WebSocket.CONNECTING){abortHandshake(this,this._req,"WebSocket was closed before the connection was established");return}this._socket&&(this._readyState=_WebSocket.CLOSING,this._socket.destroy())}}};Object.defineProperty(WebSocket,"CONNECTING",{enumerable:!0,value:readyStates.indexOf("CONNECTING")});Object.defineProperty(WebSocket.prototype,"CONNECTING",{enumerable:!0,value:readyStates.indexOf("CONNECTING")});Object.defineProperty(WebSocket,"OPEN",{enumerable:!0,value:readyStates.indexOf("OPEN")});Object.defineProperty(WebSocket.prototype,"OPEN",{enumerable:!0,value:readyStates.indexOf("OPEN")});Object.defineProperty(WebSocket,"CLOSING",{enumerable:!0,value:readyStates.indexOf("CLOSING")});Object.defineProperty(WebSocket.prototype,"CLOSING",{enumerable:!0,value:readyStates.indexOf("CLOSING")});Object.defineProperty(WebSocket,"CLOSED",{enumerable:!0,value:readyStates.indexOf("CLOSED")});Object.defineProperty(WebSocket.prototype,"CLOSED",{enumerable:!0,value:readyStates.indexOf("CLOSED")});["binaryType","bufferedAmount","extensions","isPaused","protocol","readyState","url"].forEach(property=>{Object.defineProperty(WebSocket.prototype,property,{enumerable:!0})});["open","error","close","message"].forEach(method=>{Object.defineProperty(WebSocket.prototype,`on${method}`,{enumerable:!0,get(){for(let listener of this.listeners(method))if(listener[kForOnEventAttribute])return listener[kListener];return null},set(handler){for(let listener of this.listeners(method))if(listener[kForOnEventAttribute]){this.removeListener(method,listener);break}typeof handler=="function"&&this.addEventListener(method,handler,{[kForOnEventAttribute]:!0})}})});WebSocket.prototype.addEventListener=addEventListener;WebSocket.prototype.removeEventListener=removeEventListener;module2.exports=WebSocket;function initAsClient(websocket,address,protocols,options){let opts={allowSynchronousEvents:!0,autoPong:!0,closeTimeout:CLOSE_TIMEOUT,protocolVersion:protocolVersions[1],maxBufferedChunks:262144,maxFragments:16384,maxPayload:104857600,skipUTF8Validation:!1,perMessageDeflate:!0,followRedirects:!1,maxRedirects:10,...options,socketPath:void 0,hostname:void 0,protocol:void 0,timeout:void 0,method:"GET",host:void 0,path:void 0,port:void 0};if(websocket._autoPong=opts.autoPong,websocket._closeTimeout=opts.closeTimeout,!protocolVersions.includes(opts.protocolVersion))throw new RangeError(`Unsupported protocol version: ${opts.protocolVersion} (supported versions: ${protocolVersions.join(", ")})`);let parsedUrl;if(address instanceof URL2)parsedUrl=address;else try{parsedUrl=new URL2(address)}catch{throw new SyntaxError(`Invalid URL: ${address}`)}parsedUrl.protocol==="http:"?parsedUrl.protocol="ws:":parsedUrl.protocol==="https:"&&(parsedUrl.protocol="wss:"),websocket._url=parsedUrl.href;let isSecure=parsedUrl.protocol==="wss:",isIpcUrl=parsedUrl.protocol==="ws+unix:",invalidUrlMessage;if(parsedUrl.protocol!=="ws:"&&!isSecure&&!isIpcUrl?invalidUrlMessage=`The URL's protocol must be one of "ws:", "wss:", "http:", "https:", or "ws+unix:"`:isIpcUrl&&!parsedUrl.pathname?invalidUrlMessage="The URL's pathname is empty":parsedUrl.hash&&(invalidUrlMessage="The URL contains a fragment identifier"),invalidUrlMessage){let err=new SyntaxError(invalidUrlMessage);if(websocket._redirects===0)throw err;emitErrorAndClose(websocket,err);return}let defaultPort=isSecure?443:80,key=randomBytes(16).toString("base64"),request=isSecure?https.request:http.request,protocolSet=new Set,perMessageDeflate;if(opts.createConnection=opts.createConnection||(isSecure?tlsConnect:netConnect),opts.defaultPort=opts.defaultPort||defaultPort,opts.port=parsedUrl.port||defaultPort,opts.host=parsedUrl.hostname.startsWith("[")?parsedUrl.hostname.slice(1,-1):parsedUrl.hostname,opts.headers={...opts.headers,"Sec-WebSocket-Version":opts.protocolVersion,"Sec-WebSocket-Key":key,Connection:"Upgrade",Upgrade:"websocket"},opts.path=parsedUrl.pathname+parsedUrl.search,opts.timeout=opts.handshakeTimeout,opts.perMessageDeflate&&(perMessageDeflate=new PerMessageDeflate({...opts.perMessageDeflate,isServer:!1,maxPayload:opts.maxPayload}),opts.headers["Sec-WebSocket-Extensions"]=format({[PerMessageDeflate.extensionName]:perMessageDeflate.offer()})),protocols.length){for(let protocol of protocols){if(typeof protocol!="string"||!subprotocolRegex.test(protocol)||protocolSet.has(protocol))throw new SyntaxError("An invalid or duplicated subprotocol was specified");protocolSet.add(protocol)}opts.headers["Sec-WebSocket-Protocol"]=protocols.join(",")}if(opts.origin&&(opts.protocolVersion<13?opts.headers["Sec-WebSocket-Origin"]=opts.origin:opts.headers.Origin=opts.origin),(parsedUrl.username||parsedUrl.password)&&(opts.auth=`${parsedUrl.username}:${parsedUrl.password}`),isIpcUrl){let parts=opts.path.split(":");opts.socketPath=parts[0],opts.path=parts[1]}let req;if(opts.followRedirects){if(websocket._redirects===0){websocket._originalIpc=isIpcUrl,websocket._originalSecure=isSecure,websocket._originalHostOrSocketPath=isIpcUrl?opts.socketPath:parsedUrl.host;let headers=options&&options.headers;if(options={...options,headers:{}},headers)for(let[key2,value]of Object.entries(headers))options.headers[key2.toLowerCase()]=value}else if(websocket.listenerCount("redirect")===0){let isSameHost=isIpcUrl?websocket._originalIpc?opts.socketPath===websocket._originalHostOrSocketPath:!1:websocket._originalIpc?!1:parsedUrl.host===websocket._originalHostOrSocketPath;(!isSameHost||websocket._originalSecure&&!isSecure)&&(delete opts.headers.authorization,delete opts.headers.cookie,isSameHost||delete opts.headers.host,opts.auth=void 0)}opts.auth&&!options.headers.authorization&&(options.headers.authorization="Basic "+Buffer.from(opts.auth).toString("base64")),req=websocket._req=request(opts),websocket._redirects&&websocket.emit("redirect",websocket.url,req)}else req=websocket._req=request(opts);opts.timeout&&req.on("timeout",()=>{abortHandshake(websocket,req,"Opening handshake has timed out")}),req.on("error",err=>{req===null||req[kAborted]||(req=websocket._req=null,emitErrorAndClose(websocket,err))}),req.on("response",res=>{let location=res.headers.location,statusCode=res.statusCode;if(location&&opts.followRedirects&&statusCode>=300&&statusCode<400){if(++websocket._redirects>opts.maxRedirects){abortHandshake(websocket,req,"Maximum redirects exceeded");return}req.abort();let addr;try{addr=new URL2(location,address)}catch{let err=new SyntaxError(`Invalid URL: ${location}`);emitErrorAndClose(websocket,err);return}initAsClient(websocket,addr,protocols,options)}else websocket.emit("unexpected-response",req,res)||abortHandshake(websocket,req,`Unexpected server response: ${res.statusCode}`)}),req.on("upgrade",(res,socket,head)=>{if(websocket.emit("upgrade",res),websocket.readyState!==WebSocket.CONNECTING)return;req=websocket._req=null;let upgrade=res.headers.upgrade;if(upgrade===void 0||upgrade.toLowerCase()!=="websocket"){abortHandshake(websocket,socket,"Invalid Upgrade header");return}let digest=createHash("sha1").update(key+GUID).digest("base64");if(res.headers["sec-websocket-accept"]!==digest){abortHandshake(websocket,socket,"Invalid Sec-WebSocket-Accept header");return}let serverProt=res.headers["sec-websocket-protocol"],protError;if(serverProt!==void 0?protocolSet.size?protocolSet.has(serverProt)||(protError="Server sent an invalid subprotocol"):protError="Server sent a subprotocol but none was requested":protocolSet.size&&(protError="Server sent no subprotocol"),protError){abortHandshake(websocket,socket,protError);return}serverProt&&(websocket._protocol=serverProt);let secWebSocketExtensions=res.headers["sec-websocket-extensions"];if(secWebSocketExtensions!==void 0){if(!perMessageDeflate){abortHandshake(websocket,socket,"Server sent a Sec-WebSocket-Extensions header but no extension was requested");return}let extensions;try{extensions=parse(secWebSocketExtensions)}catch{abortHandshake(websocket,socket,"Invalid Sec-WebSocket-Extensions header");return}let extensionNames=Object.keys(extensions);if(extensionNames.length!==1||extensionNames[0]!==PerMessageDeflate.extensionName){abortHandshake(websocket,socket,"Server indicated an extension that was not requested");return}try{perMessageDeflate.accept(extensions[PerMessageDeflate.extensionName])}catch{abortHandshake(websocket,socket,"Invalid Sec-WebSocket-Extensions header");return}websocket._extensions[PerMessageDeflate.extensionName]=perMessageDeflate}websocket.setSocket(socket,head,{allowSynchronousEvents:opts.allowSynchronousEvents,generateMask:opts.generateMask,maxBufferedChunks:opts.maxBufferedChunks,maxFragments:opts.maxFragments,maxPayload:opts.maxPayload,skipUTF8Validation:opts.skipUTF8Validation})}),opts.finishRequest?opts.finishRequest(req,websocket):req.end()}function emitErrorAndClose(websocket,err){websocket._readyState=WebSocket.CLOSING,websocket._errorEmitted=!0,websocket.emit("error",err),websocket.emitClose()}function netConnect(options){return options.path=options.socketPath,net.connect(options)}function tlsConnect(options){return options.path=void 0,!options.servername&&options.servername!==""&&(options.servername=net.isIP(options.host)?"":options.host),tls.connect(options)}function abortHandshake(websocket,stream,message){websocket._readyState=WebSocket.CLOSING;let err=new Error(message);Error.captureStackTrace(err,abortHandshake),stream.setHeader?(stream[kAborted]=!0,stream.abort(),stream.socket&&!stream.socket.destroyed&&stream.socket.destroy(),process.nextTick(emitErrorAndClose,websocket,err)):(stream.destroy(err),stream.once("error",websocket.emit.bind(websocket,"error")),stream.once("close",websocket.emitClose.bind(websocket)))}function sendAfterClose(websocket,data,cb){if(data){let length=isBlob(data)?data.size:toBuffer(data).length;websocket._socket?websocket._sender._bufferedBytes+=length:websocket._bufferedAmount+=length}if(cb){let err=new Error(`WebSocket is not open: readyState ${websocket.readyState} (${readyStates[websocket.readyState]})`);process.nextTick(cb,err)}}function receiverOnConclude(code,reason){let websocket=this[kWebSocket];websocket._closeFrameReceived=!0,websocket._closeMessage=reason,websocket._closeCode=code,websocket._socket[kWebSocket]!==void 0&&(websocket._socket.removeListener("data",socketOnData),process.nextTick(resume,websocket._socket),code===1005?websocket.close():websocket.close(code,reason))}function receiverOnDrain(){let websocket=this[kWebSocket];websocket.isPaused||websocket._socket.resume()}function receiverOnError(err){let websocket=this[kWebSocket];websocket._socket[kWebSocket]!==void 0&&(websocket._socket.removeListener("data",socketOnData),process.nextTick(resume,websocket._socket),websocket.close(err[kStatusCode])),websocket._errorEmitted||(websocket._errorEmitted=!0,websocket.emit("error",err))}function receiverOnFinish(){this[kWebSocket].emitClose()}function receiverOnMessage(data,isBinary){this[kWebSocket].emit("message",data,isBinary)}function receiverOnPing(data){let websocket=this[kWebSocket];websocket._autoPong&&websocket.pong(data,!this._isServer,NOOP),websocket.emit("ping",data)}function receiverOnPong(data){this[kWebSocket].emit("pong",data)}function resume(stream){stream.resume()}function senderOnError(err){let websocket=this[kWebSocket];websocket.readyState!==WebSocket.CLOSED&&(websocket.readyState===WebSocket.OPEN&&(websocket._readyState=WebSocket.CLOSING,setCloseTimer(websocket)),this._socket.end(),websocket._errorEmitted||(websocket._errorEmitted=!0,websocket.emit("error",err)))}function setCloseTimer(websocket){websocket._closeTimer=setTimeout(websocket._socket.destroy.bind(websocket._socket),websocket._closeTimeout)}function socketOnClose(){let websocket=this[kWebSocket];if(this.removeListener("close",socketOnClose),this.removeListener("data",socketOnData),this.removeListener("end",socketOnEnd),websocket._readyState=WebSocket.CLOSING,!this._readableState.endEmitted&&!websocket._closeFrameReceived&&!websocket._receiver._writableState.errorEmitted&&this._readableState.length!==0){let chunk=this.read(this._readableState.length);websocket._receiver.write(chunk)}websocket._receiver.end(),this[kWebSocket]=void 0,clearTimeout(websocket._closeTimer),websocket._receiver._writableState.finished||websocket._receiver._writableState.errorEmitted?websocket.emitClose():(websocket._receiver.on("error",receiverOnFinish),websocket._receiver.on("finish",receiverOnFinish))}function socketOnData(chunk){this[kWebSocket]._receiver.write(chunk)||this.pause()}function socketOnEnd(){let websocket=this[kWebSocket];websocket._readyState=WebSocket.CLOSING,websocket._receiver.end(),this.end()}function socketOnError(){let websocket=this[kWebSocket];this.removeListener("error",socketOnError),this.on("error",NOOP),websocket&&(websocket._readyState=WebSocket.CLOSING,this.destroy())}}});var require_stream=__commonJS({"node_modules/ws/lib/stream.js"(exports2,module2){"use strict";var WebSocket=require_websocket2(),{Duplex}=require("stream");function emitClose(stream){stream.emit("close")}function duplexOnEnd(){!this.destroyed&&this._writableState.finished&&this.destroy()}function duplexOnError(err){this.removeListener("error",duplexOnError),this.destroy(),this.listenerCount("error")===0&&this.emit("error",err)}function createWebSocketStream(ws,options){let terminateOnDestroy=!0,duplex=new Duplex({...options,autoDestroy:!1,emitClose:!1,objectMode:!1,writableObjectMode:!1});return ws.on("message",function(msg,isBinary){let data=!isBinary&&duplex._readableState.objectMode?msg.toString():msg;duplex.push(data)||ws.pause()}),ws.once("error",function(err){duplex.destroyed||(terminateOnDestroy=!1,duplex.destroy(err))}),ws.once("close",function(){duplex.destroyed||duplex.push(null)}),duplex._destroy=function(err,callback){if(ws.readyState===ws.CLOSED){callback(err),process.nextTick(emitClose,duplex);return}let called=!1;ws.once("error",function(err2){called=!0,callback(err2)}),ws.once("close",function(){called||callback(err),process.nextTick(emitClose,duplex)}),terminateOnDestroy&&ws.terminate()},duplex._final=function(callback){if(ws.readyState===ws.CONNECTING){ws.once("open",function(){duplex._final(callback)});return}ws._socket!==null&&(ws._socket._writableState.finished?(callback(),duplex._readableState.endEmitted&&duplex.destroy()):(ws._socket.once("finish",function(){callback()}),ws.close()))},duplex._read=function(){ws.isPaused&&ws.resume()},duplex._write=function(chunk,encoding,callback){if(ws.readyState===ws.CONNECTING){ws.once("open",function(){duplex._write(chunk,encoding,callback)});return}ws.send(chunk,callback)},duplex.on("end",duplexOnEnd),duplex.on("error",duplexOnError),duplex}module2.exports=createWebSocketStream}});var require_subprotocol=__commonJS({"node_modules/ws/lib/subprotocol.js"(exports2,module2){"use strict";var{tokenChars}=require_validation();function parse(header){let protocols=new Set,start=-1,end=-1,i=0;for(i;i<header.length;i++){let code=header.charCodeAt(i);if(end===-1&&tokenChars[code]===1)start===-1&&(start=i);else if(i!==0&&(code===32||code===9))end===-1&&start!==-1&&(end=i);else if(code===44){if(start===-1)throw new SyntaxError(`Unexpected character at index ${i}`);end===-1&&(end=i);let protocol2=header.slice(start,end);if(protocols.has(protocol2))throw new SyntaxError(`The "${protocol2}" subprotocol is duplicated`);protocols.add(protocol2),start=end=-1}else throw new SyntaxError(`Unexpected character at index ${i}`)}if(start===-1||end!==-1)throw new SyntaxError("Unexpected end of input");let protocol=header.slice(start,i);if(protocols.has(protocol))throw new SyntaxError(`The "${protocol}" subprotocol is duplicated`);return protocols.add(protocol),protocols}module2.exports={parse}}});var require_websocket_server=__commonJS({"node_modules/ws/lib/websocket-server.js"(exports2,module2){"use strict";var EventEmitter=require("events"),http=require("http"),{Duplex}=require("stream"),{createHash}=require("crypto"),extension=require_extension(),PerMessageDeflate=require_permessage_deflate(),subprotocol=require_subprotocol(),WebSocket=require_websocket2(),{CLOSE_TIMEOUT,GUID,kWebSocket}=require_constants5(),keyRegex=/^[+/0-9A-Za-z]{22}==$/,RUNNING=0,CLOSING=1,CLOSED=2,WebSocketServer=class extends EventEmitter{constructor(options,callback){if(super(),options={allowSynchronousEvents:!0,autoPong:!0,maxBufferedChunks:256*1024,maxFragments:16*1024,maxPayload:100*1024*1024,skipUTF8Validation:!1,perMessageDeflate:!1,handleProtocols:null,clientTracking:!0,closeTimeout:CLOSE_TIMEOUT,verifyClient:null,noServer:!1,backlog:null,server:null,host:null,path:null,port:null,WebSocket,...options},options.port==null&&!options.server&&!options.noServer||options.port!=null&&(options.server||options.noServer)||options.server&&options.noServer)throw new TypeError('One and only one of the "port", "server", or "noServer" options must be specified');if(options.port!=null?(this._server=http.createServer((req,res)=>{let body=http.STATUS_CODES[426];res.writeHead(426,{"Content-Length":body.length,"Content-Type":"text/plain"}),res.end(body)}),this._server.listen(options.port,options.host,options.backlog,callback)):options.server&&(this._server=options.server),this._server){let emitConnection=this.emit.bind(this,"connection");this._removeListeners=addListeners(this._server,{listening:this.emit.bind(this,"listening"),error:this.emit.bind(this,"error"),upgrade:(req,socket,head)=>{this.handleUpgrade(req,socket,head,emitConnection)}})}options.perMessageDeflate===!0&&(options.perMessageDeflate={}),options.clientTracking&&(this.clients=new Set,this._shouldEmitClose=!1),this.options=options,this._state=RUNNING}address(){if(this.options.noServer)throw new Error('The server is operating in "noServer" mode');return this._server?this._server.address():null}close(cb){if(this._state===CLOSED){cb&&this.once("close",()=>{cb(new Error("The server is not running"))}),process.nextTick(emitClose,this);return}if(cb&&this.once("close",cb),this._state!==CLOSING)if(this._state=CLOSING,this.options.noServer||this.options.server)this._server&&(this._removeListeners(),this._removeListeners=this._server=null),this.clients?this.clients.size?this._shouldEmitClose=!0:process.nextTick(emitClose,this):process.nextTick(emitClose,this);else{let server=this._server;this._removeListeners(),this._removeListeners=this._server=null,server.close(()=>{emitClose(this)})}}shouldHandle(req){if(this.options.path){let index=req.url.indexOf("?");if((index!==-1?req.url.slice(0,index):req.url)!==this.options.path)return!1}return!0}handleUpgrade(req,socket,head,cb){socket.on("error",socketOnError);let key=req.headers["sec-websocket-key"],upgrade=req.headers.upgrade,version=+req.headers["sec-websocket-version"];if(req.method!=="GET"){abortHandshakeOrEmitwsClientError(this,req,socket,405,"Invalid HTTP method");return}if(upgrade===void 0||upgrade.toLowerCase()!=="websocket"){abortHandshakeOrEmitwsClientError(this,req,socket,400,"Invalid Upgrade header");return}if(key===void 0||!keyRegex.test(key)){abortHandshakeOrEmitwsClientError(this,req,socket,400,"Missing or invalid Sec-WebSocket-Key header");return}if(version!==13&&version!==8){abortHandshakeOrEmitwsClientError(this,req,socket,400,"Missing or invalid Sec-WebSocket-Version header",{"Sec-WebSocket-Version":"13, 8"});return}if(!this.shouldHandle(req)){abortHandshake(socket,400);return}let secWebSocketProtocol=req.headers["sec-websocket-protocol"],protocols=new Set;if(secWebSocketProtocol!==void 0)try{protocols=subprotocol.parse(secWebSocketProtocol)}catch{abortHandshakeOrEmitwsClientError(this,req,socket,400,"Invalid Sec-WebSocket-Protocol header");return}let secWebSocketExtensions=req.headers["sec-websocket-extensions"],extensions={};if(this.options.perMessageDeflate&&secWebSocketExtensions!==void 0){let perMessageDeflate=new PerMessageDeflate({...this.options.perMessageDeflate,isServer:!0,maxPayload:this.options.maxPayload});try{let offers=extension.parse(secWebSocketExtensions);offers[PerMessageDeflate.extensionName]&&(perMessageDeflate.accept(offers[PerMessageDeflate.extensionName]),extensions[PerMessageDeflate.extensionName]=perMessageDeflate)}catch{abortHandshakeOrEmitwsClientError(this,req,socket,400,"Invalid or unacceptable Sec-WebSocket-Extensions header");return}}if(this.options.verifyClient){let info={origin:req.headers[`${version===8?"sec-websocket-origin":"origin"}`],secure:!!(req.socket.authorized||req.socket.encrypted),req};if(this.options.verifyClient.length===2){this.options.verifyClient(info,(verified,code,message,headers)=>{if(!verified)return abortHandshake(socket,code||401,message,headers);this.completeUpgrade(extensions,key,protocols,req,socket,head,cb)});return}if(!this.options.verifyClient(info))return abortHandshake(socket,401)}this.completeUpgrade(extensions,key,protocols,req,socket,head,cb)}completeUpgrade(extensions,key,protocols,req,socket,head,cb){if(!socket.readable||!socket.writable)return socket.destroy();if(socket[kWebSocket])throw new Error("server.handleUpgrade() was called more than once with the same socket, possibly due to a misconfiguration");if(this._state>RUNNING)return abortHandshake(socket,503);let headers=["HTTP/1.1 101 Switching Protocols","Upgrade: websocket","Connection: Upgrade",`Sec-WebSocket-Accept: ${createHash("sha1").update(key+GUID).digest("base64")}`],ws=new this.options.WebSocket(null,void 0,this.options);if(protocols.size){let protocol=this.options.handleProtocols?this.options.handleProtocols(protocols,req):protocols.values().next().value;protocol&&(headers.push(`Sec-WebSocket-Protocol: ${protocol}`),ws._protocol=protocol)}if(extensions[PerMessageDeflate.extensionName]){let params=extensions[PerMessageDeflate.extensionName].params,value=extension.format({[PerMessageDeflate.extensionName]:[params]});headers.push(`Sec-WebSocket-Extensions: ${value}`),ws._extensions=extensions}this.emit("headers",headers,req),socket.write(headers.concat(`\r
|
|
253
256
|
`).join(`\r
|
|
254
257
|
`)),socket.removeListener("error",socketOnError),ws.setSocket(socket,head,{allowSynchronousEvents:this.options.allowSynchronousEvents,maxBufferedChunks:this.options.maxBufferedChunks,maxFragments:this.options.maxFragments,maxPayload:this.options.maxPayload,skipUTF8Validation:this.options.skipUTF8Validation}),this.clients&&(this.clients.add(ws),ws.on("close",()=>{this.clients.delete(ws),this._shouldEmitClose&&!this.clients.size&&process.nextTick(emitClose,this)})),cb(ws,req)}};module2.exports=WebSocketServer;function addListeners(server,map){for(let event of Object.keys(map))server.on(event,map[event]);return function(){for(let event of Object.keys(map))server.removeListener(event,map[event])}}function emitClose(server){server._state=CLOSED,server.emit("close")}function socketOnError(){this.destroy()}function abortHandshake(socket,code,message,headers){message=message||http.STATUS_CODES[code],headers={Connection:"close","Content-Type":"text/html","Content-Length":Buffer.byteLength(message),...headers},socket.once("finish",socket.destroy),socket.end(`HTTP/1.1 ${code} ${http.STATUS_CODES[code]}\r
|
|
255
258
|
`+Object.keys(headers).map(h=>`${h}: ${headers[h]}`).join(`\r
|
|
@@ -264,7 +267,7 @@ Content-Length: `+length+`\r
|
|
|
264
267
|
`).join(`
|
|
265
268
|
`+prefix),args.push(colorCode+"m+"+module2.exports.humanize(this.diff)+"\x1B[0m")}else args[0]=getDate()+name+" "+args[0]}function getDate(){return exports2.inspectOpts.hideDate?"":new Date().toISOString()+" "}function log(...args){return process.stderr.write(util.formatWithOptions(exports2.inspectOpts,...args)+`
|
|
266
269
|
`)}function save(namespaces){namespaces?process.env.DEBUG=namespaces:delete process.env.DEBUG}function load2(){return process.env.DEBUG}function init(debug){debug.inspectOpts={};let keys=Object.keys(exports2.inspectOpts);for(let i=0;i<keys.length;i++)debug.inspectOpts[keys[i]]=exports2.inspectOpts[keys[i]]}module2.exports=require_common5()(exports2);var{formatters}=module2.exports;formatters.o=function(v){return this.inspectOpts.colors=this.useColors,util.inspect(v,this.inspectOpts).split(`
|
|
267
|
-
`).map(str=>str.trim()).join(" ")};formatters.O=function(v){return this.inspectOpts.colors=this.useColors,util.inspect(v,this.inspectOpts)}}});var require_src8=__commonJS({"node_modules/socket.io/node_modules/debug/src/index.js"(exports2,module2){typeof process>"u"||process.type==="renderer"||process.browser===!0||process.__nwjs?module2.exports=require_browser8():module2.exports=require_node8()}});var require_client=__commonJS({"node_modules/socket.io/dist/client.js"(exports2){"use strict";var __importDefault=exports2&&exports2.__importDefault||function(mod){return mod&&mod.__esModule?mod:{default:mod}};Object.defineProperty(exports2,"__esModule",{value:!0});exports2.Client=void 0;var socket_io_parser_1=require_cjs3(),debug_1=__importDefault(require_src8()),debug=(0,debug_1.default)("socket.io:client"),Client=class{constructor(server,conn){this.sockets=new Map,this.nsps=new Map,this.server=server,this.conn=conn,this.encoder=server.encoder,this.decoder=new server._parser.Decoder,this.id=conn.id,this.setup()}get request(){return this.conn.request}setup(){this.onclose=this.onclose.bind(this),this.ondata=this.ondata.bind(this),this.onerror=this.onerror.bind(this),this.ondecoded=this.ondecoded.bind(this),this.decoder.on("decoded",this.ondecoded),this.conn.on("data",this.ondata),this.conn.on("error",this.onerror),this.conn.on("close",this.onclose),this.connectTimeout=setTimeout(()=>{this.nsps.size===0?(debug("no namespace joined yet, close the client"),this.close()):debug("the client has already joined a namespace, nothing to do")},this.server._connectTimeout)}connect(name,auth={}){if(this.server._nsps.has(name))return debug("connecting to namespace %s",name),this.doConnect(name,auth);this.server._checkNamespace(name,auth,dynamicNspName=>{dynamicNspName?this.doConnect(name,auth):(debug("creation of namespace %s was denied",name),this._packet({type:socket_io_parser_1.PacketType.CONNECT_ERROR,nsp:name,data:{message:"Invalid namespace"}}))})}doConnect(name,auth){let nsp=this.server.of(name);nsp._add(this,auth,socket=>{this.sockets.set(socket.id,socket),this.nsps.set(nsp.name,socket),this.connectTimeout&&(clearTimeout(this.connectTimeout),this.connectTimeout=void 0)})}_disconnect(){for(let socket of this.sockets.values())socket.disconnect();this.sockets.clear(),this.close()}_remove(socket){if(this.sockets.has(socket.id)){let nsp=this.sockets.get(socket.id).nsp.name;this.sockets.delete(socket.id),this.nsps.delete(nsp)}else debug("ignoring remove for %s",socket.id)}close(){this.conn.readyState==="open"&&(debug("forcing transport close"),this.conn.close(),this.onclose("forced server close"))}_packet(packet,opts={}){if(this.conn.readyState!=="open"){debug("ignoring packet write %j",packet);return}let encodedPackets=opts.preEncoded?packet:this.encoder.encode(packet);this.writeToEngine(encodedPackets,opts)}writeToEngine(encodedPackets,opts){if(opts.volatile&&!this.conn.transport.writable){debug("volatile packet is discarded since the transport is not currently writable");return}let packets=Array.isArray(encodedPackets)?encodedPackets:[encodedPackets];for(let encodedPacket of packets)this.conn.write(encodedPacket,opts)}ondata(data){try{this.decoder.add(data)}catch(e){debug("invalid packet format"),this.onerror(e)}}ondecoded(packet){let{namespace,authPayload}=this._parseNamespace(packet),socket=this.nsps.get(namespace);!socket&&packet.type===socket_io_parser_1.PacketType.CONNECT?this.connect(namespace,authPayload):socket&&packet.type!==socket_io_parser_1.PacketType.CONNECT&&packet.type!==socket_io_parser_1.PacketType.CONNECT_ERROR?process.nextTick(function(){socket._onpacket(packet)}):(debug("invalid state (packet type: %s)",packet.type),this.close())}_parseNamespace(packet){if(this.conn.protocol!==3)return{namespace:packet.nsp,authPayload:packet.data};let url=new URL(packet.nsp,"https://socket.io");return{namespace:url.pathname,authPayload:Object.fromEntries(url.searchParams.entries())}}onerror(err){for(let socket of this.sockets.values())socket._onerror(err);this.conn.close()}onclose(reason,description){debug("client close with reason %s",reason),this.destroy();for(let socket of this.sockets.values())socket._onclose(reason,description);this.sockets.clear(),this.decoder.destroy()}destroy(){this.conn.removeListener("data",this.ondata),this.conn.removeListener("error",this.onerror),this.conn.removeListener("close",this.onclose),this.decoder.removeListener("decoded",this.ondecoded),this.connectTimeout&&(clearTimeout(this.connectTimeout),this.connectTimeout=void 0)}};exports2.Client=Client}});var require_typed_events=__commonJS({"node_modules/socket.io/dist/typed-events.js"(exports2){"use strict";Object.defineProperty(exports2,"__esModule",{value:!0});exports2.StrictEventEmitter=void 0;var events_1=require("events"),StrictEventEmitter=class extends events_1.EventEmitter{on(ev,listener){return super.on(ev,listener)}once(ev,listener){return super.once(ev,listener)}emit(ev,...args){return super.emit(ev,...args)}emitReserved(ev,...args){return super.emit(ev,...args)}emitUntyped(ev,...args){return super.emit(ev,...args)}listeners(event){return super.listeners(event)}};exports2.StrictEventEmitter=StrictEventEmitter}});var require_socket_types=__commonJS({"node_modules/socket.io/dist/socket-types.js"(exports2){"use strict";Object.defineProperty(exports2,"__esModule",{value:!0});exports2.RESERVED_EVENTS=void 0;exports2.RESERVED_EVENTS=new Set(["connect","connect_error","disconnect","disconnecting","newListener","removeListener"])}});var require_broadcast_operator=__commonJS({"node_modules/socket.io/dist/broadcast-operator.js"(exports2){"use strict";Object.defineProperty(exports2,"__esModule",{value:!0});exports2.RemoteSocket=exports2.BroadcastOperator=void 0;var socket_types_1=require_socket_types(),socket_io_parser_1=require_cjs3(),BroadcastOperator=class _BroadcastOperator{constructor(adapter,rooms=new Set,exceptRooms=new Set,flags={}){this.adapter=adapter,this.rooms=rooms,this.exceptRooms=exceptRooms,this.flags=flags}to(room){let rooms=new Set(this.rooms);return Array.isArray(room)?room.forEach(r=>rooms.add(r)):rooms.add(room),new _BroadcastOperator(this.adapter,rooms,this.exceptRooms,this.flags)}in(room){return this.to(room)}except(room){let exceptRooms=new Set(this.exceptRooms);return Array.isArray(room)?room.forEach(r=>exceptRooms.add(r)):exceptRooms.add(room),new _BroadcastOperator(this.adapter,this.rooms,exceptRooms,this.flags)}compress(compress){let flags=Object.assign({},this.flags,{compress});return new _BroadcastOperator(this.adapter,this.rooms,this.exceptRooms,flags)}get volatile(){let flags=Object.assign({},this.flags,{volatile:!0});return new _BroadcastOperator(this.adapter,this.rooms,this.exceptRooms,flags)}get local(){let flags=Object.assign({},this.flags,{local:!0});return new _BroadcastOperator(this.adapter,this.rooms,this.exceptRooms,flags)}timeout(timeout){let flags=Object.assign({},this.flags,{timeout});return new _BroadcastOperator(this.adapter,this.rooms,this.exceptRooms,flags)}emit(ev,...args){if(socket_types_1.RESERVED_EVENTS.has(ev))throw new Error(`"${String(ev)}" is a reserved event name`);let data=[ev,...args],packet={type:socket_io_parser_1.PacketType.EVENT,data};if(!(typeof data[data.length-1]=="function"))return this.adapter.broadcast(packet,{rooms:this.rooms,except:this.exceptRooms,flags:this.flags}),!0;let ack=data.pop(),timedOut=!1,responses=[],timer=setTimeout(()=>{timedOut=!0,ack.apply(this,[new Error("operation has timed out"),this.flags.expectSingleResponse?null:responses])},this.flags.timeout),expectedServerCount=-1,actualServerCount=0,expectedClientCount=0,checkCompleteness=()=>{!timedOut&&expectedServerCount===actualServerCount&&responses.length===expectedClientCount&&(clearTimeout(timer),ack.apply(this,[null,this.flags.expectSingleResponse?responses[0]:responses]))};return this.adapter.broadcastWithAck(packet,{rooms:this.rooms,except:this.exceptRooms,flags:this.flags},clientCount=>{expectedClientCount+=clientCount,actualServerCount++,checkCompleteness()},clientResponse=>{responses.push(clientResponse),checkCompleteness()}),this.adapter.serverCount().then(serverCount=>{expectedServerCount=serverCount,checkCompleteness()}),!0}emitWithAck(ev,...args){return new Promise((resolve,reject)=>{args.push((err,responses)=>err?(err.responses=responses,reject(err)):resolve(responses)),this.emit(ev,...args)})}allSockets(){if(!this.adapter)throw new Error("No adapter for this namespace, are you trying to get the list of clients of a dynamic namespace?");return this.adapter.sockets(this.rooms)}fetchSockets(){return this.adapter.fetchSockets({rooms:this.rooms,except:this.exceptRooms,flags:this.flags}).then(sockets=>sockets.map(socket=>socket.server?socket:new RemoteSocket(this.adapter,socket)))}socketsJoin(room){this.adapter.addSockets({rooms:this.rooms,except:this.exceptRooms,flags:this.flags},Array.isArray(room)?room:[room])}socketsLeave(room){this.adapter.delSockets({rooms:this.rooms,except:this.exceptRooms,flags:this.flags},Array.isArray(room)?room:[room])}disconnectSockets(close=!1){this.adapter.disconnectSockets({rooms:this.rooms,except:this.exceptRooms,flags:this.flags},close)}};exports2.BroadcastOperator=BroadcastOperator;var RemoteSocket=class{constructor(adapter,details){this.id=details.id,this.handshake=details.handshake,this.rooms=new Set(details.rooms),this.data=details.data,this.operator=new BroadcastOperator(adapter,new Set([this.id]),new Set,{expectSingleResponse:!0})}timeout(timeout){return this.operator.timeout(timeout)}emit(ev,...args){return this.operator.emit(ev,...args)}join(room){return this.operator.socketsJoin(room)}leave(room){return this.operator.socketsLeave(room)}disconnect(close=!1){return this.operator.disconnectSockets(close),this}};exports2.RemoteSocket=RemoteSocket}});var require_socket2=__commonJS({"node_modules/socket.io/dist/socket.js"(exports2){"use strict";var __importDefault=exports2&&exports2.__importDefault||function(mod){return mod&&mod.__esModule?mod:{default:mod}};Object.defineProperty(exports2,"__esModule",{value:!0});exports2.Socket=void 0;var socket_io_parser_1=require_cjs3(),debug_1=__importDefault(require_src8()),typed_events_1=require_typed_events(),base64id_1=__importDefault(require_base64id()),broadcast_operator_1=require_broadcast_operator(),socket_types_1=require_socket_types(),debug=(0,debug_1.default)("socket.io:socket"),RECOVERABLE_DISCONNECT_REASONS=new Set(["transport error","transport close","forced close","ping timeout","server shutting down","forced server close"]);function noop(){}var Socket=class extends typed_events_1.StrictEventEmitter{constructor(nsp,client,auth,previousSession){super(),this.nsp=nsp,this.client=client,this.recovered=!1,this.data={},this.connected=!1,this.acks=new Map,this.fns=[],this.flags={},this.server=nsp.server,this.adapter=nsp.adapter,previousSession?(this.id=previousSession.sid,this.pid=previousSession.pid,previousSession.rooms.forEach(room=>this.join(room)),this.data=previousSession.data,previousSession.missedPackets.forEach(packet=>{this.packet({type:socket_io_parser_1.PacketType.EVENT,data:packet})}),this.recovered=!0):(client.conn.protocol===3?this.id=nsp.name!=="/"?nsp.name+"#"+client.id:client.id:this.id=base64id_1.default.generateId(),this.server._opts.connectionStateRecovery&&(this.pid=base64id_1.default.generateId())),this.handshake=this.buildHandshake(auth),this.on("error",noop)}buildHandshake(auth){var _a,_b,_c,_d;return{headers:((_a=this.request)===null||_a===void 0?void 0:_a.headers)||{},time:new Date+"",address:this.conn.remoteAddress,xdomain:!!(!((_b=this.request)===null||_b===void 0)&&_b.headers.origin),secure:!this.request||!!this.request.connection.encrypted,issued:+new Date,url:(_c=this.request)===null||_c===void 0?void 0:_c.url,query:((_d=this.request)===null||_d===void 0?void 0:_d._query)||{},auth}}emit(ev,...args){if(socket_types_1.RESERVED_EVENTS.has(ev))throw new Error(`"${String(ev)}" is a reserved event name`);let data=[ev,...args],packet={type:socket_io_parser_1.PacketType.EVENT,data};if(typeof data[data.length-1]=="function"){let id=this.nsp._ids++;debug("emitting packet with ack id %d",id),this.registerAckCallback(id,data.pop()),packet.id=id}let flags=Object.assign({},this.flags);return this.flags={},this.nsp.server.opts.connectionStateRecovery?this.adapter.broadcast(packet,{rooms:new Set([this.id]),except:new Set,flags}):(this.notifyOutgoingListeners(packet),this.packet(packet,flags)),!0}emitWithAck(ev,...args){let withErr=this.flags.timeout!==void 0;return new Promise((resolve,reject)=>{args.push((arg1,arg2)=>withErr?arg1?reject(arg1):resolve(arg2):resolve(arg1)),this.emit(ev,...args)})}registerAckCallback(id,ack){let timeout=this.flags.timeout;if(timeout===void 0){this.acks.set(id,ack);return}let timer=setTimeout(()=>{debug("event with ack id %d has timed out after %d ms",id,timeout),this.acks.delete(id),ack.call(this,new Error("operation has timed out"))},timeout);this.acks.set(id,(...args)=>{clearTimeout(timer),ack.apply(this,[null,...args])})}to(room){return this.newBroadcastOperator().to(room)}in(room){return this.newBroadcastOperator().in(room)}except(room){return this.newBroadcastOperator().except(room)}send(...args){return this.emit("message",...args),this}write(...args){return this.emit("message",...args),this}packet(packet,opts={}){packet.nsp=this.nsp.name,opts.compress=opts.compress!==!1,this.client._packet(packet,opts)}join(rooms){return debug("join room %s",rooms),this.adapter.addAll(this.id,new Set(Array.isArray(rooms)?rooms:[rooms]))}leave(room){return debug("leave room %s",room),this.adapter.del(this.id,room)}leaveAll(){this.adapter.delAll(this.id)}_onconnect(){debug("socket connected - writing packet"),this.connected=!0,this.join(this.id),this.conn.protocol===3?this.packet({type:socket_io_parser_1.PacketType.CONNECT}):this.packet({type:socket_io_parser_1.PacketType.CONNECT,data:{sid:this.id,pid:this.pid}})}_onpacket(packet){switch(debug("got packet %j",packet),packet.type){case socket_io_parser_1.PacketType.EVENT:this.onevent(packet);break;case socket_io_parser_1.PacketType.BINARY_EVENT:this.onevent(packet);break;case socket_io_parser_1.PacketType.ACK:this.onack(packet);break;case socket_io_parser_1.PacketType.BINARY_ACK:this.onack(packet);break;case socket_io_parser_1.PacketType.DISCONNECT:this.ondisconnect();break}}onevent(packet){let args=packet.data||[];if(debug("emitting event %j",args),packet.id!=null&&(debug("attaching ack callback to event"),args.push(this.ack(packet.id))),this._anyListeners&&this._anyListeners.length){let listeners=this._anyListeners.slice();for(let listener of listeners)listener.apply(this,args)}this.dispatch(args)}ack(id){let self2=this,sent=!1;return function(){if(sent)return;let args=Array.prototype.slice.call(arguments);debug("sending ack %j",args),self2.packet({id,type:socket_io_parser_1.PacketType.ACK,data:args}),sent=!0}}onack(packet){let ack=this.acks.get(packet.id);typeof ack=="function"?(debug("calling ack %s with %j",packet.id,packet.data),ack.apply(this,packet.data),this.acks.delete(packet.id)):debug("bad ack %s",packet.id)}ondisconnect(){debug("got disconnect packet"),this._onclose("client namespace disconnect")}_onerror(err){this.emitReserved("error",err)}_onclose(reason,description){if(!this.connected)return this;debug("closing socket - reason %s",reason),this.emitReserved("disconnecting",reason,description),this.server._opts.connectionStateRecovery&&RECOVERABLE_DISCONNECT_REASONS.has(reason)&&(debug("connection state recovery is enabled for sid %s",this.id),this.adapter.persistSession({sid:this.id,pid:this.pid,rooms:[...this.rooms],data:this.data})),this._cleanup(),this.client._remove(this),this.connected=!1,this.emitReserved("disconnect",reason,description)}_cleanup(){this.leaveAll(),this.nsp._remove(this),this.join=noop}_error(err){this.packet({type:socket_io_parser_1.PacketType.CONNECT_ERROR,data:err})}disconnect(close=!1){return this.connected?(close?this.client._disconnect():(this.packet({type:socket_io_parser_1.PacketType.DISCONNECT}),this._onclose("server namespace disconnect")),this):this}compress(compress){return this.flags.compress=compress,this}get volatile(){return this.flags.volatile=!0,this}get broadcast(){return this.newBroadcastOperator()}get local(){return this.newBroadcastOperator().local}timeout(timeout){return this.flags.timeout=timeout,this}dispatch(event){debug("dispatching an event %j",event),this.run(event,err=>{process.nextTick(()=>{if(err)return this._onerror(err);this.connected?super.emitUntyped.apply(this,event):debug("ignore packet received after disconnection")})})}use(fn){return this.fns.push(fn),this}run(event,fn){if(!this.fns.length)return fn();let fns=this.fns.slice(0);function run(i){fns[i](event,err=>{if(err)return fn(err);if(!fns[i+1])return fn();run(i+1)})}run(0)}get disconnected(){return!this.connected}get request(){return this.client.request}get conn(){return this.client.conn}get rooms(){return this.adapter.socketRooms(this.id)||new Set}onAny(listener){return this._anyListeners=this._anyListeners||[],this._anyListeners.push(listener),this}prependAny(listener){return this._anyListeners=this._anyListeners||[],this._anyListeners.unshift(listener),this}offAny(listener){if(!this._anyListeners)return this;if(listener){let listeners=this._anyListeners;for(let i=0;i<listeners.length;i++)if(listener===listeners[i])return listeners.splice(i,1),this}else this._anyListeners=[];return this}listenersAny(){return this._anyListeners||[]}onAnyOutgoing(listener){return this._anyOutgoingListeners=this._anyOutgoingListeners||[],this._anyOutgoingListeners.push(listener),this}prependAnyOutgoing(listener){return this._anyOutgoingListeners=this._anyOutgoingListeners||[],this._anyOutgoingListeners.unshift(listener),this}offAnyOutgoing(listener){if(!this._anyOutgoingListeners)return this;if(listener){let listeners=this._anyOutgoingListeners;for(let i=0;i<listeners.length;i++)if(listener===listeners[i])return listeners.splice(i,1),this}else this._anyOutgoingListeners=[];return this}listenersAnyOutgoing(){return this._anyOutgoingListeners||[]}notifyOutgoingListeners(packet){if(this._anyOutgoingListeners&&this._anyOutgoingListeners.length){let listeners=this._anyOutgoingListeners.slice();for(let listener of listeners)listener.apply(this,packet.data)}}newBroadcastOperator(){let flags=Object.assign({},this.flags);return this.flags={},new broadcast_operator_1.BroadcastOperator(this.adapter,new Set,new Set([this.id]),flags)}};exports2.Socket=Socket}});var require_namespace=__commonJS({"node_modules/socket.io/dist/namespace.js"(exports2){"use strict";var __importDefault=exports2&&exports2.__importDefault||function(mod){return mod&&mod.__esModule?mod:{default:mod}};Object.defineProperty(exports2,"__esModule",{value:!0});exports2.Namespace=exports2.RESERVED_EVENTS=void 0;var socket_1=require_socket2(),typed_events_1=require_typed_events(),debug_1=__importDefault(require_src8()),broadcast_operator_1=require_broadcast_operator(),debug=(0,debug_1.default)("socket.io:namespace");exports2.RESERVED_EVENTS=new Set(["connect","connection","new_namespace"]);var Namespace=class extends typed_events_1.StrictEventEmitter{constructor(server,name){super(),this.sockets=new Map,this._preConnectSockets=new Map,this._fns=[],this._ids=0,this.server=server,this.name=name,this._initAdapter()}_initAdapter(){this.adapter=new(this.server.adapter())(this),Promise.resolve(this.adapter.init()).catch(err=>{debug("error while initializing adapter: %s",err)})}use(fn){return this._fns.push(fn),this}run(socket,fn){if(!this._fns.length)return fn();let fns=this._fns.slice(0);function run(i){fns[i](socket,err=>{if(err)return fn(err);if(!fns[i+1])return fn();run(i+1)})}run(0)}to(room){return new broadcast_operator_1.BroadcastOperator(this.adapter).to(room)}in(room){return new broadcast_operator_1.BroadcastOperator(this.adapter).in(room)}except(room){return new broadcast_operator_1.BroadcastOperator(this.adapter).except(room)}async _add(client,auth,fn){var _a;debug("adding socket to nsp %s",this.name);let socket=await this._createSocket(client,auth);if(this._preConnectSockets.set(socket.id,socket),!((_a=this.server.opts.connectionStateRecovery)===null||_a===void 0)&&_a.skipMiddlewares&&socket.recovered&&client.conn.readyState==="open")return this._doConnect(socket,fn);this.run(socket,err=>{process.nextTick(()=>{if(client.conn.readyState!=="open"){debug("next called after client was closed - ignoring socket"),socket._cleanup();return}if(err)return debug("middleware error, sending CONNECT_ERROR packet to the client"),socket._cleanup(),client.conn.protocol===3?socket._error(err.data||err.message):socket._error({message:err.message,data:err.data});this._doConnect(socket,fn)})})}async _createSocket(client,auth){let sessionId=auth.pid,offset=auth.offset;if(this.server.opts.connectionStateRecovery&&typeof sessionId=="string"&&typeof offset=="string"){let session;try{session=await this.adapter.restoreSession(sessionId,offset)}catch(e){debug("error while restoring session: %s",e)}if(session)return debug("connection state recovered for sid %s",session.sid),new socket_1.Socket(this,client,auth,session)}return new socket_1.Socket(this,client,auth)}_doConnect(socket,fn){this._preConnectSockets.delete(socket.id),this.sockets.set(socket.id,socket),socket._onconnect(),fn&&fn(socket),this.emitReserved("connect",socket),this.emitReserved("connection",socket)}_remove(socket){this.sockets.delete(socket.id)||this._preConnectSockets.delete(socket.id)}emit(ev,...args){return new broadcast_operator_1.BroadcastOperator(this.adapter).emit(ev,...args)}send(...args){return this.emit("message",...args),this}write(...args){return this.emit("message",...args),this}serverSideEmit(ev,...args){if(exports2.RESERVED_EVENTS.has(ev))throw new Error(`"${String(ev)}" is a reserved event name`);return args.unshift(ev),this.adapter.serverSideEmit(args),!0}serverSideEmitWithAck(ev,...args){return new Promise((resolve,reject)=>{args.push((err,responses)=>err?(err.responses=responses,reject(err)):resolve(responses)),this.serverSideEmit(ev,...args)})}_onServerSideEmit(args){super.emitUntyped.apply(this,args)}allSockets(){return new broadcast_operator_1.BroadcastOperator(this.adapter).allSockets()}compress(compress){return new broadcast_operator_1.BroadcastOperator(this.adapter).compress(compress)}get volatile(){return new broadcast_operator_1.BroadcastOperator(this.adapter).volatile}get local(){return new broadcast_operator_1.BroadcastOperator(this.adapter).local}timeout(timeout){return new broadcast_operator_1.BroadcastOperator(this.adapter).timeout(timeout)}fetchSockets(){return new broadcast_operator_1.BroadcastOperator(this.adapter).fetchSockets()}socketsJoin(room){return new broadcast_operator_1.BroadcastOperator(this.adapter).socketsJoin(room)}socketsLeave(room){return new broadcast_operator_1.BroadcastOperator(this.adapter).socketsLeave(room)}disconnectSockets(close=!1){return new broadcast_operator_1.BroadcastOperator(this.adapter).disconnectSockets(close)}};exports2.Namespace=Namespace}});var require_yeast=__commonJS({"node_modules/socket.io-adapter/dist/contrib/yeast.js"(exports2){"use strict";Object.defineProperty(exports2,"__esModule",{value:!0});exports2.yeast=exports2.decode=exports2.encode=void 0;var alphabet="0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz-_".split(""),length=64,map={},seed=0,i=0,prev;function encode(num){let encoded="";do encoded=alphabet[num%length]+encoded,num=Math.floor(num/length);while(num>0);return encoded}exports2.encode=encode;function decode(str){let decoded=0;for(i=0;i<str.length;i++)decoded=decoded*length+map[str.charAt(i)];return decoded}exports2.decode=decode;function yeast(){let now=encode(+new Date);return now!==prev?(seed=0,prev=now):now+"."+encode(seed++)}exports2.yeast=yeast;for(;i<length;i++)map[alphabet[i]]=i}});var require_constants5=__commonJS({"node_modules/socket.io-adapter/node_modules/ws/lib/constants.js"(exports2,module2){"use strict";module2.exports={BINARY_TYPES:["nodebuffer","arraybuffer","fragments"],EMPTY_BUFFER:Buffer.alloc(0),GUID:"258EAFA5-E914-47DA-95CA-C5AB0DC85B11",kForOnEventAttribute:Symbol("kIsForOnEventAttribute"),kListener:Symbol("kListener"),kStatusCode:Symbol("status-code"),kWebSocket:Symbol("websocket"),NOOP:()=>{}}}});var require_buffer_util2=__commonJS({"node_modules/socket.io-adapter/node_modules/ws/lib/buffer-util.js"(exports2,module2){"use strict";var{EMPTY_BUFFER}=require_constants5();function concat(list,totalLength){if(list.length===0)return EMPTY_BUFFER;if(list.length===1)return list[0];let target=Buffer.allocUnsafe(totalLength),offset=0;for(let i=0;i<list.length;i++){let buf=list[i];target.set(buf,offset),offset+=buf.length}return offset<totalLength?target.slice(0,offset):target}function _mask(source,mask,output,offset,length){for(let i=0;i<length;i++)output[offset+i]=source[i]^mask[i&3]}function _unmask(buffer,mask){for(let i=0;i<buffer.length;i++)buffer[i]^=mask[i&3]}function toArrayBuffer(buf){return buf.byteLength===buf.buffer.byteLength?buf.buffer:buf.buffer.slice(buf.byteOffset,buf.byteOffset+buf.byteLength)}function toBuffer(data){if(toBuffer.readOnly=!0,Buffer.isBuffer(data))return data;let buf;return data instanceof ArrayBuffer?buf=Buffer.from(data):ArrayBuffer.isView(data)?buf=Buffer.from(data.buffer,data.byteOffset,data.byteLength):(buf=Buffer.from(data),toBuffer.readOnly=!1),buf}module2.exports={concat,mask:_mask,toArrayBuffer,toBuffer,unmask:_unmask};if(!process.env.WS_NO_BUFFER_UTIL)try{let bufferUtil=require("bufferutil");module2.exports.mask=function(source,mask,output,offset,length){length<48?_mask(source,mask,output,offset,length):bufferUtil.mask(source,mask,output,offset,length)},module2.exports.unmask=function(buffer,mask){buffer.length<32?_unmask(buffer,mask):bufferUtil.unmask(buffer,mask)}}catch{}}});var require_limiter2=__commonJS({"node_modules/socket.io-adapter/node_modules/ws/lib/limiter.js"(exports2,module2){"use strict";var kDone=Symbol("kDone"),kRun=Symbol("kRun"),Limiter=class{constructor(concurrency){this[kDone]=()=>{this.pending--,this[kRun]()},this.concurrency=concurrency||1/0,this.jobs=[],this.pending=0}add(job){this.jobs.push(job),this[kRun]()}[kRun](){if(this.pending!==this.concurrency&&this.jobs.length){let job=this.jobs.shift();this.pending++,job(this[kDone])}}};module2.exports=Limiter}});var require_permessage_deflate2=__commonJS({"node_modules/socket.io-adapter/node_modules/ws/lib/permessage-deflate.js"(exports2,module2){"use strict";var zlib=require("zlib"),bufferUtil=require_buffer_util2(),Limiter=require_limiter2(),{kStatusCode}=require_constants5(),TRAILER=Buffer.from([0,0,255,255]),kPerMessageDeflate=Symbol("permessage-deflate"),kTotalLength=Symbol("total-length"),kCallback=Symbol("callback"),kBuffers=Symbol("buffers"),kError=Symbol("error"),zlibLimiter,PerMessageDeflate=class{constructor(options,isServer,maxPayload){if(this._maxPayload=maxPayload|0,this._options=options||{},this._threshold=this._options.threshold!==void 0?this._options.threshold:1024,this._isServer=!!isServer,this._deflate=null,this._inflate=null,this.params=null,!zlibLimiter){let concurrency=this._options.concurrencyLimit!==void 0?this._options.concurrencyLimit:10;zlibLimiter=new Limiter(concurrency)}}static get extensionName(){return"permessage-deflate"}offer(){let params={};return this._options.serverNoContextTakeover&&(params.server_no_context_takeover=!0),this._options.clientNoContextTakeover&&(params.client_no_context_takeover=!0),this._options.serverMaxWindowBits&&(params.server_max_window_bits=this._options.serverMaxWindowBits),this._options.clientMaxWindowBits?params.client_max_window_bits=this._options.clientMaxWindowBits:this._options.clientMaxWindowBits==null&&(params.client_max_window_bits=!0),params}accept(configurations){return configurations=this.normalizeParams(configurations),this.params=this._isServer?this.acceptAsServer(configurations):this.acceptAsClient(configurations),this.params}cleanup(){if(this._inflate&&(this._inflate.close(),this._inflate=null),this._deflate){let callback=this._deflate[kCallback];this._deflate.close(),this._deflate=null,callback&&callback(new Error("The deflate stream was closed while data was being processed"))}}acceptAsServer(offers){let opts=this._options,accepted=offers.find(params=>!(opts.serverNoContextTakeover===!1&¶ms.server_no_context_takeover||params.server_max_window_bits&&(opts.serverMaxWindowBits===!1||typeof opts.serverMaxWindowBits=="number"&&opts.serverMaxWindowBits>params.server_max_window_bits)||typeof opts.clientMaxWindowBits=="number"&&!params.client_max_window_bits));if(!accepted)throw new Error("None of the extension offers can be accepted");return opts.serverNoContextTakeover&&(accepted.server_no_context_takeover=!0),opts.clientNoContextTakeover&&(accepted.client_no_context_takeover=!0),typeof opts.serverMaxWindowBits=="number"&&(accepted.server_max_window_bits=opts.serverMaxWindowBits),typeof opts.clientMaxWindowBits=="number"?accepted.client_max_window_bits=opts.clientMaxWindowBits:(accepted.client_max_window_bits===!0||opts.clientMaxWindowBits===!1)&&delete accepted.client_max_window_bits,accepted}acceptAsClient(response){let params=response[0];if(this._options.clientNoContextTakeover===!1&¶ms.client_no_context_takeover)throw new Error('Unexpected parameter "client_no_context_takeover"');if(!params.client_max_window_bits)typeof this._options.clientMaxWindowBits=="number"&&(params.client_max_window_bits=this._options.clientMaxWindowBits);else if(this._options.clientMaxWindowBits===!1||typeof this._options.clientMaxWindowBits=="number"&¶ms.client_max_window_bits>this._options.clientMaxWindowBits)throw new Error('Unexpected or invalid parameter "client_max_window_bits"');return params}normalizeParams(configurations){return configurations.forEach(params=>{Object.keys(params).forEach(key=>{let value=params[key];if(value.length>1)throw new Error(`Parameter "${key}" must have only a single value`);if(value=value[0],key==="client_max_window_bits"){if(value!==!0){let num=+value;if(!Number.isInteger(num)||num<8||num>15)throw new TypeError(`Invalid value for parameter "${key}": ${value}`);value=num}else if(!this._isServer)throw new TypeError(`Invalid value for parameter "${key}": ${value}`)}else if(key==="server_max_window_bits"){let num=+value;if(!Number.isInteger(num)||num<8||num>15)throw new TypeError(`Invalid value for parameter "${key}": ${value}`);value=num}else if(key==="client_no_context_takeover"||key==="server_no_context_takeover"){if(value!==!0)throw new TypeError(`Invalid value for parameter "${key}": ${value}`)}else throw new Error(`Unknown parameter "${key}"`);params[key]=value})}),configurations}decompress(data,fin,callback){zlibLimiter.add(done=>{this._decompress(data,fin,(err,result)=>{done(),callback(err,result)})})}compress(data,fin,callback){zlibLimiter.add(done=>{this._compress(data,fin,(err,result)=>{done(),callback(err,result)})})}_decompress(data,fin,callback){let endpoint=this._isServer?"client":"server";if(!this._inflate){let key=`${endpoint}_max_window_bits`,windowBits=typeof this.params[key]!="number"?zlib.Z_DEFAULT_WINDOWBITS:this.params[key];this._inflate=zlib.createInflateRaw({...this._options.zlibInflateOptions,windowBits}),this._inflate[kPerMessageDeflate]=this,this._inflate[kTotalLength]=0,this._inflate[kBuffers]=[],this._inflate.on("error",inflateOnError),this._inflate.on("data",inflateOnData)}this._inflate[kCallback]=callback,this._inflate.write(data),fin&&this._inflate.write(TRAILER),this._inflate.flush(()=>{let err=this._inflate[kError];if(err){this._inflate.close(),this._inflate=null,callback(err);return}let data2=bufferUtil.concat(this._inflate[kBuffers],this._inflate[kTotalLength]);this._inflate._readableState.endEmitted?(this._inflate.close(),this._inflate=null):(this._inflate[kTotalLength]=0,this._inflate[kBuffers]=[],fin&&this.params[`${endpoint}_no_context_takeover`]&&this._inflate.reset()),callback(null,data2)})}_compress(data,fin,callback){let endpoint=this._isServer?"server":"client";if(!this._deflate){let key=`${endpoint}_max_window_bits`,windowBits=typeof this.params[key]!="number"?zlib.Z_DEFAULT_WINDOWBITS:this.params[key];this._deflate=zlib.createDeflateRaw({...this._options.zlibDeflateOptions,windowBits}),this._deflate[kTotalLength]=0,this._deflate[kBuffers]=[],this._deflate.on("data",deflateOnData)}this._deflate[kCallback]=callback,this._deflate.write(data),this._deflate.flush(zlib.Z_SYNC_FLUSH,()=>{if(!this._deflate)return;let data2=bufferUtil.concat(this._deflate[kBuffers],this._deflate[kTotalLength]);fin&&(data2=data2.slice(0,data2.length-4)),this._deflate[kCallback]=null,this._deflate[kTotalLength]=0,this._deflate[kBuffers]=[],fin&&this.params[`${endpoint}_no_context_takeover`]&&this._deflate.reset(),callback(null,data2)})}};module2.exports=PerMessageDeflate;function deflateOnData(chunk){this[kBuffers].push(chunk),this[kTotalLength]+=chunk.length}function inflateOnData(chunk){if(this[kTotalLength]+=chunk.length,this[kPerMessageDeflate]._maxPayload<1||this[kTotalLength]<=this[kPerMessageDeflate]._maxPayload){this[kBuffers].push(chunk);return}this[kError]=new RangeError("Max payload size exceeded"),this[kError].code="WS_ERR_UNSUPPORTED_MESSAGE_LENGTH",this[kError][kStatusCode]=1009,this.removeListener("data",inflateOnData),this.reset()}function inflateOnError(err){this[kPerMessageDeflate]._inflate=null,err[kStatusCode]=1007,this[kCallback](err)}}});var require_validation2=__commonJS({"node_modules/socket.io-adapter/node_modules/ws/lib/validation.js"(exports2,module2){"use strict";var tokenChars=[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,1,1,1,1,1,0,0,1,1,0,1,1,0,1,1,1,1,1,1,1,1,1,1,0,0,0,0,0,0,0,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,0,0,0,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,0,1,0,1,0];function isValidStatusCode(code){return code>=1e3&&code<=1014&&code!==1004&&code!==1005&&code!==1006||code>=3e3&&code<=4999}function _isValidUTF8(buf){let len=buf.length,i=0;for(;i<len;)if((buf[i]&128)===0)i++;else if((buf[i]&224)===192){if(i+1===len||(buf[i+1]&192)!==128||(buf[i]&254)===192)return!1;i+=2}else if((buf[i]&240)===224){if(i+2>=len||(buf[i+1]&192)!==128||(buf[i+2]&192)!==128||buf[i]===224&&(buf[i+1]&224)===128||buf[i]===237&&(buf[i+1]&224)===160)return!1;i+=3}else if((buf[i]&248)===240){if(i+3>=len||(buf[i+1]&192)!==128||(buf[i+2]&192)!==128||(buf[i+3]&192)!==128||buf[i]===240&&(buf[i+1]&240)===128||buf[i]===244&&buf[i+1]>143||buf[i]>244)return!1;i+=4}else return!1;return!0}module2.exports={isValidStatusCode,isValidUTF8:_isValidUTF8,tokenChars};if(!process.env.WS_NO_UTF_8_VALIDATE)try{let isValidUTF8=require("utf-8-validate");module2.exports.isValidUTF8=function(buf){return buf.length<150?_isValidUTF8(buf):isValidUTF8(buf)}}catch{}}});var require_receiver2=__commonJS({"node_modules/socket.io-adapter/node_modules/ws/lib/receiver.js"(exports2,module2){"use strict";var{Writable}=require("stream"),PerMessageDeflate=require_permessage_deflate2(),{BINARY_TYPES,EMPTY_BUFFER,kStatusCode,kWebSocket}=require_constants5(),{concat,toArrayBuffer,unmask}=require_buffer_util2(),{isValidStatusCode,isValidUTF8}=require_validation2(),GET_INFO=0,GET_PAYLOAD_LENGTH_16=1,GET_PAYLOAD_LENGTH_64=2,GET_MASK=3,GET_DATA=4,INFLATING=5,Receiver=class extends Writable{constructor(options={}){super(),this._binaryType=options.binaryType||BINARY_TYPES[0],this._extensions=options.extensions||{},this._isServer=!!options.isServer,this._maxPayload=options.maxPayload|0,this._skipUTF8Validation=!!options.skipUTF8Validation,this[kWebSocket]=void 0,this._bufferedBytes=0,this._buffers=[],this._compressed=!1,this._payloadLength=0,this._mask=void 0,this._fragmented=0,this._masked=!1,this._fin=!1,this._opcode=0,this._totalPayloadLength=0,this._messageLength=0,this._fragments=[],this._state=GET_INFO,this._loop=!1}_write(chunk,encoding,cb){if(this._opcode===8&&this._state==GET_INFO)return cb();this._bufferedBytes+=chunk.length,this._buffers.push(chunk),this.startLoop(cb)}consume(n){if(this._bufferedBytes-=n,n===this._buffers[0].length)return this._buffers.shift();if(n<this._buffers[0].length){let buf=this._buffers[0];return this._buffers[0]=buf.slice(n),buf.slice(0,n)}let dst=Buffer.allocUnsafe(n);do{let buf=this._buffers[0],offset=dst.length-n;n>=buf.length?dst.set(this._buffers.shift(),offset):(dst.set(new Uint8Array(buf.buffer,buf.byteOffset,n),offset),this._buffers[0]=buf.slice(n)),n-=buf.length}while(n>0);return dst}startLoop(cb){let err;this._loop=!0;do switch(this._state){case GET_INFO:err=this.getInfo();break;case GET_PAYLOAD_LENGTH_16:err=this.getPayloadLength16();break;case GET_PAYLOAD_LENGTH_64:err=this.getPayloadLength64();break;case GET_MASK:this.getMask();break;case GET_DATA:err=this.getData(cb);break;default:this._loop=!1;return}while(this._loop);cb(err)}getInfo(){if(this._bufferedBytes<2){this._loop=!1;return}let buf=this.consume(2);if((buf[0]&48)!==0)return this._loop=!1,error(RangeError,"RSV2 and RSV3 must be clear",!0,1002,"WS_ERR_UNEXPECTED_RSV_2_3");let compressed=(buf[0]&64)===64;if(compressed&&!this._extensions[PerMessageDeflate.extensionName])return this._loop=!1,error(RangeError,"RSV1 must be clear",!0,1002,"WS_ERR_UNEXPECTED_RSV_1");if(this._fin=(buf[0]&128)===128,this._opcode=buf[0]&15,this._payloadLength=buf[1]&127,this._opcode===0){if(compressed)return this._loop=!1,error(RangeError,"RSV1 must be clear",!0,1002,"WS_ERR_UNEXPECTED_RSV_1");if(!this._fragmented)return this._loop=!1,error(RangeError,"invalid opcode 0",!0,1002,"WS_ERR_INVALID_OPCODE");this._opcode=this._fragmented}else if(this._opcode===1||this._opcode===2){if(this._fragmented)return this._loop=!1,error(RangeError,`invalid opcode ${this._opcode}`,!0,1002,"WS_ERR_INVALID_OPCODE");this._compressed=compressed}else if(this._opcode>7&&this._opcode<11){if(!this._fin)return this._loop=!1,error(RangeError,"FIN must be set",!0,1002,"WS_ERR_EXPECTED_FIN");if(compressed)return this._loop=!1,error(RangeError,"RSV1 must be clear",!0,1002,"WS_ERR_UNEXPECTED_RSV_1");if(this._payloadLength>125)return this._loop=!1,error(RangeError,`invalid payload length ${this._payloadLength}`,!0,1002,"WS_ERR_INVALID_CONTROL_PAYLOAD_LENGTH")}else return this._loop=!1,error(RangeError,`invalid opcode ${this._opcode}`,!0,1002,"WS_ERR_INVALID_OPCODE");if(!this._fin&&!this._fragmented&&(this._fragmented=this._opcode),this._masked=(buf[1]&128)===128,this._isServer){if(!this._masked)return this._loop=!1,error(RangeError,"MASK must be set",!0,1002,"WS_ERR_EXPECTED_MASK")}else if(this._masked)return this._loop=!1,error(RangeError,"MASK must be clear",!0,1002,"WS_ERR_UNEXPECTED_MASK");if(this._payloadLength===126)this._state=GET_PAYLOAD_LENGTH_16;else if(this._payloadLength===127)this._state=GET_PAYLOAD_LENGTH_64;else return this.haveLength()}getPayloadLength16(){if(this._bufferedBytes<2){this._loop=!1;return}return this._payloadLength=this.consume(2).readUInt16BE(0),this.haveLength()}getPayloadLength64(){if(this._bufferedBytes<8){this._loop=!1;return}let buf=this.consume(8),num=buf.readUInt32BE(0);return num>Math.pow(2,21)-1?(this._loop=!1,error(RangeError,"Unsupported WebSocket frame: payload length > 2^53 - 1",!1,1009,"WS_ERR_UNSUPPORTED_DATA_PAYLOAD_LENGTH")):(this._payloadLength=num*Math.pow(2,32)+buf.readUInt32BE(4),this.haveLength())}haveLength(){if(this._payloadLength&&this._opcode<8&&(this._totalPayloadLength+=this._payloadLength,this._totalPayloadLength>this._maxPayload&&this._maxPayload>0))return this._loop=!1,error(RangeError,"Max payload size exceeded",!1,1009,"WS_ERR_UNSUPPORTED_MESSAGE_LENGTH");this._masked?this._state=GET_MASK:this._state=GET_DATA}getMask(){if(this._bufferedBytes<4){this._loop=!1;return}this._mask=this.consume(4),this._state=GET_DATA}getData(cb){let data=EMPTY_BUFFER;if(this._payloadLength){if(this._bufferedBytes<this._payloadLength){this._loop=!1;return}data=this.consume(this._payloadLength),this._masked&&(this._mask[0]|this._mask[1]|this._mask[2]|this._mask[3])!==0&&unmask(data,this._mask)}if(this._opcode>7)return this.controlMessage(data);if(this._compressed){this._state=INFLATING,this.decompress(data,cb);return}return data.length&&(this._messageLength=this._totalPayloadLength,this._fragments.push(data)),this.dataMessage()}decompress(data,cb){this._extensions[PerMessageDeflate.extensionName].decompress(data,this._fin,(err,buf)=>{if(err)return cb(err);if(buf.length){if(this._messageLength+=buf.length,this._messageLength>this._maxPayload&&this._maxPayload>0)return cb(error(RangeError,"Max payload size exceeded",!1,1009,"WS_ERR_UNSUPPORTED_MESSAGE_LENGTH"));this._fragments.push(buf)}let er=this.dataMessage();if(er)return cb(er);this.startLoop(cb)})}dataMessage(){if(this._fin){let messageLength=this._messageLength,fragments=this._fragments;if(this._totalPayloadLength=0,this._messageLength=0,this._fragmented=0,this._fragments=[],this._opcode===2){let data;this._binaryType==="nodebuffer"?data=concat(fragments,messageLength):this._binaryType==="arraybuffer"?data=toArrayBuffer(concat(fragments,messageLength)):data=fragments,this.emit("message",data,!0)}else{let buf=concat(fragments,messageLength);if(!this._skipUTF8Validation&&!isValidUTF8(buf))return this._loop=!1,error(Error,"invalid UTF-8 sequence",!0,1007,"WS_ERR_INVALID_UTF8");this.emit("message",buf,!1)}}this._state=GET_INFO}controlMessage(data){if(this._opcode===8)if(this._loop=!1,data.length===0)this.emit("conclude",1005,EMPTY_BUFFER),this.end();else{if(data.length===1)return error(RangeError,"invalid payload length 1",!0,1002,"WS_ERR_INVALID_CONTROL_PAYLOAD_LENGTH");{let code=data.readUInt16BE(0);if(!isValidStatusCode(code))return error(RangeError,`invalid status code ${code}`,!0,1002,"WS_ERR_INVALID_CLOSE_CODE");let buf=data.slice(2);if(!this._skipUTF8Validation&&!isValidUTF8(buf))return error(Error,"invalid UTF-8 sequence",!0,1007,"WS_ERR_INVALID_UTF8");this.emit("conclude",code,buf),this.end()}}else this._opcode===9?this.emit("ping",data):this.emit("pong",data);this._state=GET_INFO}};module2.exports=Receiver;function error(ErrorCtor,message,prefix,statusCode,errorCode){let err=new ErrorCtor(prefix?`Invalid WebSocket frame: ${message}`:message);return Error.captureStackTrace(err,error),err.code=errorCode,err[kStatusCode]=statusCode,err}}});var require_sender2=__commonJS({"node_modules/socket.io-adapter/node_modules/ws/lib/sender.js"(exports2,module2){"use strict";var net=require("net"),tls=require("tls"),{randomFillSync}=require("crypto"),PerMessageDeflate=require_permessage_deflate2(),{EMPTY_BUFFER}=require_constants5(),{isValidStatusCode}=require_validation2(),{mask:applyMask,toBuffer}=require_buffer_util2(),kByteLength=Symbol("kByteLength"),maskBuffer=Buffer.alloc(4),Sender=class _Sender{constructor(socket,extensions,generateMask){this._extensions=extensions||{},generateMask&&(this._generateMask=generateMask,this._maskBuffer=Buffer.alloc(4)),this._socket=socket,this._firstFragment=!0,this._compress=!1,this._bufferedBytes=0,this._deflating=!1,this._queue=[]}static frame(data,options){let mask,merge=!1,offset=2,skipMasking=!1;options.mask&&(mask=options.maskBuffer||maskBuffer,options.generateMask?options.generateMask(mask):randomFillSync(mask,0,4),skipMasking=(mask[0]|mask[1]|mask[2]|mask[3])===0,offset=6);let dataLength;typeof data=="string"?(!options.mask||skipMasking)&&options[kByteLength]!==void 0?dataLength=options[kByteLength]:(data=Buffer.from(data),dataLength=data.length):(dataLength=data.length,merge=options.mask&&options.readOnly&&!skipMasking);let payloadLength=dataLength;dataLength>=65536?(offset+=8,payloadLength=127):dataLength>125&&(offset+=2,payloadLength=126);let target=Buffer.allocUnsafe(merge?dataLength+offset:offset);return target[0]=options.fin?options.opcode|128:options.opcode,options.rsv1&&(target[0]|=64),target[1]=payloadLength,payloadLength===126?target.writeUInt16BE(dataLength,2):payloadLength===127&&(target[2]=target[3]=0,target.writeUIntBE(dataLength,4,6)),options.mask?(target[1]|=128,target[offset-4]=mask[0],target[offset-3]=mask[1],target[offset-2]=mask[2],target[offset-1]=mask[3],skipMasking?[target,data]:merge?(applyMask(data,mask,target,offset,dataLength),[target]):(applyMask(data,mask,data,0,dataLength),[target,data])):[target,data]}close(code,data,mask,cb){let buf;if(code===void 0)buf=EMPTY_BUFFER;else{if(typeof code!="number"||!isValidStatusCode(code))throw new TypeError("First argument must be a valid error code number");if(data===void 0||!data.length)buf=Buffer.allocUnsafe(2),buf.writeUInt16BE(code,0);else{let length=Buffer.byteLength(data);if(length>123)throw new RangeError("The message must not be greater than 123 bytes");buf=Buffer.allocUnsafe(2+length),buf.writeUInt16BE(code,0),typeof data=="string"?buf.write(data,2):buf.set(data,2)}}let options={[kByteLength]:buf.length,fin:!0,generateMask:this._generateMask,mask,maskBuffer:this._maskBuffer,opcode:8,readOnly:!1,rsv1:!1};this._deflating?this.enqueue([this.dispatch,buf,!1,options,cb]):this.sendFrame(_Sender.frame(buf,options),cb)}ping(data,mask,cb){let byteLength,readOnly;if(typeof data=="string"?(byteLength=Buffer.byteLength(data),readOnly=!1):(data=toBuffer(data),byteLength=data.length,readOnly=toBuffer.readOnly),byteLength>125)throw new RangeError("The data size must not be greater than 125 bytes");let options={[kByteLength]:byteLength,fin:!0,generateMask:this._generateMask,mask,maskBuffer:this._maskBuffer,opcode:9,readOnly,rsv1:!1};this._deflating?this.enqueue([this.dispatch,data,!1,options,cb]):this.sendFrame(_Sender.frame(data,options),cb)}pong(data,mask,cb){let byteLength,readOnly;if(typeof data=="string"?(byteLength=Buffer.byteLength(data),readOnly=!1):(data=toBuffer(data),byteLength=data.length,readOnly=toBuffer.readOnly),byteLength>125)throw new RangeError("The data size must not be greater than 125 bytes");let options={[kByteLength]:byteLength,fin:!0,generateMask:this._generateMask,mask,maskBuffer:this._maskBuffer,opcode:10,readOnly,rsv1:!1};this._deflating?this.enqueue([this.dispatch,data,!1,options,cb]):this.sendFrame(_Sender.frame(data,options),cb)}send(data,options,cb){let perMessageDeflate=this._extensions[PerMessageDeflate.extensionName],opcode=options.binary?2:1,rsv1=options.compress,byteLength,readOnly;if(typeof data=="string"?(byteLength=Buffer.byteLength(data),readOnly=!1):(data=toBuffer(data),byteLength=data.length,readOnly=toBuffer.readOnly),this._firstFragment?(this._firstFragment=!1,rsv1&&perMessageDeflate&&perMessageDeflate.params[perMessageDeflate._isServer?"server_no_context_takeover":"client_no_context_takeover"]&&(rsv1=byteLength>=perMessageDeflate._threshold),this._compress=rsv1):(rsv1=!1,opcode=0),options.fin&&(this._firstFragment=!0),perMessageDeflate){let opts={[kByteLength]:byteLength,fin:options.fin,generateMask:this._generateMask,mask:options.mask,maskBuffer:this._maskBuffer,opcode,readOnly,rsv1};this._deflating?this.enqueue([this.dispatch,data,this._compress,opts,cb]):this.dispatch(data,this._compress,opts,cb)}else this.sendFrame(_Sender.frame(data,{[kByteLength]:byteLength,fin:options.fin,generateMask:this._generateMask,mask:options.mask,maskBuffer:this._maskBuffer,opcode,readOnly,rsv1:!1}),cb)}dispatch(data,compress,options,cb){if(!compress){this.sendFrame(_Sender.frame(data,options),cb);return}let perMessageDeflate=this._extensions[PerMessageDeflate.extensionName];this._bufferedBytes+=options[kByteLength],this._deflating=!0,perMessageDeflate.compress(data,options.fin,(_,buf)=>{if(this._socket.destroyed){let err=new Error("The socket was closed while data was being compressed");typeof cb=="function"&&cb(err);for(let i=0;i<this._queue.length;i++){let params=this._queue[i],callback=params[params.length-1];typeof callback=="function"&&callback(err)}return}this._bufferedBytes-=options[kByteLength],this._deflating=!1,options.readOnly=!1,this.sendFrame(_Sender.frame(buf,options),cb),this.dequeue()})}dequeue(){for(;!this._deflating&&this._queue.length;){let params=this._queue.shift();this._bufferedBytes-=params[3][kByteLength],Reflect.apply(params[0],this,params.slice(1))}}enqueue(params){this._bufferedBytes+=params[3][kByteLength],this._queue.push(params)}sendFrame(list,cb){list.length===2?(this._socket.cork(),this._socket.write(list[0]),this._socket.write(list[1],cb),this._socket.uncork()):this._socket.write(list[0],cb)}};module2.exports=Sender}});var require_event_target2=__commonJS({"node_modules/socket.io-adapter/node_modules/ws/lib/event-target.js"(exports2,module2){"use strict";var{kForOnEventAttribute,kListener}=require_constants5(),kCode=Symbol("kCode"),kData=Symbol("kData"),kError=Symbol("kError"),kMessage=Symbol("kMessage"),kReason=Symbol("kReason"),kTarget=Symbol("kTarget"),kType=Symbol("kType"),kWasClean=Symbol("kWasClean"),Event=class{constructor(type){this[kTarget]=null,this[kType]=type}get target(){return this[kTarget]}get type(){return this[kType]}};Object.defineProperty(Event.prototype,"target",{enumerable:!0});Object.defineProperty(Event.prototype,"type",{enumerable:!0});var CloseEvent=class extends Event{constructor(type,options={}){super(type),this[kCode]=options.code===void 0?0:options.code,this[kReason]=options.reason===void 0?"":options.reason,this[kWasClean]=options.wasClean===void 0?!1:options.wasClean}get code(){return this[kCode]}get reason(){return this[kReason]}get wasClean(){return this[kWasClean]}};Object.defineProperty(CloseEvent.prototype,"code",{enumerable:!0});Object.defineProperty(CloseEvent.prototype,"reason",{enumerable:!0});Object.defineProperty(CloseEvent.prototype,"wasClean",{enumerable:!0});var ErrorEvent=class extends Event{constructor(type,options={}){super(type),this[kError]=options.error===void 0?null:options.error,this[kMessage]=options.message===void 0?"":options.message}get error(){return this[kError]}get message(){return this[kMessage]}};Object.defineProperty(ErrorEvent.prototype,"error",{enumerable:!0});Object.defineProperty(ErrorEvent.prototype,"message",{enumerable:!0});var MessageEvent=class extends Event{constructor(type,options={}){super(type),this[kData]=options.data===void 0?null:options.data}get data(){return this[kData]}};Object.defineProperty(MessageEvent.prototype,"data",{enumerable:!0});var EventTarget={addEventListener(type,handler,options={}){for(let listener of this.listeners(type))if(!options[kForOnEventAttribute]&&listener[kListener]===handler&&!listener[kForOnEventAttribute])return;let wrapper;if(type==="message")wrapper=function(data,isBinary){let event=new MessageEvent("message",{data:isBinary?data:data.toString()});event[kTarget]=this,callListener(handler,this,event)};else if(type==="close")wrapper=function(code,message){let event=new CloseEvent("close",{code,reason:message.toString(),wasClean:this._closeFrameReceived&&this._closeFrameSent});event[kTarget]=this,callListener(handler,this,event)};else if(type==="error")wrapper=function(error){let event=new ErrorEvent("error",{error,message:error.message});event[kTarget]=this,callListener(handler,this,event)};else if(type==="open")wrapper=function(){let event=new Event("open");event[kTarget]=this,callListener(handler,this,event)};else return;wrapper[kForOnEventAttribute]=!!options[kForOnEventAttribute],wrapper[kListener]=handler,options.once?this.once(type,wrapper):this.on(type,wrapper)},removeEventListener(type,handler){for(let listener of this.listeners(type))if(listener[kListener]===handler&&!listener[kForOnEventAttribute]){this.removeListener(type,listener);break}}};module2.exports={CloseEvent,ErrorEvent,Event,EventTarget,MessageEvent};function callListener(listener,thisArg,event){typeof listener=="object"&&listener.handleEvent?listener.handleEvent.call(listener,event):listener.call(thisArg,event)}}});var require_extension2=__commonJS({"node_modules/socket.io-adapter/node_modules/ws/lib/extension.js"(exports2,module2){"use strict";var{tokenChars}=require_validation2();function push(dest,name,elem){dest[name]===void 0?dest[name]=[elem]:dest[name].push(elem)}function parse(header){let offers=Object.create(null),params=Object.create(null),mustUnescape=!1,isEscaping=!1,inQuotes=!1,extensionName,paramName,start=-1,code=-1,end=-1,i=0;for(;i<header.length;i++)if(code=header.charCodeAt(i),extensionName===void 0)if(end===-1&&tokenChars[code]===1)start===-1&&(start=i);else if(i!==0&&(code===32||code===9))end===-1&&start!==-1&&(end=i);else if(code===59||code===44){if(start===-1)throw new SyntaxError(`Unexpected character at index ${i}`);end===-1&&(end=i);let name=header.slice(start,end);code===44?(push(offers,name,params),params=Object.create(null)):extensionName=name,start=end=-1}else throw new SyntaxError(`Unexpected character at index ${i}`);else if(paramName===void 0)if(end===-1&&tokenChars[code]===1)start===-1&&(start=i);else if(code===32||code===9)end===-1&&start!==-1&&(end=i);else if(code===59||code===44){if(start===-1)throw new SyntaxError(`Unexpected character at index ${i}`);end===-1&&(end=i),push(params,header.slice(start,end),!0),code===44&&(push(offers,extensionName,params),params=Object.create(null),extensionName=void 0),start=end=-1}else if(code===61&&start!==-1&&end===-1)paramName=header.slice(start,i),start=end=-1;else throw new SyntaxError(`Unexpected character at index ${i}`);else if(isEscaping){if(tokenChars[code]!==1)throw new SyntaxError(`Unexpected character at index ${i}`);start===-1?start=i:mustUnescape||(mustUnescape=!0),isEscaping=!1}else if(inQuotes)if(tokenChars[code]===1)start===-1&&(start=i);else if(code===34&&start!==-1)inQuotes=!1,end=i;else if(code===92)isEscaping=!0;else throw new SyntaxError(`Unexpected character at index ${i}`);else if(code===34&&header.charCodeAt(i-1)===61)inQuotes=!0;else if(end===-1&&tokenChars[code]===1)start===-1&&(start=i);else if(start!==-1&&(code===32||code===9))end===-1&&(end=i);else if(code===59||code===44){if(start===-1)throw new SyntaxError(`Unexpected character at index ${i}`);end===-1&&(end=i);let value=header.slice(start,end);mustUnescape&&(value=value.replace(/\\/g,""),mustUnescape=!1),push(params,paramName,value),code===44&&(push(offers,extensionName,params),params=Object.create(null),extensionName=void 0),paramName=void 0,start=end=-1}else throw new SyntaxError(`Unexpected character at index ${i}`);if(start===-1||inQuotes||code===32||code===9)throw new SyntaxError("Unexpected end of input");end===-1&&(end=i);let token=header.slice(start,end);return extensionName===void 0?push(offers,token,params):(paramName===void 0?push(params,token,!0):mustUnescape?push(params,paramName,token.replace(/\\/g,"")):push(params,paramName,token),push(offers,extensionName,params)),offers}function format(extensions){return Object.keys(extensions).map(extension=>{let configurations=extensions[extension];return Array.isArray(configurations)||(configurations=[configurations]),configurations.map(params=>[extension].concat(Object.keys(params).map(k=>{let values=params[k];return Array.isArray(values)||(values=[values]),values.map(v=>v===!0?k:`${k}=${v}`).join("; ")})).join("; ")).join(", ")}).join(", ")}module2.exports={format,parse}}});var require_websocket4=__commonJS({"node_modules/socket.io-adapter/node_modules/ws/lib/websocket.js"(exports2,module2){"use strict";var EventEmitter=require("events"),https=require("https"),http=require("http"),net=require("net"),tls=require("tls"),{randomBytes,createHash}=require("crypto"),{Readable}=require("stream"),{URL:URL2}=require("url"),PerMessageDeflate=require_permessage_deflate2(),Receiver=require_receiver2(),Sender=require_sender2(),{BINARY_TYPES,EMPTY_BUFFER,GUID,kForOnEventAttribute,kListener,kStatusCode,kWebSocket,NOOP}=require_constants5(),{EventTarget:{addEventListener,removeEventListener}}=require_event_target2(),{format,parse}=require_extension2(),{toBuffer}=require_buffer_util2(),closeTimeout=30*1e3,kAborted=Symbol("kAborted"),protocolVersions=[8,13],readyStates=["CONNECTING","OPEN","CLOSING","CLOSED"],subprotocolRegex=/^[!#$%&'*+\-.0-9A-Z^_`|a-z~]+$/,WebSocket=class _WebSocket extends EventEmitter{constructor(address,protocols,options){super(),this._binaryType=BINARY_TYPES[0],this._closeCode=1006,this._closeFrameReceived=!1,this._closeFrameSent=!1,this._closeMessage=EMPTY_BUFFER,this._closeTimer=null,this._extensions={},this._paused=!1,this._protocol="",this._readyState=_WebSocket.CONNECTING,this._receiver=null,this._sender=null,this._socket=null,address!==null?(this._bufferedAmount=0,this._isServer=!1,this._redirects=0,protocols===void 0?protocols=[]:Array.isArray(protocols)||(typeof protocols=="object"&&protocols!==null?(options=protocols,protocols=[]):protocols=[protocols]),initAsClient(this,address,protocols,options)):this._isServer=!0}get binaryType(){return this._binaryType}set binaryType(type){BINARY_TYPES.includes(type)&&(this._binaryType=type,this._receiver&&(this._receiver._binaryType=type))}get bufferedAmount(){return this._socket?this._socket._writableState.length+this._sender._bufferedBytes:this._bufferedAmount}get extensions(){return Object.keys(this._extensions).join()}get isPaused(){return this._paused}get onclose(){return null}get onerror(){return null}get onopen(){return null}get onmessage(){return null}get protocol(){return this._protocol}get readyState(){return this._readyState}get url(){return this._url}setSocket(socket,head,options){let receiver=new Receiver({binaryType:this.binaryType,extensions:this._extensions,isServer:this._isServer,maxPayload:options.maxPayload,skipUTF8Validation:options.skipUTF8Validation});this._sender=new Sender(socket,this._extensions,options.generateMask),this._receiver=receiver,this._socket=socket,receiver[kWebSocket]=this,socket[kWebSocket]=this,receiver.on("conclude",receiverOnConclude),receiver.on("drain",receiverOnDrain),receiver.on("error",receiverOnError),receiver.on("message",receiverOnMessage),receiver.on("ping",receiverOnPing),receiver.on("pong",receiverOnPong),socket.setTimeout(0),socket.setNoDelay(),head.length>0&&socket.unshift(head),socket.on("close",socketOnClose),socket.on("data",socketOnData),socket.on("end",socketOnEnd),socket.on("error",socketOnError),this._readyState=_WebSocket.OPEN,this.emit("open")}emitClose(){if(!this._socket){this._readyState=_WebSocket.CLOSED,this.emit("close",this._closeCode,this._closeMessage);return}this._extensions[PerMessageDeflate.extensionName]&&this._extensions[PerMessageDeflate.extensionName].cleanup(),this._receiver.removeAllListeners(),this._readyState=_WebSocket.CLOSED,this.emit("close",this._closeCode,this._closeMessage)}close(code,data){if(this.readyState!==_WebSocket.CLOSED){if(this.readyState===_WebSocket.CONNECTING)return abortHandshake(this,this._req,"WebSocket was closed before the connection was established");if(this.readyState===_WebSocket.CLOSING){this._closeFrameSent&&(this._closeFrameReceived||this._receiver._writableState.errorEmitted)&&this._socket.end();return}this._readyState=_WebSocket.CLOSING,this._sender.close(code,data,!this._isServer,err=>{err||(this._closeFrameSent=!0,(this._closeFrameReceived||this._receiver._writableState.errorEmitted)&&this._socket.end())}),this._closeTimer=setTimeout(this._socket.destroy.bind(this._socket),closeTimeout)}}pause(){this.readyState===_WebSocket.CONNECTING||this.readyState===_WebSocket.CLOSED||(this._paused=!0,this._socket.pause())}ping(data,mask,cb){if(this.readyState===_WebSocket.CONNECTING)throw new Error("WebSocket is not open: readyState 0 (CONNECTING)");if(typeof data=="function"?(cb=data,data=mask=void 0):typeof mask=="function"&&(cb=mask,mask=void 0),typeof data=="number"&&(data=data.toString()),this.readyState!==_WebSocket.OPEN){sendAfterClose(this,data,cb);return}mask===void 0&&(mask=!this._isServer),this._sender.ping(data||EMPTY_BUFFER,mask,cb)}pong(data,mask,cb){if(this.readyState===_WebSocket.CONNECTING)throw new Error("WebSocket is not open: readyState 0 (CONNECTING)");if(typeof data=="function"?(cb=data,data=mask=void 0):typeof mask=="function"&&(cb=mask,mask=void 0),typeof data=="number"&&(data=data.toString()),this.readyState!==_WebSocket.OPEN){sendAfterClose(this,data,cb);return}mask===void 0&&(mask=!this._isServer),this._sender.pong(data||EMPTY_BUFFER,mask,cb)}resume(){this.readyState===_WebSocket.CONNECTING||this.readyState===_WebSocket.CLOSED||(this._paused=!1,this._receiver._writableState.needDrain||this._socket.resume())}send(data,options,cb){if(this.readyState===_WebSocket.CONNECTING)throw new Error("WebSocket is not open: readyState 0 (CONNECTING)");if(typeof options=="function"&&(cb=options,options={}),typeof data=="number"&&(data=data.toString()),this.readyState!==_WebSocket.OPEN){sendAfterClose(this,data,cb);return}let opts={binary:typeof data!="string",mask:!this._isServer,compress:!0,fin:!0,...options};this._extensions[PerMessageDeflate.extensionName]||(opts.compress=!1),this._sender.send(data||EMPTY_BUFFER,opts,cb)}terminate(){if(this.readyState!==_WebSocket.CLOSED){if(this.readyState===_WebSocket.CONNECTING)return abortHandshake(this,this._req,"WebSocket was closed before the connection was established");this._socket&&(this._readyState=_WebSocket.CLOSING,this._socket.destroy())}}};Object.defineProperty(WebSocket,"CONNECTING",{enumerable:!0,value:readyStates.indexOf("CONNECTING")});Object.defineProperty(WebSocket.prototype,"CONNECTING",{enumerable:!0,value:readyStates.indexOf("CONNECTING")});Object.defineProperty(WebSocket,"OPEN",{enumerable:!0,value:readyStates.indexOf("OPEN")});Object.defineProperty(WebSocket.prototype,"OPEN",{enumerable:!0,value:readyStates.indexOf("OPEN")});Object.defineProperty(WebSocket,"CLOSING",{enumerable:!0,value:readyStates.indexOf("CLOSING")});Object.defineProperty(WebSocket.prototype,"CLOSING",{enumerable:!0,value:readyStates.indexOf("CLOSING")});Object.defineProperty(WebSocket,"CLOSED",{enumerable:!0,value:readyStates.indexOf("CLOSED")});Object.defineProperty(WebSocket.prototype,"CLOSED",{enumerable:!0,value:readyStates.indexOf("CLOSED")});["binaryType","bufferedAmount","extensions","isPaused","protocol","readyState","url"].forEach(property=>{Object.defineProperty(WebSocket.prototype,property,{enumerable:!0})});["open","error","close","message"].forEach(method=>{Object.defineProperty(WebSocket.prototype,`on${method}`,{enumerable:!0,get(){for(let listener of this.listeners(method))if(listener[kForOnEventAttribute])return listener[kListener];return null},set(handler){for(let listener of this.listeners(method))if(listener[kForOnEventAttribute]){this.removeListener(method,listener);break}typeof handler=="function"&&this.addEventListener(method,handler,{[kForOnEventAttribute]:!0})}})});WebSocket.prototype.addEventListener=addEventListener;WebSocket.prototype.removeEventListener=removeEventListener;module2.exports=WebSocket;function initAsClient(websocket,address,protocols,options){let opts={protocolVersion:protocolVersions[1],maxPayload:104857600,skipUTF8Validation:!1,perMessageDeflate:!0,followRedirects:!1,maxRedirects:10,...options,createConnection:void 0,socketPath:void 0,hostname:void 0,protocol:void 0,timeout:void 0,method:"GET",host:void 0,path:void 0,port:void 0};if(!protocolVersions.includes(opts.protocolVersion))throw new RangeError(`Unsupported protocol version: ${opts.protocolVersion} (supported versions: ${protocolVersions.join(", ")})`);let parsedUrl;if(address instanceof URL2)parsedUrl=address,websocket._url=address.href;else{try{parsedUrl=new URL2(address)}catch{throw new SyntaxError(`Invalid URL: ${address}`)}websocket._url=address}let isSecure=parsedUrl.protocol==="wss:",isIpcUrl=parsedUrl.protocol==="ws+unix:",invalidUrlMessage;if(parsedUrl.protocol!=="ws:"&&!isSecure&&!isIpcUrl?invalidUrlMessage=`The URL's protocol must be one of "ws:", "wss:", or "ws+unix:"`:isIpcUrl&&!parsedUrl.pathname?invalidUrlMessage="The URL's pathname is empty":parsedUrl.hash&&(invalidUrlMessage="The URL contains a fragment identifier"),invalidUrlMessage){let err=new SyntaxError(invalidUrlMessage);if(websocket._redirects===0)throw err;emitErrorAndClose(websocket,err);return}let defaultPort=isSecure?443:80,key=randomBytes(16).toString("base64"),request=isSecure?https.request:http.request,protocolSet=new Set,perMessageDeflate;if(opts.createConnection=isSecure?tlsConnect:netConnect,opts.defaultPort=opts.defaultPort||defaultPort,opts.port=parsedUrl.port||defaultPort,opts.host=parsedUrl.hostname.startsWith("[")?parsedUrl.hostname.slice(1,-1):parsedUrl.hostname,opts.headers={...opts.headers,"Sec-WebSocket-Version":opts.protocolVersion,"Sec-WebSocket-Key":key,Connection:"Upgrade",Upgrade:"websocket"},opts.path=parsedUrl.pathname+parsedUrl.search,opts.timeout=opts.handshakeTimeout,opts.perMessageDeflate&&(perMessageDeflate=new PerMessageDeflate(opts.perMessageDeflate!==!0?opts.perMessageDeflate:{},!1,opts.maxPayload),opts.headers["Sec-WebSocket-Extensions"]=format({[PerMessageDeflate.extensionName]:perMessageDeflate.offer()})),protocols.length){for(let protocol of protocols){if(typeof protocol!="string"||!subprotocolRegex.test(protocol)||protocolSet.has(protocol))throw new SyntaxError("An invalid or duplicated subprotocol was specified");protocolSet.add(protocol)}opts.headers["Sec-WebSocket-Protocol"]=protocols.join(",")}if(opts.origin&&(opts.protocolVersion<13?opts.headers["Sec-WebSocket-Origin"]=opts.origin:opts.headers.Origin=opts.origin),(parsedUrl.username||parsedUrl.password)&&(opts.auth=`${parsedUrl.username}:${parsedUrl.password}`),isIpcUrl){let parts=opts.path.split(":");opts.socketPath=parts[0],opts.path=parts[1]}let req;if(opts.followRedirects){if(websocket._redirects===0){websocket._originalIpc=isIpcUrl,websocket._originalSecure=isSecure,websocket._originalHostOrSocketPath=isIpcUrl?opts.socketPath:parsedUrl.host;let headers=options&&options.headers;if(options={...options,headers:{}},headers)for(let[key2,value]of Object.entries(headers))options.headers[key2.toLowerCase()]=value}else if(websocket.listenerCount("redirect")===0){let isSameHost=isIpcUrl?websocket._originalIpc?opts.socketPath===websocket._originalHostOrSocketPath:!1:websocket._originalIpc?!1:parsedUrl.host===websocket._originalHostOrSocketPath;(!isSameHost||websocket._originalSecure&&!isSecure)&&(delete opts.headers.authorization,delete opts.headers.cookie,isSameHost||delete opts.headers.host,opts.auth=void 0)}opts.auth&&!options.headers.authorization&&(options.headers.authorization="Basic "+Buffer.from(opts.auth).toString("base64")),req=websocket._req=request(opts),websocket._redirects&&websocket.emit("redirect",websocket.url,req)}else req=websocket._req=request(opts);opts.timeout&&req.on("timeout",()=>{abortHandshake(websocket,req,"Opening handshake has timed out")}),req.on("error",err=>{req===null||req[kAborted]||(req=websocket._req=null,emitErrorAndClose(websocket,err))}),req.on("response",res=>{let location=res.headers.location,statusCode=res.statusCode;if(location&&opts.followRedirects&&statusCode>=300&&statusCode<400){if(++websocket._redirects>opts.maxRedirects){abortHandshake(websocket,req,"Maximum redirects exceeded");return}req.abort();let addr;try{addr=new URL2(location,address)}catch{let err=new SyntaxError(`Invalid URL: ${location}`);emitErrorAndClose(websocket,err);return}initAsClient(websocket,addr,protocols,options)}else websocket.emit("unexpected-response",req,res)||abortHandshake(websocket,req,`Unexpected server response: ${res.statusCode}`)}),req.on("upgrade",(res,socket,head)=>{if(websocket.emit("upgrade",res),websocket.readyState!==WebSocket.CONNECTING)return;if(req=websocket._req=null,res.headers.upgrade.toLowerCase()!=="websocket"){abortHandshake(websocket,socket,"Invalid Upgrade header");return}let digest=createHash("sha1").update(key+GUID).digest("base64");if(res.headers["sec-websocket-accept"]!==digest){abortHandshake(websocket,socket,"Invalid Sec-WebSocket-Accept header");return}let serverProt=res.headers["sec-websocket-protocol"],protError;if(serverProt!==void 0?protocolSet.size?protocolSet.has(serverProt)||(protError="Server sent an invalid subprotocol"):protError="Server sent a subprotocol but none was requested":protocolSet.size&&(protError="Server sent no subprotocol"),protError){abortHandshake(websocket,socket,protError);return}serverProt&&(websocket._protocol=serverProt);let secWebSocketExtensions=res.headers["sec-websocket-extensions"];if(secWebSocketExtensions!==void 0){if(!perMessageDeflate){abortHandshake(websocket,socket,"Server sent a Sec-WebSocket-Extensions header but no extension was requested");return}let extensions;try{extensions=parse(secWebSocketExtensions)}catch{abortHandshake(websocket,socket,"Invalid Sec-WebSocket-Extensions header");return}let extensionNames=Object.keys(extensions);if(extensionNames.length!==1||extensionNames[0]!==PerMessageDeflate.extensionName){abortHandshake(websocket,socket,"Server indicated an extension that was not requested");return}try{perMessageDeflate.accept(extensions[PerMessageDeflate.extensionName])}catch{abortHandshake(websocket,socket,"Invalid Sec-WebSocket-Extensions header");return}websocket._extensions[PerMessageDeflate.extensionName]=perMessageDeflate}websocket.setSocket(socket,head,{generateMask:opts.generateMask,maxPayload:opts.maxPayload,skipUTF8Validation:opts.skipUTF8Validation})}),req.end()}function emitErrorAndClose(websocket,err){websocket._readyState=WebSocket.CLOSING,websocket.emit("error",err),websocket.emitClose()}function netConnect(options){return options.path=options.socketPath,net.connect(options)}function tlsConnect(options){return options.path=void 0,!options.servername&&options.servername!==""&&(options.servername=net.isIP(options.host)?"":options.host),tls.connect(options)}function abortHandshake(websocket,stream,message){websocket._readyState=WebSocket.CLOSING;let err=new Error(message);Error.captureStackTrace(err,abortHandshake),stream.setHeader?(stream[kAborted]=!0,stream.abort(),stream.socket&&!stream.socket.destroyed&&stream.socket.destroy(),process.nextTick(emitErrorAndClose,websocket,err)):(stream.destroy(err),stream.once("error",websocket.emit.bind(websocket,"error")),stream.once("close",websocket.emitClose.bind(websocket)))}function sendAfterClose(websocket,data,cb){if(data){let length=toBuffer(data).length;websocket._socket?websocket._sender._bufferedBytes+=length:websocket._bufferedAmount+=length}if(cb){let err=new Error(`WebSocket is not open: readyState ${websocket.readyState} (${readyStates[websocket.readyState]})`);cb(err)}}function receiverOnConclude(code,reason){let websocket=this[kWebSocket];websocket._closeFrameReceived=!0,websocket._closeMessage=reason,websocket._closeCode=code,websocket._socket[kWebSocket]!==void 0&&(websocket._socket.removeListener("data",socketOnData),process.nextTick(resume,websocket._socket),code===1005?websocket.close():websocket.close(code,reason))}function receiverOnDrain(){let websocket=this[kWebSocket];websocket.isPaused||websocket._socket.resume()}function receiverOnError(err){let websocket=this[kWebSocket];websocket._socket[kWebSocket]!==void 0&&(websocket._socket.removeListener("data",socketOnData),process.nextTick(resume,websocket._socket),websocket.close(err[kStatusCode])),websocket.emit("error",err)}function receiverOnFinish(){this[kWebSocket].emitClose()}function receiverOnMessage(data,isBinary){this[kWebSocket].emit("message",data,isBinary)}function receiverOnPing(data){let websocket=this[kWebSocket];websocket.pong(data,!websocket._isServer,NOOP),websocket.emit("ping",data)}function receiverOnPong(data){this[kWebSocket].emit("pong",data)}function resume(stream){stream.resume()}function socketOnClose(){let websocket=this[kWebSocket];this.removeListener("close",socketOnClose),this.removeListener("data",socketOnData),this.removeListener("end",socketOnEnd),websocket._readyState=WebSocket.CLOSING;let chunk;!this._readableState.endEmitted&&!websocket._closeFrameReceived&&!websocket._receiver._writableState.errorEmitted&&(chunk=websocket._socket.read())!==null&&websocket._receiver.write(chunk),websocket._receiver.end(),this[kWebSocket]=void 0,clearTimeout(websocket._closeTimer),websocket._receiver._writableState.finished||websocket._receiver._writableState.errorEmitted?websocket.emitClose():(websocket._receiver.on("error",receiverOnFinish),websocket._receiver.on("finish",receiverOnFinish))}function socketOnData(chunk){this[kWebSocket]._receiver.write(chunk)||this.pause()}function socketOnEnd(){let websocket=this[kWebSocket];websocket._readyState=WebSocket.CLOSING,websocket._receiver.end(),this.end()}function socketOnError(){let websocket=this[kWebSocket];this.removeListener("error",socketOnError),this.on("error",NOOP),websocket&&(websocket._readyState=WebSocket.CLOSING,this.destroy())}}});var require_stream2=__commonJS({"node_modules/socket.io-adapter/node_modules/ws/lib/stream.js"(exports2,module2){"use strict";var{Duplex}=require("stream");function emitClose(stream){stream.emit("close")}function duplexOnEnd(){!this.destroyed&&this._writableState.finished&&this.destroy()}function duplexOnError(err){this.removeListener("error",duplexOnError),this.destroy(),this.listenerCount("error")===0&&this.emit("error",err)}function createWebSocketStream(ws,options){let terminateOnDestroy=!0,duplex=new Duplex({...options,autoDestroy:!1,emitClose:!1,objectMode:!1,writableObjectMode:!1});return ws.on("message",function(msg,isBinary){let data=!isBinary&&duplex._readableState.objectMode?msg.toString():msg;duplex.push(data)||ws.pause()}),ws.once("error",function(err){duplex.destroyed||(terminateOnDestroy=!1,duplex.destroy(err))}),ws.once("close",function(){duplex.destroyed||duplex.push(null)}),duplex._destroy=function(err,callback){if(ws.readyState===ws.CLOSED){callback(err),process.nextTick(emitClose,duplex);return}let called=!1;ws.once("error",function(err2){called=!0,callback(err2)}),ws.once("close",function(){called||callback(err),process.nextTick(emitClose,duplex)}),terminateOnDestroy&&ws.terminate()},duplex._final=function(callback){if(ws.readyState===ws.CONNECTING){ws.once("open",function(){duplex._final(callback)});return}ws._socket!==null&&(ws._socket._writableState.finished?(callback(),duplex._readableState.endEmitted&&duplex.destroy()):(ws._socket.once("finish",function(){callback()}),ws.close()))},duplex._read=function(){ws.isPaused&&ws.resume()},duplex._write=function(chunk,encoding,callback){if(ws.readyState===ws.CONNECTING){ws.once("open",function(){duplex._write(chunk,encoding,callback)});return}ws.send(chunk,callback)},duplex.on("end",duplexOnEnd),duplex.on("error",duplexOnError),duplex}module2.exports=createWebSocketStream}});var require_subprotocol2=__commonJS({"node_modules/socket.io-adapter/node_modules/ws/lib/subprotocol.js"(exports2,module2){"use strict";var{tokenChars}=require_validation2();function parse(header){let protocols=new Set,start=-1,end=-1,i=0;for(i;i<header.length;i++){let code=header.charCodeAt(i);if(end===-1&&tokenChars[code]===1)start===-1&&(start=i);else if(i!==0&&(code===32||code===9))end===-1&&start!==-1&&(end=i);else if(code===44){if(start===-1)throw new SyntaxError(`Unexpected character at index ${i}`);end===-1&&(end=i);let protocol2=header.slice(start,end);if(protocols.has(protocol2))throw new SyntaxError(`The "${protocol2}" subprotocol is duplicated`);protocols.add(protocol2),start=end=-1}else throw new SyntaxError(`Unexpected character at index ${i}`)}if(start===-1||end!==-1)throw new SyntaxError("Unexpected end of input");let protocol=header.slice(start,i);if(protocols.has(protocol))throw new SyntaxError(`The "${protocol}" subprotocol is duplicated`);return protocols.add(protocol),protocols}module2.exports={parse}}});var require_websocket_server2=__commonJS({"node_modules/socket.io-adapter/node_modules/ws/lib/websocket-server.js"(exports2,module2){"use strict";var EventEmitter=require("events"),http=require("http"),https=require("https"),net=require("net"),tls=require("tls"),{createHash}=require("crypto"),extension=require_extension2(),PerMessageDeflate=require_permessage_deflate2(),subprotocol=require_subprotocol2(),WebSocket=require_websocket4(),{GUID,kWebSocket}=require_constants5(),keyRegex=/^[+/0-9A-Za-z]{22}==$/,RUNNING=0,CLOSING=1,CLOSED=2,WebSocketServer=class extends EventEmitter{constructor(options,callback){if(super(),options={maxPayload:100*1024*1024,skipUTF8Validation:!1,perMessageDeflate:!1,handleProtocols:null,clientTracking:!0,verifyClient:null,noServer:!1,backlog:null,server:null,host:null,path:null,port:null,WebSocket,...options},options.port==null&&!options.server&&!options.noServer||options.port!=null&&(options.server||options.noServer)||options.server&&options.noServer)throw new TypeError('One and only one of the "port", "server", or "noServer" options must be specified');if(options.port!=null?(this._server=http.createServer((req,res)=>{let body=http.STATUS_CODES[426];res.writeHead(426,{"Content-Length":body.length,"Content-Type":"text/plain"}),res.end(body)}),this._server.listen(options.port,options.host,options.backlog,callback)):options.server&&(this._server=options.server),this._server){let emitConnection=this.emit.bind(this,"connection");this._removeListeners=addListeners(this._server,{listening:this.emit.bind(this,"listening"),error:this.emit.bind(this,"error"),upgrade:(req,socket,head)=>{this.handleUpgrade(req,socket,head,emitConnection)}})}options.perMessageDeflate===!0&&(options.perMessageDeflate={}),options.clientTracking&&(this.clients=new Set,this._shouldEmitClose=!1),this.options=options,this._state=RUNNING}address(){if(this.options.noServer)throw new Error('The server is operating in "noServer" mode');return this._server?this._server.address():null}close(cb){if(this._state===CLOSED){cb&&this.once("close",()=>{cb(new Error("The server is not running"))}),process.nextTick(emitClose,this);return}if(cb&&this.once("close",cb),this._state!==CLOSING)if(this._state=CLOSING,this.options.noServer||this.options.server)this._server&&(this._removeListeners(),this._removeListeners=this._server=null),this.clients?this.clients.size?this._shouldEmitClose=!0:process.nextTick(emitClose,this):process.nextTick(emitClose,this);else{let server=this._server;this._removeListeners(),this._removeListeners=this._server=null,server.close(()=>{emitClose(this)})}}shouldHandle(req){if(this.options.path){let index=req.url.indexOf("?");if((index!==-1?req.url.slice(0,index):req.url)!==this.options.path)return!1}return!0}handleUpgrade(req,socket,head,cb){socket.on("error",socketOnError);let key=req.headers["sec-websocket-key"],version=+req.headers["sec-websocket-version"];if(req.method!=="GET"){abortHandshakeOrEmitwsClientError(this,req,socket,405,"Invalid HTTP method");return}if(req.headers.upgrade.toLowerCase()!=="websocket"){abortHandshakeOrEmitwsClientError(this,req,socket,400,"Invalid Upgrade header");return}if(!key||!keyRegex.test(key)){abortHandshakeOrEmitwsClientError(this,req,socket,400,"Missing or invalid Sec-WebSocket-Key header");return}if(version!==8&&version!==13){abortHandshakeOrEmitwsClientError(this,req,socket,400,"Missing or invalid Sec-WebSocket-Version header");return}if(!this.shouldHandle(req)){abortHandshake(socket,400);return}let secWebSocketProtocol=req.headers["sec-websocket-protocol"],protocols=new Set;if(secWebSocketProtocol!==void 0)try{protocols=subprotocol.parse(secWebSocketProtocol)}catch{abortHandshakeOrEmitwsClientError(this,req,socket,400,"Invalid Sec-WebSocket-Protocol header");return}let secWebSocketExtensions=req.headers["sec-websocket-extensions"],extensions={};if(this.options.perMessageDeflate&&secWebSocketExtensions!==void 0){let perMessageDeflate=new PerMessageDeflate(this.options.perMessageDeflate,!0,this.options.maxPayload);try{let offers=extension.parse(secWebSocketExtensions);offers[PerMessageDeflate.extensionName]&&(perMessageDeflate.accept(offers[PerMessageDeflate.extensionName]),extensions[PerMessageDeflate.extensionName]=perMessageDeflate)}catch{abortHandshakeOrEmitwsClientError(this,req,socket,400,"Invalid or unacceptable Sec-WebSocket-Extensions header");return}}if(this.options.verifyClient){let info={origin:req.headers[`${version===8?"sec-websocket-origin":"origin"}`],secure:!!(req.socket.authorized||req.socket.encrypted),req};if(this.options.verifyClient.length===2){this.options.verifyClient(info,(verified,code,message,headers)=>{if(!verified)return abortHandshake(socket,code||401,message,headers);this.completeUpgrade(extensions,key,protocols,req,socket,head,cb)});return}if(!this.options.verifyClient(info))return abortHandshake(socket,401)}this.completeUpgrade(extensions,key,protocols,req,socket,head,cb)}completeUpgrade(extensions,key,protocols,req,socket,head,cb){if(!socket.readable||!socket.writable)return socket.destroy();if(socket[kWebSocket])throw new Error("server.handleUpgrade() was called more than once with the same socket, possibly due to a misconfiguration");if(this._state>RUNNING)return abortHandshake(socket,503);let headers=["HTTP/1.1 101 Switching Protocols","Upgrade: websocket","Connection: Upgrade",`Sec-WebSocket-Accept: ${createHash("sha1").update(key+GUID).digest("base64")}`],ws=new this.options.WebSocket(null);if(protocols.size){let protocol=this.options.handleProtocols?this.options.handleProtocols(protocols,req):protocols.values().next().value;protocol&&(headers.push(`Sec-WebSocket-Protocol: ${protocol}`),ws._protocol=protocol)}if(extensions[PerMessageDeflate.extensionName]){let params=extensions[PerMessageDeflate.extensionName].params,value=extension.format({[PerMessageDeflate.extensionName]:[params]});headers.push(`Sec-WebSocket-Extensions: ${value}`),ws._extensions=extensions}this.emit("headers",headers,req),socket.write(headers.concat(`\r
|
|
270
|
+
`).map(str=>str.trim()).join(" ")};formatters.O=function(v){return this.inspectOpts.colors=this.useColors,util.inspect(v,this.inspectOpts)}}});var require_src8=__commonJS({"node_modules/socket.io/node_modules/debug/src/index.js"(exports2,module2){typeof process>"u"||process.type==="renderer"||process.browser===!0||process.__nwjs?module2.exports=require_browser8():module2.exports=require_node8()}});var require_client=__commonJS({"node_modules/socket.io/dist/client.js"(exports2){"use strict";var __importDefault=exports2&&exports2.__importDefault||function(mod){return mod&&mod.__esModule?mod:{default:mod}};Object.defineProperty(exports2,"__esModule",{value:!0});exports2.Client=void 0;var socket_io_parser_1=require_cjs3(),debug_1=__importDefault(require_src8()),debug=(0,debug_1.default)("socket.io:client"),Client=class{constructor(server,conn){this.sockets=new Map,this.nsps=new Map,this.server=server,this.conn=conn,this.encoder=server.encoder,this.decoder=new server._parser.Decoder,this.id=conn.id,this.setup()}get request(){return this.conn.request}setup(){this.onclose=this.onclose.bind(this),this.ondata=this.ondata.bind(this),this.onerror=this.onerror.bind(this),this.ondecoded=this.ondecoded.bind(this),this.decoder.on("decoded",this.ondecoded),this.conn.on("data",this.ondata),this.conn.on("error",this.onerror),this.conn.on("close",this.onclose),this.connectTimeout=setTimeout(()=>{this.nsps.size===0?(debug("no namespace joined yet, close the client"),this.close()):debug("the client has already joined a namespace, nothing to do")},this.server._connectTimeout)}connect(name,auth={}){if(this.server._nsps.has(name))return debug("connecting to namespace %s",name),this.doConnect(name,auth);this.server._checkNamespace(name,auth,dynamicNspName=>{dynamicNspName?this.doConnect(name,auth):(debug("creation of namespace %s was denied",name),this._packet({type:socket_io_parser_1.PacketType.CONNECT_ERROR,nsp:name,data:{message:"Invalid namespace"}}))})}doConnect(name,auth){let nsp=this.server.of(name);nsp._add(this,auth,socket=>{this.sockets.set(socket.id,socket),this.nsps.set(nsp.name,socket),this.connectTimeout&&(clearTimeout(this.connectTimeout),this.connectTimeout=void 0)})}_disconnect(){for(let socket of this.sockets.values())socket.disconnect();this.sockets.clear(),this.close()}_remove(socket){if(this.sockets.has(socket.id)){let nsp=this.sockets.get(socket.id).nsp.name;this.sockets.delete(socket.id),this.nsps.delete(nsp)}else debug("ignoring remove for %s",socket.id)}close(){this.conn.readyState==="open"&&(debug("forcing transport close"),this.conn.close(),this.onclose("forced server close"))}_packet(packet,opts={}){if(this.conn.readyState!=="open"){debug("ignoring packet write %j",packet);return}let encodedPackets=opts.preEncoded?packet:this.encoder.encode(packet);this.writeToEngine(encodedPackets,opts)}writeToEngine(encodedPackets,opts){if(opts.volatile&&!this.conn.transport.writable){debug("volatile packet is discarded since the transport is not currently writable");return}let packets=Array.isArray(encodedPackets)?encodedPackets:[encodedPackets];for(let encodedPacket of packets)this.conn.write(encodedPacket,opts)}ondata(data){try{this.decoder.add(data)}catch(e){debug("invalid packet format"),this.onerror(e)}}ondecoded(packet){let{namespace,authPayload}=this._parseNamespace(packet),socket=this.nsps.get(namespace);!socket&&packet.type===socket_io_parser_1.PacketType.CONNECT?this.connect(namespace,authPayload):socket&&packet.type!==socket_io_parser_1.PacketType.CONNECT&&packet.type!==socket_io_parser_1.PacketType.CONNECT_ERROR?process.nextTick(function(){socket._onpacket(packet)}):(debug("invalid state (packet type: %s)",packet.type),this.close())}_parseNamespace(packet){if(this.conn.protocol!==3)return{namespace:packet.nsp,authPayload:packet.data};let url=new URL(packet.nsp,"https://socket.io");return{namespace:url.pathname,authPayload:Object.fromEntries(url.searchParams.entries())}}onerror(err){for(let socket of this.sockets.values())socket._onerror(err);this.conn.close()}onclose(reason,description){debug("client close with reason %s",reason),this.destroy();for(let socket of this.sockets.values())socket._onclose(reason,description);this.sockets.clear(),this.decoder.destroy()}destroy(){this.conn.removeListener("data",this.ondata),this.conn.removeListener("error",this.onerror),this.conn.removeListener("close",this.onclose),this.decoder.removeListener("decoded",this.ondecoded),this.connectTimeout&&(clearTimeout(this.connectTimeout),this.connectTimeout=void 0)}};exports2.Client=Client}});var require_typed_events=__commonJS({"node_modules/socket.io/dist/typed-events.js"(exports2){"use strict";Object.defineProperty(exports2,"__esModule",{value:!0});exports2.StrictEventEmitter=void 0;var events_1=require("events"),StrictEventEmitter=class extends events_1.EventEmitter{on(ev,listener){return super.on(ev,listener)}once(ev,listener){return super.once(ev,listener)}emit(ev,...args){return super.emit(ev,...args)}emitReserved(ev,...args){return super.emit(ev,...args)}emitUntyped(ev,...args){return super.emit(ev,...args)}listeners(event){return super.listeners(event)}};exports2.StrictEventEmitter=StrictEventEmitter}});var require_socket_types=__commonJS({"node_modules/socket.io/dist/socket-types.js"(exports2){"use strict";Object.defineProperty(exports2,"__esModule",{value:!0});exports2.RESERVED_EVENTS=void 0;exports2.RESERVED_EVENTS=new Set(["connect","connect_error","disconnect","disconnecting","newListener","removeListener"])}});var require_broadcast_operator=__commonJS({"node_modules/socket.io/dist/broadcast-operator.js"(exports2){"use strict";Object.defineProperty(exports2,"__esModule",{value:!0});exports2.RemoteSocket=exports2.BroadcastOperator=void 0;var socket_types_1=require_socket_types(),socket_io_parser_1=require_cjs3(),BroadcastOperator=class _BroadcastOperator{constructor(adapter,rooms=new Set,exceptRooms=new Set,flags={}){this.adapter=adapter,this.rooms=rooms,this.exceptRooms=exceptRooms,this.flags=flags}to(room){let rooms=new Set(this.rooms);return Array.isArray(room)?room.forEach(r=>rooms.add(r)):rooms.add(room),new _BroadcastOperator(this.adapter,rooms,this.exceptRooms,this.flags)}in(room){return this.to(room)}except(room){let exceptRooms=new Set(this.exceptRooms);return Array.isArray(room)?room.forEach(r=>exceptRooms.add(r)):exceptRooms.add(room),new _BroadcastOperator(this.adapter,this.rooms,exceptRooms,this.flags)}compress(compress){let flags=Object.assign({},this.flags,{compress});return new _BroadcastOperator(this.adapter,this.rooms,this.exceptRooms,flags)}get volatile(){let flags=Object.assign({},this.flags,{volatile:!0});return new _BroadcastOperator(this.adapter,this.rooms,this.exceptRooms,flags)}get local(){let flags=Object.assign({},this.flags,{local:!0});return new _BroadcastOperator(this.adapter,this.rooms,this.exceptRooms,flags)}timeout(timeout){let flags=Object.assign({},this.flags,{timeout});return new _BroadcastOperator(this.adapter,this.rooms,this.exceptRooms,flags)}emit(ev,...args){if(socket_types_1.RESERVED_EVENTS.has(ev))throw new Error(`"${String(ev)}" is a reserved event name`);let data=[ev,...args],packet={type:socket_io_parser_1.PacketType.EVENT,data};if(!(typeof data[data.length-1]=="function"))return this.adapter.broadcast(packet,{rooms:this.rooms,except:this.exceptRooms,flags:this.flags}),!0;let ack=data.pop(),timedOut=!1,responses=[],timer=setTimeout(()=>{timedOut=!0,ack.apply(this,[new Error("operation has timed out"),this.flags.expectSingleResponse?null:responses])},this.flags.timeout),expectedServerCount=-1,actualServerCount=0,expectedClientCount=0,checkCompleteness=()=>{!timedOut&&expectedServerCount===actualServerCount&&responses.length===expectedClientCount&&(clearTimeout(timer),ack.apply(this,[null,this.flags.expectSingleResponse?responses[0]:responses]))};return this.adapter.broadcastWithAck(packet,{rooms:this.rooms,except:this.exceptRooms,flags:this.flags},clientCount=>{expectedClientCount+=clientCount,actualServerCount++,checkCompleteness()},clientResponse=>{responses.push(clientResponse),checkCompleteness()}),this.adapter.serverCount().then(serverCount=>{expectedServerCount=serverCount,checkCompleteness()}),!0}emitWithAck(ev,...args){return new Promise((resolve,reject)=>{args.push((err,responses)=>err?(err.responses=responses,reject(err)):resolve(responses)),this.emit(ev,...args)})}allSockets(){if(!this.adapter)throw new Error("No adapter for this namespace, are you trying to get the list of clients of a dynamic namespace?");return this.adapter.sockets(this.rooms)}fetchSockets(){return this.adapter.fetchSockets({rooms:this.rooms,except:this.exceptRooms,flags:this.flags}).then(sockets=>sockets.map(socket=>socket.server?socket:new RemoteSocket(this.adapter,socket)))}socketsJoin(room){this.adapter.addSockets({rooms:this.rooms,except:this.exceptRooms,flags:this.flags},Array.isArray(room)?room:[room])}socketsLeave(room){this.adapter.delSockets({rooms:this.rooms,except:this.exceptRooms,flags:this.flags},Array.isArray(room)?room:[room])}disconnectSockets(close=!1){this.adapter.disconnectSockets({rooms:this.rooms,except:this.exceptRooms,flags:this.flags},close)}};exports2.BroadcastOperator=BroadcastOperator;var RemoteSocket=class{constructor(adapter,details){this.id=details.id,this.handshake=details.handshake,this.rooms=new Set(details.rooms),this.data=details.data,this.operator=new BroadcastOperator(adapter,new Set([this.id]),new Set,{expectSingleResponse:!0})}timeout(timeout){return this.operator.timeout(timeout)}emit(ev,...args){return this.operator.emit(ev,...args)}join(room){return this.operator.socketsJoin(room)}leave(room){return this.operator.socketsLeave(room)}disconnect(close=!1){return this.operator.disconnectSockets(close),this}};exports2.RemoteSocket=RemoteSocket}});var require_socket2=__commonJS({"node_modules/socket.io/dist/socket.js"(exports2){"use strict";var __importDefault=exports2&&exports2.__importDefault||function(mod){return mod&&mod.__esModule?mod:{default:mod}};Object.defineProperty(exports2,"__esModule",{value:!0});exports2.Socket=void 0;var socket_io_parser_1=require_cjs3(),debug_1=__importDefault(require_src8()),typed_events_1=require_typed_events(),base64id_1=__importDefault(require_base64id()),broadcast_operator_1=require_broadcast_operator(),socket_types_1=require_socket_types(),debug=(0,debug_1.default)("socket.io:socket"),RECOVERABLE_DISCONNECT_REASONS=new Set(["transport error","transport close","forced close","ping timeout","server shutting down","forced server close"]);function noop(){}var Socket=class extends typed_events_1.StrictEventEmitter{constructor(nsp,client,auth,previousSession){super(),this.nsp=nsp,this.client=client,this.recovered=!1,this.data={},this.connected=!1,this.acks=new Map,this.fns=[],this.flags={},this.server=nsp.server,this.adapter=nsp.adapter,previousSession?(this.id=previousSession.sid,this.pid=previousSession.pid,previousSession.rooms.forEach(room=>this.join(room)),this.data=previousSession.data,previousSession.missedPackets.forEach(packet=>{this.packet({type:socket_io_parser_1.PacketType.EVENT,data:packet})}),this.recovered=!0):(client.conn.protocol===3?this.id=nsp.name!=="/"?nsp.name+"#"+client.id:client.id:this.id=base64id_1.default.generateId(),this.server._opts.connectionStateRecovery&&(this.pid=base64id_1.default.generateId())),this.handshake=this.buildHandshake(auth),this.on("error",noop)}buildHandshake(auth){var _a,_b,_c,_d;return{headers:((_a=this.request)===null||_a===void 0?void 0:_a.headers)||{},time:new Date+"",address:this.conn.remoteAddress,xdomain:!!(!((_b=this.request)===null||_b===void 0)&&_b.headers.origin),secure:!this.request||!!this.request.connection.encrypted,issued:+new Date,url:(_c=this.request)===null||_c===void 0?void 0:_c.url,query:((_d=this.request)===null||_d===void 0?void 0:_d._query)||{},auth}}emit(ev,...args){if(socket_types_1.RESERVED_EVENTS.has(ev))throw new Error(`"${String(ev)}" is a reserved event name`);let data=[ev,...args],packet={type:socket_io_parser_1.PacketType.EVENT,data};if(typeof data[data.length-1]=="function"){let id=this.nsp._ids++;debug("emitting packet with ack id %d",id),this.registerAckCallback(id,data.pop()),packet.id=id}let flags=Object.assign({},this.flags);return this.flags={},this.nsp.server.opts.connectionStateRecovery?this.adapter.broadcast(packet,{rooms:new Set([this.id]),except:new Set,flags}):(this.notifyOutgoingListeners(packet),this.packet(packet,flags)),!0}emitWithAck(ev,...args){let withErr=this.flags.timeout!==void 0;return new Promise((resolve,reject)=>{args.push((arg1,arg2)=>withErr?arg1?reject(arg1):resolve(arg2):resolve(arg1)),this.emit(ev,...args)})}registerAckCallback(id,ack){let timeout=this.flags.timeout;if(timeout===void 0){this.acks.set(id,ack);return}let timer=setTimeout(()=>{debug("event with ack id %d has timed out after %d ms",id,timeout),this.acks.delete(id),ack.call(this,new Error("operation has timed out"))},timeout);this.acks.set(id,(...args)=>{clearTimeout(timer),ack.apply(this,[null,...args])})}to(room){return this.newBroadcastOperator().to(room)}in(room){return this.newBroadcastOperator().in(room)}except(room){return this.newBroadcastOperator().except(room)}send(...args){return this.emit("message",...args),this}write(...args){return this.emit("message",...args),this}packet(packet,opts={}){packet.nsp=this.nsp.name,opts.compress=opts.compress!==!1,this.client._packet(packet,opts)}join(rooms){return debug("join room %s",rooms),this.adapter.addAll(this.id,new Set(Array.isArray(rooms)?rooms:[rooms]))}leave(room){return debug("leave room %s",room),this.adapter.del(this.id,room)}leaveAll(){this.adapter.delAll(this.id)}_onconnect(){debug("socket connected - writing packet"),this.connected=!0,this.join(this.id),this.conn.protocol===3?this.packet({type:socket_io_parser_1.PacketType.CONNECT}):this.packet({type:socket_io_parser_1.PacketType.CONNECT,data:{sid:this.id,pid:this.pid}})}_onpacket(packet){switch(debug("got packet %j",packet),packet.type){case socket_io_parser_1.PacketType.EVENT:this.onevent(packet);break;case socket_io_parser_1.PacketType.BINARY_EVENT:this.onevent(packet);break;case socket_io_parser_1.PacketType.ACK:this.onack(packet);break;case socket_io_parser_1.PacketType.BINARY_ACK:this.onack(packet);break;case socket_io_parser_1.PacketType.DISCONNECT:this.ondisconnect();break}}onevent(packet){let args=packet.data||[];if(debug("emitting event %j",args),packet.id!=null&&(debug("attaching ack callback to event"),args.push(this.ack(packet.id))),this._anyListeners&&this._anyListeners.length){let listeners=this._anyListeners.slice();for(let listener of listeners)listener.apply(this,args)}this.dispatch(args)}ack(id){let self2=this,sent=!1;return function(){if(sent)return;let args=Array.prototype.slice.call(arguments);debug("sending ack %j",args),self2.packet({id,type:socket_io_parser_1.PacketType.ACK,data:args}),sent=!0}}onack(packet){let ack=this.acks.get(packet.id);typeof ack=="function"?(debug("calling ack %s with %j",packet.id,packet.data),ack.apply(this,packet.data),this.acks.delete(packet.id)):debug("bad ack %s",packet.id)}ondisconnect(){debug("got disconnect packet"),this._onclose("client namespace disconnect")}_onerror(err){this.emitReserved("error",err)}_onclose(reason,description){if(!this.connected)return this;debug("closing socket - reason %s",reason),this.emitReserved("disconnecting",reason,description),this.server._opts.connectionStateRecovery&&RECOVERABLE_DISCONNECT_REASONS.has(reason)&&(debug("connection state recovery is enabled for sid %s",this.id),this.adapter.persistSession({sid:this.id,pid:this.pid,rooms:[...this.rooms],data:this.data})),this._cleanup(),this.client._remove(this),this.connected=!1,this.emitReserved("disconnect",reason,description)}_cleanup(){this.leaveAll(),this.nsp._remove(this),this.join=noop}_error(err){this.packet({type:socket_io_parser_1.PacketType.CONNECT_ERROR,data:err})}disconnect(close=!1){return this.connected?(close?this.client._disconnect():(this.packet({type:socket_io_parser_1.PacketType.DISCONNECT}),this._onclose("server namespace disconnect")),this):this}compress(compress){return this.flags.compress=compress,this}get volatile(){return this.flags.volatile=!0,this}get broadcast(){return this.newBroadcastOperator()}get local(){return this.newBroadcastOperator().local}timeout(timeout){return this.flags.timeout=timeout,this}dispatch(event){debug("dispatching an event %j",event),this.run(event,err=>{process.nextTick(()=>{if(err)return this._onerror(err);this.connected?super.emitUntyped.apply(this,event):debug("ignore packet received after disconnection")})})}use(fn){return this.fns.push(fn),this}run(event,fn){if(!this.fns.length)return fn();let fns=this.fns.slice(0);function run(i){fns[i](event,err=>{if(err)return fn(err);if(!fns[i+1])return fn();run(i+1)})}run(0)}get disconnected(){return!this.connected}get request(){return this.client.request}get conn(){return this.client.conn}get rooms(){return this.adapter.socketRooms(this.id)||new Set}onAny(listener){return this._anyListeners=this._anyListeners||[],this._anyListeners.push(listener),this}prependAny(listener){return this._anyListeners=this._anyListeners||[],this._anyListeners.unshift(listener),this}offAny(listener){if(!this._anyListeners)return this;if(listener){let listeners=this._anyListeners;for(let i=0;i<listeners.length;i++)if(listener===listeners[i])return listeners.splice(i,1),this}else this._anyListeners=[];return this}listenersAny(){return this._anyListeners||[]}onAnyOutgoing(listener){return this._anyOutgoingListeners=this._anyOutgoingListeners||[],this._anyOutgoingListeners.push(listener),this}prependAnyOutgoing(listener){return this._anyOutgoingListeners=this._anyOutgoingListeners||[],this._anyOutgoingListeners.unshift(listener),this}offAnyOutgoing(listener){if(!this._anyOutgoingListeners)return this;if(listener){let listeners=this._anyOutgoingListeners;for(let i=0;i<listeners.length;i++)if(listener===listeners[i])return listeners.splice(i,1),this}else this._anyOutgoingListeners=[];return this}listenersAnyOutgoing(){return this._anyOutgoingListeners||[]}notifyOutgoingListeners(packet){if(this._anyOutgoingListeners&&this._anyOutgoingListeners.length){let listeners=this._anyOutgoingListeners.slice();for(let listener of listeners)listener.apply(this,packet.data)}}newBroadcastOperator(){let flags=Object.assign({},this.flags);return this.flags={},new broadcast_operator_1.BroadcastOperator(this.adapter,new Set,new Set([this.id]),flags)}};exports2.Socket=Socket}});var require_namespace=__commonJS({"node_modules/socket.io/dist/namespace.js"(exports2){"use strict";var __importDefault=exports2&&exports2.__importDefault||function(mod){return mod&&mod.__esModule?mod:{default:mod}};Object.defineProperty(exports2,"__esModule",{value:!0});exports2.Namespace=exports2.RESERVED_EVENTS=void 0;var socket_1=require_socket2(),typed_events_1=require_typed_events(),debug_1=__importDefault(require_src8()),broadcast_operator_1=require_broadcast_operator(),debug=(0,debug_1.default)("socket.io:namespace");exports2.RESERVED_EVENTS=new Set(["connect","connection","new_namespace"]);var Namespace=class extends typed_events_1.StrictEventEmitter{constructor(server,name){super(),this.sockets=new Map,this._preConnectSockets=new Map,this._fns=[],this._ids=0,this.server=server,this.name=name,this._initAdapter()}_initAdapter(){this.adapter=new(this.server.adapter())(this),Promise.resolve(this.adapter.init()).catch(err=>{debug("error while initializing adapter: %s",err)})}use(fn){return this._fns.push(fn),this}run(socket,fn){if(!this._fns.length)return fn();let fns=this._fns.slice(0);function run(i){fns[i](socket,err=>{if(err)return fn(err);if(!fns[i+1])return fn();run(i+1)})}run(0)}to(room){return new broadcast_operator_1.BroadcastOperator(this.adapter).to(room)}in(room){return new broadcast_operator_1.BroadcastOperator(this.adapter).in(room)}except(room){return new broadcast_operator_1.BroadcastOperator(this.adapter).except(room)}async _add(client,auth,fn){var _a;debug("adding socket to nsp %s",this.name);let socket=await this._createSocket(client,auth);if(this._preConnectSockets.set(socket.id,socket),!((_a=this.server.opts.connectionStateRecovery)===null||_a===void 0)&&_a.skipMiddlewares&&socket.recovered&&client.conn.readyState==="open")return this._doConnect(socket,fn);this.run(socket,err=>{process.nextTick(()=>{if(client.conn.readyState!=="open"){debug("next called after client was closed - ignoring socket"),socket._cleanup();return}if(err)return debug("middleware error, sending CONNECT_ERROR packet to the client"),socket._cleanup(),client.conn.protocol===3?socket._error(err.data||err.message):socket._error({message:err.message,data:err.data});this._doConnect(socket,fn)})})}async _createSocket(client,auth){let sessionId=auth.pid,offset=auth.offset;if(this.server.opts.connectionStateRecovery&&typeof sessionId=="string"&&typeof offset=="string"){let session;try{session=await this.adapter.restoreSession(sessionId,offset)}catch(e){debug("error while restoring session: %s",e)}if(session)return debug("connection state recovered for sid %s",session.sid),new socket_1.Socket(this,client,auth,session)}return new socket_1.Socket(this,client,auth)}_doConnect(socket,fn){this._preConnectSockets.delete(socket.id),this.sockets.set(socket.id,socket),socket._onconnect(),fn&&fn(socket),this.emitReserved("connect",socket),this.emitReserved("connection",socket)}_remove(socket){this.sockets.delete(socket.id)||this._preConnectSockets.delete(socket.id)}emit(ev,...args){return new broadcast_operator_1.BroadcastOperator(this.adapter).emit(ev,...args)}send(...args){return this.emit("message",...args),this}write(...args){return this.emit("message",...args),this}serverSideEmit(ev,...args){if(exports2.RESERVED_EVENTS.has(ev))throw new Error(`"${String(ev)}" is a reserved event name`);return args.unshift(ev),this.adapter.serverSideEmit(args),!0}serverSideEmitWithAck(ev,...args){return new Promise((resolve,reject)=>{args.push((err,responses)=>err?(err.responses=responses,reject(err)):resolve(responses)),this.serverSideEmit(ev,...args)})}_onServerSideEmit(args){super.emitUntyped.apply(this,args)}allSockets(){return new broadcast_operator_1.BroadcastOperator(this.adapter).allSockets()}compress(compress){return new broadcast_operator_1.BroadcastOperator(this.adapter).compress(compress)}get volatile(){return new broadcast_operator_1.BroadcastOperator(this.adapter).volatile}get local(){return new broadcast_operator_1.BroadcastOperator(this.adapter).local}timeout(timeout){return new broadcast_operator_1.BroadcastOperator(this.adapter).timeout(timeout)}fetchSockets(){return new broadcast_operator_1.BroadcastOperator(this.adapter).fetchSockets()}socketsJoin(room){return new broadcast_operator_1.BroadcastOperator(this.adapter).socketsJoin(room)}socketsLeave(room){return new broadcast_operator_1.BroadcastOperator(this.adapter).socketsLeave(room)}disconnectSockets(close=!1){return new broadcast_operator_1.BroadcastOperator(this.adapter).disconnectSockets(close)}};exports2.Namespace=Namespace}});var require_yeast=__commonJS({"node_modules/socket.io-adapter/dist/contrib/yeast.js"(exports2){"use strict";Object.defineProperty(exports2,"__esModule",{value:!0});exports2.yeast=exports2.decode=exports2.encode=void 0;var alphabet="0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz-_".split(""),length=64,map={},seed=0,i=0,prev;function encode(num){let encoded="";do encoded=alphabet[num%length]+encoded,num=Math.floor(num/length);while(num>0);return encoded}exports2.encode=encode;function decode(str){let decoded=0;for(i=0;i<str.length;i++)decoded=decoded*length+map[str.charAt(i)];return decoded}exports2.decode=decode;function yeast(){let now=encode(+new Date);return now!==prev?(seed=0,prev=now):now+"."+encode(seed++)}exports2.yeast=yeast;for(;i<length;i++)map[alphabet[i]]=i}});var require_constants6=__commonJS({"node_modules/socket.io-adapter/node_modules/ws/lib/constants.js"(exports2,module2){"use strict";module2.exports={BINARY_TYPES:["nodebuffer","arraybuffer","fragments"],EMPTY_BUFFER:Buffer.alloc(0),GUID:"258EAFA5-E914-47DA-95CA-C5AB0DC85B11",kForOnEventAttribute:Symbol("kIsForOnEventAttribute"),kListener:Symbol("kListener"),kStatusCode:Symbol("status-code"),kWebSocket:Symbol("websocket"),NOOP:()=>{}}}});var require_buffer_util2=__commonJS({"node_modules/socket.io-adapter/node_modules/ws/lib/buffer-util.js"(exports2,module2){"use strict";var{EMPTY_BUFFER}=require_constants6();function concat(list,totalLength){if(list.length===0)return EMPTY_BUFFER;if(list.length===1)return list[0];let target=Buffer.allocUnsafe(totalLength),offset=0;for(let i=0;i<list.length;i++){let buf=list[i];target.set(buf,offset),offset+=buf.length}return offset<totalLength?target.slice(0,offset):target}function _mask(source,mask,output,offset,length){for(let i=0;i<length;i++)output[offset+i]=source[i]^mask[i&3]}function _unmask(buffer,mask){for(let i=0;i<buffer.length;i++)buffer[i]^=mask[i&3]}function toArrayBuffer(buf){return buf.byteLength===buf.buffer.byteLength?buf.buffer:buf.buffer.slice(buf.byteOffset,buf.byteOffset+buf.byteLength)}function toBuffer(data){if(toBuffer.readOnly=!0,Buffer.isBuffer(data))return data;let buf;return data instanceof ArrayBuffer?buf=Buffer.from(data):ArrayBuffer.isView(data)?buf=Buffer.from(data.buffer,data.byteOffset,data.byteLength):(buf=Buffer.from(data),toBuffer.readOnly=!1),buf}module2.exports={concat,mask:_mask,toArrayBuffer,toBuffer,unmask:_unmask};if(!process.env.WS_NO_BUFFER_UTIL)try{let bufferUtil=require("bufferutil");module2.exports.mask=function(source,mask,output,offset,length){length<48?_mask(source,mask,output,offset,length):bufferUtil.mask(source,mask,output,offset,length)},module2.exports.unmask=function(buffer,mask){buffer.length<32?_unmask(buffer,mask):bufferUtil.unmask(buffer,mask)}}catch{}}});var require_limiter2=__commonJS({"node_modules/socket.io-adapter/node_modules/ws/lib/limiter.js"(exports2,module2){"use strict";var kDone=Symbol("kDone"),kRun=Symbol("kRun"),Limiter=class{constructor(concurrency){this[kDone]=()=>{this.pending--,this[kRun]()},this.concurrency=concurrency||1/0,this.jobs=[],this.pending=0}add(job){this.jobs.push(job),this[kRun]()}[kRun](){if(this.pending!==this.concurrency&&this.jobs.length){let job=this.jobs.shift();this.pending++,job(this[kDone])}}};module2.exports=Limiter}});var require_permessage_deflate2=__commonJS({"node_modules/socket.io-adapter/node_modules/ws/lib/permessage-deflate.js"(exports2,module2){"use strict";var zlib=require("zlib"),bufferUtil=require_buffer_util2(),Limiter=require_limiter2(),{kStatusCode}=require_constants6(),TRAILER=Buffer.from([0,0,255,255]),kPerMessageDeflate=Symbol("permessage-deflate"),kTotalLength=Symbol("total-length"),kCallback=Symbol("callback"),kBuffers=Symbol("buffers"),kError=Symbol("error"),zlibLimiter,PerMessageDeflate=class{constructor(options,isServer,maxPayload){if(this._maxPayload=maxPayload|0,this._options=options||{},this._threshold=this._options.threshold!==void 0?this._options.threshold:1024,this._isServer=!!isServer,this._deflate=null,this._inflate=null,this.params=null,!zlibLimiter){let concurrency=this._options.concurrencyLimit!==void 0?this._options.concurrencyLimit:10;zlibLimiter=new Limiter(concurrency)}}static get extensionName(){return"permessage-deflate"}offer(){let params={};return this._options.serverNoContextTakeover&&(params.server_no_context_takeover=!0),this._options.clientNoContextTakeover&&(params.client_no_context_takeover=!0),this._options.serverMaxWindowBits&&(params.server_max_window_bits=this._options.serverMaxWindowBits),this._options.clientMaxWindowBits?params.client_max_window_bits=this._options.clientMaxWindowBits:this._options.clientMaxWindowBits==null&&(params.client_max_window_bits=!0),params}accept(configurations){return configurations=this.normalizeParams(configurations),this.params=this._isServer?this.acceptAsServer(configurations):this.acceptAsClient(configurations),this.params}cleanup(){if(this._inflate&&(this._inflate.close(),this._inflate=null),this._deflate){let callback=this._deflate[kCallback];this._deflate.close(),this._deflate=null,callback&&callback(new Error("The deflate stream was closed while data was being processed"))}}acceptAsServer(offers){let opts=this._options,accepted=offers.find(params=>!(opts.serverNoContextTakeover===!1&¶ms.server_no_context_takeover||params.server_max_window_bits&&(opts.serverMaxWindowBits===!1||typeof opts.serverMaxWindowBits=="number"&&opts.serverMaxWindowBits>params.server_max_window_bits)||typeof opts.clientMaxWindowBits=="number"&&!params.client_max_window_bits));if(!accepted)throw new Error("None of the extension offers can be accepted");return opts.serverNoContextTakeover&&(accepted.server_no_context_takeover=!0),opts.clientNoContextTakeover&&(accepted.client_no_context_takeover=!0),typeof opts.serverMaxWindowBits=="number"&&(accepted.server_max_window_bits=opts.serverMaxWindowBits),typeof opts.clientMaxWindowBits=="number"?accepted.client_max_window_bits=opts.clientMaxWindowBits:(accepted.client_max_window_bits===!0||opts.clientMaxWindowBits===!1)&&delete accepted.client_max_window_bits,accepted}acceptAsClient(response){let params=response[0];if(this._options.clientNoContextTakeover===!1&¶ms.client_no_context_takeover)throw new Error('Unexpected parameter "client_no_context_takeover"');if(!params.client_max_window_bits)typeof this._options.clientMaxWindowBits=="number"&&(params.client_max_window_bits=this._options.clientMaxWindowBits);else if(this._options.clientMaxWindowBits===!1||typeof this._options.clientMaxWindowBits=="number"&¶ms.client_max_window_bits>this._options.clientMaxWindowBits)throw new Error('Unexpected or invalid parameter "client_max_window_bits"');return params}normalizeParams(configurations){return configurations.forEach(params=>{Object.keys(params).forEach(key=>{let value=params[key];if(value.length>1)throw new Error(`Parameter "${key}" must have only a single value`);if(value=value[0],key==="client_max_window_bits"){if(value!==!0){let num=+value;if(!Number.isInteger(num)||num<8||num>15)throw new TypeError(`Invalid value for parameter "${key}": ${value}`);value=num}else if(!this._isServer)throw new TypeError(`Invalid value for parameter "${key}": ${value}`)}else if(key==="server_max_window_bits"){let num=+value;if(!Number.isInteger(num)||num<8||num>15)throw new TypeError(`Invalid value for parameter "${key}": ${value}`);value=num}else if(key==="client_no_context_takeover"||key==="server_no_context_takeover"){if(value!==!0)throw new TypeError(`Invalid value for parameter "${key}": ${value}`)}else throw new Error(`Unknown parameter "${key}"`);params[key]=value})}),configurations}decompress(data,fin,callback){zlibLimiter.add(done=>{this._decompress(data,fin,(err,result)=>{done(),callback(err,result)})})}compress(data,fin,callback){zlibLimiter.add(done=>{this._compress(data,fin,(err,result)=>{done(),callback(err,result)})})}_decompress(data,fin,callback){let endpoint=this._isServer?"client":"server";if(!this._inflate){let key=`${endpoint}_max_window_bits`,windowBits=typeof this.params[key]!="number"?zlib.Z_DEFAULT_WINDOWBITS:this.params[key];this._inflate=zlib.createInflateRaw({...this._options.zlibInflateOptions,windowBits}),this._inflate[kPerMessageDeflate]=this,this._inflate[kTotalLength]=0,this._inflate[kBuffers]=[],this._inflate.on("error",inflateOnError),this._inflate.on("data",inflateOnData)}this._inflate[kCallback]=callback,this._inflate.write(data),fin&&this._inflate.write(TRAILER),this._inflate.flush(()=>{let err=this._inflate[kError];if(err){this._inflate.close(),this._inflate=null,callback(err);return}let data2=bufferUtil.concat(this._inflate[kBuffers],this._inflate[kTotalLength]);this._inflate._readableState.endEmitted?(this._inflate.close(),this._inflate=null):(this._inflate[kTotalLength]=0,this._inflate[kBuffers]=[],fin&&this.params[`${endpoint}_no_context_takeover`]&&this._inflate.reset()),callback(null,data2)})}_compress(data,fin,callback){let endpoint=this._isServer?"server":"client";if(!this._deflate){let key=`${endpoint}_max_window_bits`,windowBits=typeof this.params[key]!="number"?zlib.Z_DEFAULT_WINDOWBITS:this.params[key];this._deflate=zlib.createDeflateRaw({...this._options.zlibDeflateOptions,windowBits}),this._deflate[kTotalLength]=0,this._deflate[kBuffers]=[],this._deflate.on("data",deflateOnData)}this._deflate[kCallback]=callback,this._deflate.write(data),this._deflate.flush(zlib.Z_SYNC_FLUSH,()=>{if(!this._deflate)return;let data2=bufferUtil.concat(this._deflate[kBuffers],this._deflate[kTotalLength]);fin&&(data2=data2.slice(0,data2.length-4)),this._deflate[kCallback]=null,this._deflate[kTotalLength]=0,this._deflate[kBuffers]=[],fin&&this.params[`${endpoint}_no_context_takeover`]&&this._deflate.reset(),callback(null,data2)})}};module2.exports=PerMessageDeflate;function deflateOnData(chunk){this[kBuffers].push(chunk),this[kTotalLength]+=chunk.length}function inflateOnData(chunk){if(this[kTotalLength]+=chunk.length,this[kPerMessageDeflate]._maxPayload<1||this[kTotalLength]<=this[kPerMessageDeflate]._maxPayload){this[kBuffers].push(chunk);return}this[kError]=new RangeError("Max payload size exceeded"),this[kError].code="WS_ERR_UNSUPPORTED_MESSAGE_LENGTH",this[kError][kStatusCode]=1009,this.removeListener("data",inflateOnData),this.reset()}function inflateOnError(err){this[kPerMessageDeflate]._inflate=null,err[kStatusCode]=1007,this[kCallback](err)}}});var require_validation2=__commonJS({"node_modules/socket.io-adapter/node_modules/ws/lib/validation.js"(exports2,module2){"use strict";var tokenChars=[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,1,1,1,1,1,0,0,1,1,0,1,1,0,1,1,1,1,1,1,1,1,1,1,0,0,0,0,0,0,0,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,0,0,0,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,0,1,0,1,0];function isValidStatusCode(code){return code>=1e3&&code<=1014&&code!==1004&&code!==1005&&code!==1006||code>=3e3&&code<=4999}function _isValidUTF8(buf){let len=buf.length,i=0;for(;i<len;)if((buf[i]&128)===0)i++;else if((buf[i]&224)===192){if(i+1===len||(buf[i+1]&192)!==128||(buf[i]&254)===192)return!1;i+=2}else if((buf[i]&240)===224){if(i+2>=len||(buf[i+1]&192)!==128||(buf[i+2]&192)!==128||buf[i]===224&&(buf[i+1]&224)===128||buf[i]===237&&(buf[i+1]&224)===160)return!1;i+=3}else if((buf[i]&248)===240){if(i+3>=len||(buf[i+1]&192)!==128||(buf[i+2]&192)!==128||(buf[i+3]&192)!==128||buf[i]===240&&(buf[i+1]&240)===128||buf[i]===244&&buf[i+1]>143||buf[i]>244)return!1;i+=4}else return!1;return!0}module2.exports={isValidStatusCode,isValidUTF8:_isValidUTF8,tokenChars};if(!process.env.WS_NO_UTF_8_VALIDATE)try{let isValidUTF8=require("utf-8-validate");module2.exports.isValidUTF8=function(buf){return buf.length<150?_isValidUTF8(buf):isValidUTF8(buf)}}catch{}}});var require_receiver2=__commonJS({"node_modules/socket.io-adapter/node_modules/ws/lib/receiver.js"(exports2,module2){"use strict";var{Writable}=require("stream"),PerMessageDeflate=require_permessage_deflate2(),{BINARY_TYPES,EMPTY_BUFFER,kStatusCode,kWebSocket}=require_constants6(),{concat,toArrayBuffer,unmask}=require_buffer_util2(),{isValidStatusCode,isValidUTF8}=require_validation2(),GET_INFO=0,GET_PAYLOAD_LENGTH_16=1,GET_PAYLOAD_LENGTH_64=2,GET_MASK=3,GET_DATA=4,INFLATING=5,Receiver=class extends Writable{constructor(options={}){super(),this._binaryType=options.binaryType||BINARY_TYPES[0],this._extensions=options.extensions||{},this._isServer=!!options.isServer,this._maxPayload=options.maxPayload|0,this._skipUTF8Validation=!!options.skipUTF8Validation,this[kWebSocket]=void 0,this._bufferedBytes=0,this._buffers=[],this._compressed=!1,this._payloadLength=0,this._mask=void 0,this._fragmented=0,this._masked=!1,this._fin=!1,this._opcode=0,this._totalPayloadLength=0,this._messageLength=0,this._fragments=[],this._state=GET_INFO,this._loop=!1}_write(chunk,encoding,cb){if(this._opcode===8&&this._state==GET_INFO)return cb();this._bufferedBytes+=chunk.length,this._buffers.push(chunk),this.startLoop(cb)}consume(n){if(this._bufferedBytes-=n,n===this._buffers[0].length)return this._buffers.shift();if(n<this._buffers[0].length){let buf=this._buffers[0];return this._buffers[0]=buf.slice(n),buf.slice(0,n)}let dst=Buffer.allocUnsafe(n);do{let buf=this._buffers[0],offset=dst.length-n;n>=buf.length?dst.set(this._buffers.shift(),offset):(dst.set(new Uint8Array(buf.buffer,buf.byteOffset,n),offset),this._buffers[0]=buf.slice(n)),n-=buf.length}while(n>0);return dst}startLoop(cb){let err;this._loop=!0;do switch(this._state){case GET_INFO:err=this.getInfo();break;case GET_PAYLOAD_LENGTH_16:err=this.getPayloadLength16();break;case GET_PAYLOAD_LENGTH_64:err=this.getPayloadLength64();break;case GET_MASK:this.getMask();break;case GET_DATA:err=this.getData(cb);break;default:this._loop=!1;return}while(this._loop);cb(err)}getInfo(){if(this._bufferedBytes<2){this._loop=!1;return}let buf=this.consume(2);if((buf[0]&48)!==0)return this._loop=!1,error(RangeError,"RSV2 and RSV3 must be clear",!0,1002,"WS_ERR_UNEXPECTED_RSV_2_3");let compressed=(buf[0]&64)===64;if(compressed&&!this._extensions[PerMessageDeflate.extensionName])return this._loop=!1,error(RangeError,"RSV1 must be clear",!0,1002,"WS_ERR_UNEXPECTED_RSV_1");if(this._fin=(buf[0]&128)===128,this._opcode=buf[0]&15,this._payloadLength=buf[1]&127,this._opcode===0){if(compressed)return this._loop=!1,error(RangeError,"RSV1 must be clear",!0,1002,"WS_ERR_UNEXPECTED_RSV_1");if(!this._fragmented)return this._loop=!1,error(RangeError,"invalid opcode 0",!0,1002,"WS_ERR_INVALID_OPCODE");this._opcode=this._fragmented}else if(this._opcode===1||this._opcode===2){if(this._fragmented)return this._loop=!1,error(RangeError,`invalid opcode ${this._opcode}`,!0,1002,"WS_ERR_INVALID_OPCODE");this._compressed=compressed}else if(this._opcode>7&&this._opcode<11){if(!this._fin)return this._loop=!1,error(RangeError,"FIN must be set",!0,1002,"WS_ERR_EXPECTED_FIN");if(compressed)return this._loop=!1,error(RangeError,"RSV1 must be clear",!0,1002,"WS_ERR_UNEXPECTED_RSV_1");if(this._payloadLength>125)return this._loop=!1,error(RangeError,`invalid payload length ${this._payloadLength}`,!0,1002,"WS_ERR_INVALID_CONTROL_PAYLOAD_LENGTH")}else return this._loop=!1,error(RangeError,`invalid opcode ${this._opcode}`,!0,1002,"WS_ERR_INVALID_OPCODE");if(!this._fin&&!this._fragmented&&(this._fragmented=this._opcode),this._masked=(buf[1]&128)===128,this._isServer){if(!this._masked)return this._loop=!1,error(RangeError,"MASK must be set",!0,1002,"WS_ERR_EXPECTED_MASK")}else if(this._masked)return this._loop=!1,error(RangeError,"MASK must be clear",!0,1002,"WS_ERR_UNEXPECTED_MASK");if(this._payloadLength===126)this._state=GET_PAYLOAD_LENGTH_16;else if(this._payloadLength===127)this._state=GET_PAYLOAD_LENGTH_64;else return this.haveLength()}getPayloadLength16(){if(this._bufferedBytes<2){this._loop=!1;return}return this._payloadLength=this.consume(2).readUInt16BE(0),this.haveLength()}getPayloadLength64(){if(this._bufferedBytes<8){this._loop=!1;return}let buf=this.consume(8),num=buf.readUInt32BE(0);return num>Math.pow(2,21)-1?(this._loop=!1,error(RangeError,"Unsupported WebSocket frame: payload length > 2^53 - 1",!1,1009,"WS_ERR_UNSUPPORTED_DATA_PAYLOAD_LENGTH")):(this._payloadLength=num*Math.pow(2,32)+buf.readUInt32BE(4),this.haveLength())}haveLength(){if(this._payloadLength&&this._opcode<8&&(this._totalPayloadLength+=this._payloadLength,this._totalPayloadLength>this._maxPayload&&this._maxPayload>0))return this._loop=!1,error(RangeError,"Max payload size exceeded",!1,1009,"WS_ERR_UNSUPPORTED_MESSAGE_LENGTH");this._masked?this._state=GET_MASK:this._state=GET_DATA}getMask(){if(this._bufferedBytes<4){this._loop=!1;return}this._mask=this.consume(4),this._state=GET_DATA}getData(cb){let data=EMPTY_BUFFER;if(this._payloadLength){if(this._bufferedBytes<this._payloadLength){this._loop=!1;return}data=this.consume(this._payloadLength),this._masked&&(this._mask[0]|this._mask[1]|this._mask[2]|this._mask[3])!==0&&unmask(data,this._mask)}if(this._opcode>7)return this.controlMessage(data);if(this._compressed){this._state=INFLATING,this.decompress(data,cb);return}return data.length&&(this._messageLength=this._totalPayloadLength,this._fragments.push(data)),this.dataMessage()}decompress(data,cb){this._extensions[PerMessageDeflate.extensionName].decompress(data,this._fin,(err,buf)=>{if(err)return cb(err);if(buf.length){if(this._messageLength+=buf.length,this._messageLength>this._maxPayload&&this._maxPayload>0)return cb(error(RangeError,"Max payload size exceeded",!1,1009,"WS_ERR_UNSUPPORTED_MESSAGE_LENGTH"));this._fragments.push(buf)}let er=this.dataMessage();if(er)return cb(er);this.startLoop(cb)})}dataMessage(){if(this._fin){let messageLength=this._messageLength,fragments=this._fragments;if(this._totalPayloadLength=0,this._messageLength=0,this._fragmented=0,this._fragments=[],this._opcode===2){let data;this._binaryType==="nodebuffer"?data=concat(fragments,messageLength):this._binaryType==="arraybuffer"?data=toArrayBuffer(concat(fragments,messageLength)):data=fragments,this.emit("message",data,!0)}else{let buf=concat(fragments,messageLength);if(!this._skipUTF8Validation&&!isValidUTF8(buf))return this._loop=!1,error(Error,"invalid UTF-8 sequence",!0,1007,"WS_ERR_INVALID_UTF8");this.emit("message",buf,!1)}}this._state=GET_INFO}controlMessage(data){if(this._opcode===8)if(this._loop=!1,data.length===0)this.emit("conclude",1005,EMPTY_BUFFER),this.end();else{if(data.length===1)return error(RangeError,"invalid payload length 1",!0,1002,"WS_ERR_INVALID_CONTROL_PAYLOAD_LENGTH");{let code=data.readUInt16BE(0);if(!isValidStatusCode(code))return error(RangeError,`invalid status code ${code}`,!0,1002,"WS_ERR_INVALID_CLOSE_CODE");let buf=data.slice(2);if(!this._skipUTF8Validation&&!isValidUTF8(buf))return error(Error,"invalid UTF-8 sequence",!0,1007,"WS_ERR_INVALID_UTF8");this.emit("conclude",code,buf),this.end()}}else this._opcode===9?this.emit("ping",data):this.emit("pong",data);this._state=GET_INFO}};module2.exports=Receiver;function error(ErrorCtor,message,prefix,statusCode,errorCode){let err=new ErrorCtor(prefix?`Invalid WebSocket frame: ${message}`:message);return Error.captureStackTrace(err,error),err.code=errorCode,err[kStatusCode]=statusCode,err}}});var require_sender2=__commonJS({"node_modules/socket.io-adapter/node_modules/ws/lib/sender.js"(exports2,module2){"use strict";var net=require("net"),tls=require("tls"),{randomFillSync}=require("crypto"),PerMessageDeflate=require_permessage_deflate2(),{EMPTY_BUFFER}=require_constants6(),{isValidStatusCode}=require_validation2(),{mask:applyMask,toBuffer}=require_buffer_util2(),kByteLength=Symbol("kByteLength"),maskBuffer=Buffer.alloc(4),Sender=class _Sender{constructor(socket,extensions,generateMask){this._extensions=extensions||{},generateMask&&(this._generateMask=generateMask,this._maskBuffer=Buffer.alloc(4)),this._socket=socket,this._firstFragment=!0,this._compress=!1,this._bufferedBytes=0,this._deflating=!1,this._queue=[]}static frame(data,options){let mask,merge=!1,offset=2,skipMasking=!1;options.mask&&(mask=options.maskBuffer||maskBuffer,options.generateMask?options.generateMask(mask):randomFillSync(mask,0,4),skipMasking=(mask[0]|mask[1]|mask[2]|mask[3])===0,offset=6);let dataLength;typeof data=="string"?(!options.mask||skipMasking)&&options[kByteLength]!==void 0?dataLength=options[kByteLength]:(data=Buffer.from(data),dataLength=data.length):(dataLength=data.length,merge=options.mask&&options.readOnly&&!skipMasking);let payloadLength=dataLength;dataLength>=65536?(offset+=8,payloadLength=127):dataLength>125&&(offset+=2,payloadLength=126);let target=Buffer.allocUnsafe(merge?dataLength+offset:offset);return target[0]=options.fin?options.opcode|128:options.opcode,options.rsv1&&(target[0]|=64),target[1]=payloadLength,payloadLength===126?target.writeUInt16BE(dataLength,2):payloadLength===127&&(target[2]=target[3]=0,target.writeUIntBE(dataLength,4,6)),options.mask?(target[1]|=128,target[offset-4]=mask[0],target[offset-3]=mask[1],target[offset-2]=mask[2],target[offset-1]=mask[3],skipMasking?[target,data]:merge?(applyMask(data,mask,target,offset,dataLength),[target]):(applyMask(data,mask,data,0,dataLength),[target,data])):[target,data]}close(code,data,mask,cb){let buf;if(code===void 0)buf=EMPTY_BUFFER;else{if(typeof code!="number"||!isValidStatusCode(code))throw new TypeError("First argument must be a valid error code number");if(data===void 0||!data.length)buf=Buffer.allocUnsafe(2),buf.writeUInt16BE(code,0);else{let length=Buffer.byteLength(data);if(length>123)throw new RangeError("The message must not be greater than 123 bytes");buf=Buffer.allocUnsafe(2+length),buf.writeUInt16BE(code,0),typeof data=="string"?buf.write(data,2):buf.set(data,2)}}let options={[kByteLength]:buf.length,fin:!0,generateMask:this._generateMask,mask,maskBuffer:this._maskBuffer,opcode:8,readOnly:!1,rsv1:!1};this._deflating?this.enqueue([this.dispatch,buf,!1,options,cb]):this.sendFrame(_Sender.frame(buf,options),cb)}ping(data,mask,cb){let byteLength,readOnly;if(typeof data=="string"?(byteLength=Buffer.byteLength(data),readOnly=!1):(data=toBuffer(data),byteLength=data.length,readOnly=toBuffer.readOnly),byteLength>125)throw new RangeError("The data size must not be greater than 125 bytes");let options={[kByteLength]:byteLength,fin:!0,generateMask:this._generateMask,mask,maskBuffer:this._maskBuffer,opcode:9,readOnly,rsv1:!1};this._deflating?this.enqueue([this.dispatch,data,!1,options,cb]):this.sendFrame(_Sender.frame(data,options),cb)}pong(data,mask,cb){let byteLength,readOnly;if(typeof data=="string"?(byteLength=Buffer.byteLength(data),readOnly=!1):(data=toBuffer(data),byteLength=data.length,readOnly=toBuffer.readOnly),byteLength>125)throw new RangeError("The data size must not be greater than 125 bytes");let options={[kByteLength]:byteLength,fin:!0,generateMask:this._generateMask,mask,maskBuffer:this._maskBuffer,opcode:10,readOnly,rsv1:!1};this._deflating?this.enqueue([this.dispatch,data,!1,options,cb]):this.sendFrame(_Sender.frame(data,options),cb)}send(data,options,cb){let perMessageDeflate=this._extensions[PerMessageDeflate.extensionName],opcode=options.binary?2:1,rsv1=options.compress,byteLength,readOnly;if(typeof data=="string"?(byteLength=Buffer.byteLength(data),readOnly=!1):(data=toBuffer(data),byteLength=data.length,readOnly=toBuffer.readOnly),this._firstFragment?(this._firstFragment=!1,rsv1&&perMessageDeflate&&perMessageDeflate.params[perMessageDeflate._isServer?"server_no_context_takeover":"client_no_context_takeover"]&&(rsv1=byteLength>=perMessageDeflate._threshold),this._compress=rsv1):(rsv1=!1,opcode=0),options.fin&&(this._firstFragment=!0),perMessageDeflate){let opts={[kByteLength]:byteLength,fin:options.fin,generateMask:this._generateMask,mask:options.mask,maskBuffer:this._maskBuffer,opcode,readOnly,rsv1};this._deflating?this.enqueue([this.dispatch,data,this._compress,opts,cb]):this.dispatch(data,this._compress,opts,cb)}else this.sendFrame(_Sender.frame(data,{[kByteLength]:byteLength,fin:options.fin,generateMask:this._generateMask,mask:options.mask,maskBuffer:this._maskBuffer,opcode,readOnly,rsv1:!1}),cb)}dispatch(data,compress,options,cb){if(!compress){this.sendFrame(_Sender.frame(data,options),cb);return}let perMessageDeflate=this._extensions[PerMessageDeflate.extensionName];this._bufferedBytes+=options[kByteLength],this._deflating=!0,perMessageDeflate.compress(data,options.fin,(_,buf)=>{if(this._socket.destroyed){let err=new Error("The socket was closed while data was being compressed");typeof cb=="function"&&cb(err);for(let i=0;i<this._queue.length;i++){let params=this._queue[i],callback=params[params.length-1];typeof callback=="function"&&callback(err)}return}this._bufferedBytes-=options[kByteLength],this._deflating=!1,options.readOnly=!1,this.sendFrame(_Sender.frame(buf,options),cb),this.dequeue()})}dequeue(){for(;!this._deflating&&this._queue.length;){let params=this._queue.shift();this._bufferedBytes-=params[3][kByteLength],Reflect.apply(params[0],this,params.slice(1))}}enqueue(params){this._bufferedBytes+=params[3][kByteLength],this._queue.push(params)}sendFrame(list,cb){list.length===2?(this._socket.cork(),this._socket.write(list[0]),this._socket.write(list[1],cb),this._socket.uncork()):this._socket.write(list[0],cb)}};module2.exports=Sender}});var require_event_target2=__commonJS({"node_modules/socket.io-adapter/node_modules/ws/lib/event-target.js"(exports2,module2){"use strict";var{kForOnEventAttribute,kListener}=require_constants6(),kCode=Symbol("kCode"),kData=Symbol("kData"),kError=Symbol("kError"),kMessage=Symbol("kMessage"),kReason=Symbol("kReason"),kTarget=Symbol("kTarget"),kType=Symbol("kType"),kWasClean=Symbol("kWasClean"),Event=class{constructor(type){this[kTarget]=null,this[kType]=type}get target(){return this[kTarget]}get type(){return this[kType]}};Object.defineProperty(Event.prototype,"target",{enumerable:!0});Object.defineProperty(Event.prototype,"type",{enumerable:!0});var CloseEvent=class extends Event{constructor(type,options={}){super(type),this[kCode]=options.code===void 0?0:options.code,this[kReason]=options.reason===void 0?"":options.reason,this[kWasClean]=options.wasClean===void 0?!1:options.wasClean}get code(){return this[kCode]}get reason(){return this[kReason]}get wasClean(){return this[kWasClean]}};Object.defineProperty(CloseEvent.prototype,"code",{enumerable:!0});Object.defineProperty(CloseEvent.prototype,"reason",{enumerable:!0});Object.defineProperty(CloseEvent.prototype,"wasClean",{enumerable:!0});var ErrorEvent=class extends Event{constructor(type,options={}){super(type),this[kError]=options.error===void 0?null:options.error,this[kMessage]=options.message===void 0?"":options.message}get error(){return this[kError]}get message(){return this[kMessage]}};Object.defineProperty(ErrorEvent.prototype,"error",{enumerable:!0});Object.defineProperty(ErrorEvent.prototype,"message",{enumerable:!0});var MessageEvent=class extends Event{constructor(type,options={}){super(type),this[kData]=options.data===void 0?null:options.data}get data(){return this[kData]}};Object.defineProperty(MessageEvent.prototype,"data",{enumerable:!0});var EventTarget={addEventListener(type,handler,options={}){for(let listener of this.listeners(type))if(!options[kForOnEventAttribute]&&listener[kListener]===handler&&!listener[kForOnEventAttribute])return;let wrapper;if(type==="message")wrapper=function(data,isBinary){let event=new MessageEvent("message",{data:isBinary?data:data.toString()});event[kTarget]=this,callListener(handler,this,event)};else if(type==="close")wrapper=function(code,message){let event=new CloseEvent("close",{code,reason:message.toString(),wasClean:this._closeFrameReceived&&this._closeFrameSent});event[kTarget]=this,callListener(handler,this,event)};else if(type==="error")wrapper=function(error){let event=new ErrorEvent("error",{error,message:error.message});event[kTarget]=this,callListener(handler,this,event)};else if(type==="open")wrapper=function(){let event=new Event("open");event[kTarget]=this,callListener(handler,this,event)};else return;wrapper[kForOnEventAttribute]=!!options[kForOnEventAttribute],wrapper[kListener]=handler,options.once?this.once(type,wrapper):this.on(type,wrapper)},removeEventListener(type,handler){for(let listener of this.listeners(type))if(listener[kListener]===handler&&!listener[kForOnEventAttribute]){this.removeListener(type,listener);break}}};module2.exports={CloseEvent,ErrorEvent,Event,EventTarget,MessageEvent};function callListener(listener,thisArg,event){typeof listener=="object"&&listener.handleEvent?listener.handleEvent.call(listener,event):listener.call(thisArg,event)}}});var require_extension2=__commonJS({"node_modules/socket.io-adapter/node_modules/ws/lib/extension.js"(exports2,module2){"use strict";var{tokenChars}=require_validation2();function push(dest,name,elem){dest[name]===void 0?dest[name]=[elem]:dest[name].push(elem)}function parse(header){let offers=Object.create(null),params=Object.create(null),mustUnescape=!1,isEscaping=!1,inQuotes=!1,extensionName,paramName,start=-1,code=-1,end=-1,i=0;for(;i<header.length;i++)if(code=header.charCodeAt(i),extensionName===void 0)if(end===-1&&tokenChars[code]===1)start===-1&&(start=i);else if(i!==0&&(code===32||code===9))end===-1&&start!==-1&&(end=i);else if(code===59||code===44){if(start===-1)throw new SyntaxError(`Unexpected character at index ${i}`);end===-1&&(end=i);let name=header.slice(start,end);code===44?(push(offers,name,params),params=Object.create(null)):extensionName=name,start=end=-1}else throw new SyntaxError(`Unexpected character at index ${i}`);else if(paramName===void 0)if(end===-1&&tokenChars[code]===1)start===-1&&(start=i);else if(code===32||code===9)end===-1&&start!==-1&&(end=i);else if(code===59||code===44){if(start===-1)throw new SyntaxError(`Unexpected character at index ${i}`);end===-1&&(end=i),push(params,header.slice(start,end),!0),code===44&&(push(offers,extensionName,params),params=Object.create(null),extensionName=void 0),start=end=-1}else if(code===61&&start!==-1&&end===-1)paramName=header.slice(start,i),start=end=-1;else throw new SyntaxError(`Unexpected character at index ${i}`);else if(isEscaping){if(tokenChars[code]!==1)throw new SyntaxError(`Unexpected character at index ${i}`);start===-1?start=i:mustUnescape||(mustUnescape=!0),isEscaping=!1}else if(inQuotes)if(tokenChars[code]===1)start===-1&&(start=i);else if(code===34&&start!==-1)inQuotes=!1,end=i;else if(code===92)isEscaping=!0;else throw new SyntaxError(`Unexpected character at index ${i}`);else if(code===34&&header.charCodeAt(i-1)===61)inQuotes=!0;else if(end===-1&&tokenChars[code]===1)start===-1&&(start=i);else if(start!==-1&&(code===32||code===9))end===-1&&(end=i);else if(code===59||code===44){if(start===-1)throw new SyntaxError(`Unexpected character at index ${i}`);end===-1&&(end=i);let value=header.slice(start,end);mustUnescape&&(value=value.replace(/\\/g,""),mustUnescape=!1),push(params,paramName,value),code===44&&(push(offers,extensionName,params),params=Object.create(null),extensionName=void 0),paramName=void 0,start=end=-1}else throw new SyntaxError(`Unexpected character at index ${i}`);if(start===-1||inQuotes||code===32||code===9)throw new SyntaxError("Unexpected end of input");end===-1&&(end=i);let token=header.slice(start,end);return extensionName===void 0?push(offers,token,params):(paramName===void 0?push(params,token,!0):mustUnescape?push(params,paramName,token.replace(/\\/g,"")):push(params,paramName,token),push(offers,extensionName,params)),offers}function format(extensions){return Object.keys(extensions).map(extension=>{let configurations=extensions[extension];return Array.isArray(configurations)||(configurations=[configurations]),configurations.map(params=>[extension].concat(Object.keys(params).map(k=>{let values=params[k];return Array.isArray(values)||(values=[values]),values.map(v=>v===!0?k:`${k}=${v}`).join("; ")})).join("; ")).join(", ")}).join(", ")}module2.exports={format,parse}}});var require_websocket4=__commonJS({"node_modules/socket.io-adapter/node_modules/ws/lib/websocket.js"(exports2,module2){"use strict";var EventEmitter=require("events"),https=require("https"),http=require("http"),net=require("net"),tls=require("tls"),{randomBytes,createHash}=require("crypto"),{Readable}=require("stream"),{URL:URL2}=require("url"),PerMessageDeflate=require_permessage_deflate2(),Receiver=require_receiver2(),Sender=require_sender2(),{BINARY_TYPES,EMPTY_BUFFER,GUID,kForOnEventAttribute,kListener,kStatusCode,kWebSocket,NOOP}=require_constants6(),{EventTarget:{addEventListener,removeEventListener}}=require_event_target2(),{format,parse}=require_extension2(),{toBuffer}=require_buffer_util2(),closeTimeout=30*1e3,kAborted=Symbol("kAborted"),protocolVersions=[8,13],readyStates=["CONNECTING","OPEN","CLOSING","CLOSED"],subprotocolRegex=/^[!#$%&'*+\-.0-9A-Z^_`|a-z~]+$/,WebSocket=class _WebSocket extends EventEmitter{constructor(address,protocols,options){super(),this._binaryType=BINARY_TYPES[0],this._closeCode=1006,this._closeFrameReceived=!1,this._closeFrameSent=!1,this._closeMessage=EMPTY_BUFFER,this._closeTimer=null,this._extensions={},this._paused=!1,this._protocol="",this._readyState=_WebSocket.CONNECTING,this._receiver=null,this._sender=null,this._socket=null,address!==null?(this._bufferedAmount=0,this._isServer=!1,this._redirects=0,protocols===void 0?protocols=[]:Array.isArray(protocols)||(typeof protocols=="object"&&protocols!==null?(options=protocols,protocols=[]):protocols=[protocols]),initAsClient(this,address,protocols,options)):this._isServer=!0}get binaryType(){return this._binaryType}set binaryType(type){BINARY_TYPES.includes(type)&&(this._binaryType=type,this._receiver&&(this._receiver._binaryType=type))}get bufferedAmount(){return this._socket?this._socket._writableState.length+this._sender._bufferedBytes:this._bufferedAmount}get extensions(){return Object.keys(this._extensions).join()}get isPaused(){return this._paused}get onclose(){return null}get onerror(){return null}get onopen(){return null}get onmessage(){return null}get protocol(){return this._protocol}get readyState(){return this._readyState}get url(){return this._url}setSocket(socket,head,options){let receiver=new Receiver({binaryType:this.binaryType,extensions:this._extensions,isServer:this._isServer,maxPayload:options.maxPayload,skipUTF8Validation:options.skipUTF8Validation});this._sender=new Sender(socket,this._extensions,options.generateMask),this._receiver=receiver,this._socket=socket,receiver[kWebSocket]=this,socket[kWebSocket]=this,receiver.on("conclude",receiverOnConclude),receiver.on("drain",receiverOnDrain),receiver.on("error",receiverOnError),receiver.on("message",receiverOnMessage),receiver.on("ping",receiverOnPing),receiver.on("pong",receiverOnPong),socket.setTimeout(0),socket.setNoDelay(),head.length>0&&socket.unshift(head),socket.on("close",socketOnClose),socket.on("data",socketOnData),socket.on("end",socketOnEnd),socket.on("error",socketOnError),this._readyState=_WebSocket.OPEN,this.emit("open")}emitClose(){if(!this._socket){this._readyState=_WebSocket.CLOSED,this.emit("close",this._closeCode,this._closeMessage);return}this._extensions[PerMessageDeflate.extensionName]&&this._extensions[PerMessageDeflate.extensionName].cleanup(),this._receiver.removeAllListeners(),this._readyState=_WebSocket.CLOSED,this.emit("close",this._closeCode,this._closeMessage)}close(code,data){if(this.readyState!==_WebSocket.CLOSED){if(this.readyState===_WebSocket.CONNECTING)return abortHandshake(this,this._req,"WebSocket was closed before the connection was established");if(this.readyState===_WebSocket.CLOSING){this._closeFrameSent&&(this._closeFrameReceived||this._receiver._writableState.errorEmitted)&&this._socket.end();return}this._readyState=_WebSocket.CLOSING,this._sender.close(code,data,!this._isServer,err=>{err||(this._closeFrameSent=!0,(this._closeFrameReceived||this._receiver._writableState.errorEmitted)&&this._socket.end())}),this._closeTimer=setTimeout(this._socket.destroy.bind(this._socket),closeTimeout)}}pause(){this.readyState===_WebSocket.CONNECTING||this.readyState===_WebSocket.CLOSED||(this._paused=!0,this._socket.pause())}ping(data,mask,cb){if(this.readyState===_WebSocket.CONNECTING)throw new Error("WebSocket is not open: readyState 0 (CONNECTING)");if(typeof data=="function"?(cb=data,data=mask=void 0):typeof mask=="function"&&(cb=mask,mask=void 0),typeof data=="number"&&(data=data.toString()),this.readyState!==_WebSocket.OPEN){sendAfterClose(this,data,cb);return}mask===void 0&&(mask=!this._isServer),this._sender.ping(data||EMPTY_BUFFER,mask,cb)}pong(data,mask,cb){if(this.readyState===_WebSocket.CONNECTING)throw new Error("WebSocket is not open: readyState 0 (CONNECTING)");if(typeof data=="function"?(cb=data,data=mask=void 0):typeof mask=="function"&&(cb=mask,mask=void 0),typeof data=="number"&&(data=data.toString()),this.readyState!==_WebSocket.OPEN){sendAfterClose(this,data,cb);return}mask===void 0&&(mask=!this._isServer),this._sender.pong(data||EMPTY_BUFFER,mask,cb)}resume(){this.readyState===_WebSocket.CONNECTING||this.readyState===_WebSocket.CLOSED||(this._paused=!1,this._receiver._writableState.needDrain||this._socket.resume())}send(data,options,cb){if(this.readyState===_WebSocket.CONNECTING)throw new Error("WebSocket is not open: readyState 0 (CONNECTING)");if(typeof options=="function"&&(cb=options,options={}),typeof data=="number"&&(data=data.toString()),this.readyState!==_WebSocket.OPEN){sendAfterClose(this,data,cb);return}let opts={binary:typeof data!="string",mask:!this._isServer,compress:!0,fin:!0,...options};this._extensions[PerMessageDeflate.extensionName]||(opts.compress=!1),this._sender.send(data||EMPTY_BUFFER,opts,cb)}terminate(){if(this.readyState!==_WebSocket.CLOSED){if(this.readyState===_WebSocket.CONNECTING)return abortHandshake(this,this._req,"WebSocket was closed before the connection was established");this._socket&&(this._readyState=_WebSocket.CLOSING,this._socket.destroy())}}};Object.defineProperty(WebSocket,"CONNECTING",{enumerable:!0,value:readyStates.indexOf("CONNECTING")});Object.defineProperty(WebSocket.prototype,"CONNECTING",{enumerable:!0,value:readyStates.indexOf("CONNECTING")});Object.defineProperty(WebSocket,"OPEN",{enumerable:!0,value:readyStates.indexOf("OPEN")});Object.defineProperty(WebSocket.prototype,"OPEN",{enumerable:!0,value:readyStates.indexOf("OPEN")});Object.defineProperty(WebSocket,"CLOSING",{enumerable:!0,value:readyStates.indexOf("CLOSING")});Object.defineProperty(WebSocket.prototype,"CLOSING",{enumerable:!0,value:readyStates.indexOf("CLOSING")});Object.defineProperty(WebSocket,"CLOSED",{enumerable:!0,value:readyStates.indexOf("CLOSED")});Object.defineProperty(WebSocket.prototype,"CLOSED",{enumerable:!0,value:readyStates.indexOf("CLOSED")});["binaryType","bufferedAmount","extensions","isPaused","protocol","readyState","url"].forEach(property=>{Object.defineProperty(WebSocket.prototype,property,{enumerable:!0})});["open","error","close","message"].forEach(method=>{Object.defineProperty(WebSocket.prototype,`on${method}`,{enumerable:!0,get(){for(let listener of this.listeners(method))if(listener[kForOnEventAttribute])return listener[kListener];return null},set(handler){for(let listener of this.listeners(method))if(listener[kForOnEventAttribute]){this.removeListener(method,listener);break}typeof handler=="function"&&this.addEventListener(method,handler,{[kForOnEventAttribute]:!0})}})});WebSocket.prototype.addEventListener=addEventListener;WebSocket.prototype.removeEventListener=removeEventListener;module2.exports=WebSocket;function initAsClient(websocket,address,protocols,options){let opts={protocolVersion:protocolVersions[1],maxPayload:104857600,skipUTF8Validation:!1,perMessageDeflate:!0,followRedirects:!1,maxRedirects:10,...options,createConnection:void 0,socketPath:void 0,hostname:void 0,protocol:void 0,timeout:void 0,method:"GET",host:void 0,path:void 0,port:void 0};if(!protocolVersions.includes(opts.protocolVersion))throw new RangeError(`Unsupported protocol version: ${opts.protocolVersion} (supported versions: ${protocolVersions.join(", ")})`);let parsedUrl;if(address instanceof URL2)parsedUrl=address,websocket._url=address.href;else{try{parsedUrl=new URL2(address)}catch{throw new SyntaxError(`Invalid URL: ${address}`)}websocket._url=address}let isSecure=parsedUrl.protocol==="wss:",isIpcUrl=parsedUrl.protocol==="ws+unix:",invalidUrlMessage;if(parsedUrl.protocol!=="ws:"&&!isSecure&&!isIpcUrl?invalidUrlMessage=`The URL's protocol must be one of "ws:", "wss:", or "ws+unix:"`:isIpcUrl&&!parsedUrl.pathname?invalidUrlMessage="The URL's pathname is empty":parsedUrl.hash&&(invalidUrlMessage="The URL contains a fragment identifier"),invalidUrlMessage){let err=new SyntaxError(invalidUrlMessage);if(websocket._redirects===0)throw err;emitErrorAndClose(websocket,err);return}let defaultPort=isSecure?443:80,key=randomBytes(16).toString("base64"),request=isSecure?https.request:http.request,protocolSet=new Set,perMessageDeflate;if(opts.createConnection=isSecure?tlsConnect:netConnect,opts.defaultPort=opts.defaultPort||defaultPort,opts.port=parsedUrl.port||defaultPort,opts.host=parsedUrl.hostname.startsWith("[")?parsedUrl.hostname.slice(1,-1):parsedUrl.hostname,opts.headers={...opts.headers,"Sec-WebSocket-Version":opts.protocolVersion,"Sec-WebSocket-Key":key,Connection:"Upgrade",Upgrade:"websocket"},opts.path=parsedUrl.pathname+parsedUrl.search,opts.timeout=opts.handshakeTimeout,opts.perMessageDeflate&&(perMessageDeflate=new PerMessageDeflate(opts.perMessageDeflate!==!0?opts.perMessageDeflate:{},!1,opts.maxPayload),opts.headers["Sec-WebSocket-Extensions"]=format({[PerMessageDeflate.extensionName]:perMessageDeflate.offer()})),protocols.length){for(let protocol of protocols){if(typeof protocol!="string"||!subprotocolRegex.test(protocol)||protocolSet.has(protocol))throw new SyntaxError("An invalid or duplicated subprotocol was specified");protocolSet.add(protocol)}opts.headers["Sec-WebSocket-Protocol"]=protocols.join(",")}if(opts.origin&&(opts.protocolVersion<13?opts.headers["Sec-WebSocket-Origin"]=opts.origin:opts.headers.Origin=opts.origin),(parsedUrl.username||parsedUrl.password)&&(opts.auth=`${parsedUrl.username}:${parsedUrl.password}`),isIpcUrl){let parts=opts.path.split(":");opts.socketPath=parts[0],opts.path=parts[1]}let req;if(opts.followRedirects){if(websocket._redirects===0){websocket._originalIpc=isIpcUrl,websocket._originalSecure=isSecure,websocket._originalHostOrSocketPath=isIpcUrl?opts.socketPath:parsedUrl.host;let headers=options&&options.headers;if(options={...options,headers:{}},headers)for(let[key2,value]of Object.entries(headers))options.headers[key2.toLowerCase()]=value}else if(websocket.listenerCount("redirect")===0){let isSameHost=isIpcUrl?websocket._originalIpc?opts.socketPath===websocket._originalHostOrSocketPath:!1:websocket._originalIpc?!1:parsedUrl.host===websocket._originalHostOrSocketPath;(!isSameHost||websocket._originalSecure&&!isSecure)&&(delete opts.headers.authorization,delete opts.headers.cookie,isSameHost||delete opts.headers.host,opts.auth=void 0)}opts.auth&&!options.headers.authorization&&(options.headers.authorization="Basic "+Buffer.from(opts.auth).toString("base64")),req=websocket._req=request(opts),websocket._redirects&&websocket.emit("redirect",websocket.url,req)}else req=websocket._req=request(opts);opts.timeout&&req.on("timeout",()=>{abortHandshake(websocket,req,"Opening handshake has timed out")}),req.on("error",err=>{req===null||req[kAborted]||(req=websocket._req=null,emitErrorAndClose(websocket,err))}),req.on("response",res=>{let location=res.headers.location,statusCode=res.statusCode;if(location&&opts.followRedirects&&statusCode>=300&&statusCode<400){if(++websocket._redirects>opts.maxRedirects){abortHandshake(websocket,req,"Maximum redirects exceeded");return}req.abort();let addr;try{addr=new URL2(location,address)}catch{let err=new SyntaxError(`Invalid URL: ${location}`);emitErrorAndClose(websocket,err);return}initAsClient(websocket,addr,protocols,options)}else websocket.emit("unexpected-response",req,res)||abortHandshake(websocket,req,`Unexpected server response: ${res.statusCode}`)}),req.on("upgrade",(res,socket,head)=>{if(websocket.emit("upgrade",res),websocket.readyState!==WebSocket.CONNECTING)return;if(req=websocket._req=null,res.headers.upgrade.toLowerCase()!=="websocket"){abortHandshake(websocket,socket,"Invalid Upgrade header");return}let digest=createHash("sha1").update(key+GUID).digest("base64");if(res.headers["sec-websocket-accept"]!==digest){abortHandshake(websocket,socket,"Invalid Sec-WebSocket-Accept header");return}let serverProt=res.headers["sec-websocket-protocol"],protError;if(serverProt!==void 0?protocolSet.size?protocolSet.has(serverProt)||(protError="Server sent an invalid subprotocol"):protError="Server sent a subprotocol but none was requested":protocolSet.size&&(protError="Server sent no subprotocol"),protError){abortHandshake(websocket,socket,protError);return}serverProt&&(websocket._protocol=serverProt);let secWebSocketExtensions=res.headers["sec-websocket-extensions"];if(secWebSocketExtensions!==void 0){if(!perMessageDeflate){abortHandshake(websocket,socket,"Server sent a Sec-WebSocket-Extensions header but no extension was requested");return}let extensions;try{extensions=parse(secWebSocketExtensions)}catch{abortHandshake(websocket,socket,"Invalid Sec-WebSocket-Extensions header");return}let extensionNames=Object.keys(extensions);if(extensionNames.length!==1||extensionNames[0]!==PerMessageDeflate.extensionName){abortHandshake(websocket,socket,"Server indicated an extension that was not requested");return}try{perMessageDeflate.accept(extensions[PerMessageDeflate.extensionName])}catch{abortHandshake(websocket,socket,"Invalid Sec-WebSocket-Extensions header");return}websocket._extensions[PerMessageDeflate.extensionName]=perMessageDeflate}websocket.setSocket(socket,head,{generateMask:opts.generateMask,maxPayload:opts.maxPayload,skipUTF8Validation:opts.skipUTF8Validation})}),req.end()}function emitErrorAndClose(websocket,err){websocket._readyState=WebSocket.CLOSING,websocket.emit("error",err),websocket.emitClose()}function netConnect(options){return options.path=options.socketPath,net.connect(options)}function tlsConnect(options){return options.path=void 0,!options.servername&&options.servername!==""&&(options.servername=net.isIP(options.host)?"":options.host),tls.connect(options)}function abortHandshake(websocket,stream,message){websocket._readyState=WebSocket.CLOSING;let err=new Error(message);Error.captureStackTrace(err,abortHandshake),stream.setHeader?(stream[kAborted]=!0,stream.abort(),stream.socket&&!stream.socket.destroyed&&stream.socket.destroy(),process.nextTick(emitErrorAndClose,websocket,err)):(stream.destroy(err),stream.once("error",websocket.emit.bind(websocket,"error")),stream.once("close",websocket.emitClose.bind(websocket)))}function sendAfterClose(websocket,data,cb){if(data){let length=toBuffer(data).length;websocket._socket?websocket._sender._bufferedBytes+=length:websocket._bufferedAmount+=length}if(cb){let err=new Error(`WebSocket is not open: readyState ${websocket.readyState} (${readyStates[websocket.readyState]})`);cb(err)}}function receiverOnConclude(code,reason){let websocket=this[kWebSocket];websocket._closeFrameReceived=!0,websocket._closeMessage=reason,websocket._closeCode=code,websocket._socket[kWebSocket]!==void 0&&(websocket._socket.removeListener("data",socketOnData),process.nextTick(resume,websocket._socket),code===1005?websocket.close():websocket.close(code,reason))}function receiverOnDrain(){let websocket=this[kWebSocket];websocket.isPaused||websocket._socket.resume()}function receiverOnError(err){let websocket=this[kWebSocket];websocket._socket[kWebSocket]!==void 0&&(websocket._socket.removeListener("data",socketOnData),process.nextTick(resume,websocket._socket),websocket.close(err[kStatusCode])),websocket.emit("error",err)}function receiverOnFinish(){this[kWebSocket].emitClose()}function receiverOnMessage(data,isBinary){this[kWebSocket].emit("message",data,isBinary)}function receiverOnPing(data){let websocket=this[kWebSocket];websocket.pong(data,!websocket._isServer,NOOP),websocket.emit("ping",data)}function receiverOnPong(data){this[kWebSocket].emit("pong",data)}function resume(stream){stream.resume()}function socketOnClose(){let websocket=this[kWebSocket];this.removeListener("close",socketOnClose),this.removeListener("data",socketOnData),this.removeListener("end",socketOnEnd),websocket._readyState=WebSocket.CLOSING;let chunk;!this._readableState.endEmitted&&!websocket._closeFrameReceived&&!websocket._receiver._writableState.errorEmitted&&(chunk=websocket._socket.read())!==null&&websocket._receiver.write(chunk),websocket._receiver.end(),this[kWebSocket]=void 0,clearTimeout(websocket._closeTimer),websocket._receiver._writableState.finished||websocket._receiver._writableState.errorEmitted?websocket.emitClose():(websocket._receiver.on("error",receiverOnFinish),websocket._receiver.on("finish",receiverOnFinish))}function socketOnData(chunk){this[kWebSocket]._receiver.write(chunk)||this.pause()}function socketOnEnd(){let websocket=this[kWebSocket];websocket._readyState=WebSocket.CLOSING,websocket._receiver.end(),this.end()}function socketOnError(){let websocket=this[kWebSocket];this.removeListener("error",socketOnError),this.on("error",NOOP),websocket&&(websocket._readyState=WebSocket.CLOSING,this.destroy())}}});var require_stream2=__commonJS({"node_modules/socket.io-adapter/node_modules/ws/lib/stream.js"(exports2,module2){"use strict";var{Duplex}=require("stream");function emitClose(stream){stream.emit("close")}function duplexOnEnd(){!this.destroyed&&this._writableState.finished&&this.destroy()}function duplexOnError(err){this.removeListener("error",duplexOnError),this.destroy(),this.listenerCount("error")===0&&this.emit("error",err)}function createWebSocketStream(ws,options){let terminateOnDestroy=!0,duplex=new Duplex({...options,autoDestroy:!1,emitClose:!1,objectMode:!1,writableObjectMode:!1});return ws.on("message",function(msg,isBinary){let data=!isBinary&&duplex._readableState.objectMode?msg.toString():msg;duplex.push(data)||ws.pause()}),ws.once("error",function(err){duplex.destroyed||(terminateOnDestroy=!1,duplex.destroy(err))}),ws.once("close",function(){duplex.destroyed||duplex.push(null)}),duplex._destroy=function(err,callback){if(ws.readyState===ws.CLOSED){callback(err),process.nextTick(emitClose,duplex);return}let called=!1;ws.once("error",function(err2){called=!0,callback(err2)}),ws.once("close",function(){called||callback(err),process.nextTick(emitClose,duplex)}),terminateOnDestroy&&ws.terminate()},duplex._final=function(callback){if(ws.readyState===ws.CONNECTING){ws.once("open",function(){duplex._final(callback)});return}ws._socket!==null&&(ws._socket._writableState.finished?(callback(),duplex._readableState.endEmitted&&duplex.destroy()):(ws._socket.once("finish",function(){callback()}),ws.close()))},duplex._read=function(){ws.isPaused&&ws.resume()},duplex._write=function(chunk,encoding,callback){if(ws.readyState===ws.CONNECTING){ws.once("open",function(){duplex._write(chunk,encoding,callback)});return}ws.send(chunk,callback)},duplex.on("end",duplexOnEnd),duplex.on("error",duplexOnError),duplex}module2.exports=createWebSocketStream}});var require_subprotocol2=__commonJS({"node_modules/socket.io-adapter/node_modules/ws/lib/subprotocol.js"(exports2,module2){"use strict";var{tokenChars}=require_validation2();function parse(header){let protocols=new Set,start=-1,end=-1,i=0;for(i;i<header.length;i++){let code=header.charCodeAt(i);if(end===-1&&tokenChars[code]===1)start===-1&&(start=i);else if(i!==0&&(code===32||code===9))end===-1&&start!==-1&&(end=i);else if(code===44){if(start===-1)throw new SyntaxError(`Unexpected character at index ${i}`);end===-1&&(end=i);let protocol2=header.slice(start,end);if(protocols.has(protocol2))throw new SyntaxError(`The "${protocol2}" subprotocol is duplicated`);protocols.add(protocol2),start=end=-1}else throw new SyntaxError(`Unexpected character at index ${i}`)}if(start===-1||end!==-1)throw new SyntaxError("Unexpected end of input");let protocol=header.slice(start,i);if(protocols.has(protocol))throw new SyntaxError(`The "${protocol}" subprotocol is duplicated`);return protocols.add(protocol),protocols}module2.exports={parse}}});var require_websocket_server2=__commonJS({"node_modules/socket.io-adapter/node_modules/ws/lib/websocket-server.js"(exports2,module2){"use strict";var EventEmitter=require("events"),http=require("http"),https=require("https"),net=require("net"),tls=require("tls"),{createHash}=require("crypto"),extension=require_extension2(),PerMessageDeflate=require_permessage_deflate2(),subprotocol=require_subprotocol2(),WebSocket=require_websocket4(),{GUID,kWebSocket}=require_constants6(),keyRegex=/^[+/0-9A-Za-z]{22}==$/,RUNNING=0,CLOSING=1,CLOSED=2,WebSocketServer=class extends EventEmitter{constructor(options,callback){if(super(),options={maxPayload:100*1024*1024,skipUTF8Validation:!1,perMessageDeflate:!1,handleProtocols:null,clientTracking:!0,verifyClient:null,noServer:!1,backlog:null,server:null,host:null,path:null,port:null,WebSocket,...options},options.port==null&&!options.server&&!options.noServer||options.port!=null&&(options.server||options.noServer)||options.server&&options.noServer)throw new TypeError('One and only one of the "port", "server", or "noServer" options must be specified');if(options.port!=null?(this._server=http.createServer((req,res)=>{let body=http.STATUS_CODES[426];res.writeHead(426,{"Content-Length":body.length,"Content-Type":"text/plain"}),res.end(body)}),this._server.listen(options.port,options.host,options.backlog,callback)):options.server&&(this._server=options.server),this._server){let emitConnection=this.emit.bind(this,"connection");this._removeListeners=addListeners(this._server,{listening:this.emit.bind(this,"listening"),error:this.emit.bind(this,"error"),upgrade:(req,socket,head)=>{this.handleUpgrade(req,socket,head,emitConnection)}})}options.perMessageDeflate===!0&&(options.perMessageDeflate={}),options.clientTracking&&(this.clients=new Set,this._shouldEmitClose=!1),this.options=options,this._state=RUNNING}address(){if(this.options.noServer)throw new Error('The server is operating in "noServer" mode');return this._server?this._server.address():null}close(cb){if(this._state===CLOSED){cb&&this.once("close",()=>{cb(new Error("The server is not running"))}),process.nextTick(emitClose,this);return}if(cb&&this.once("close",cb),this._state!==CLOSING)if(this._state=CLOSING,this.options.noServer||this.options.server)this._server&&(this._removeListeners(),this._removeListeners=this._server=null),this.clients?this.clients.size?this._shouldEmitClose=!0:process.nextTick(emitClose,this):process.nextTick(emitClose,this);else{let server=this._server;this._removeListeners(),this._removeListeners=this._server=null,server.close(()=>{emitClose(this)})}}shouldHandle(req){if(this.options.path){let index=req.url.indexOf("?");if((index!==-1?req.url.slice(0,index):req.url)!==this.options.path)return!1}return!0}handleUpgrade(req,socket,head,cb){socket.on("error",socketOnError);let key=req.headers["sec-websocket-key"],version=+req.headers["sec-websocket-version"];if(req.method!=="GET"){abortHandshakeOrEmitwsClientError(this,req,socket,405,"Invalid HTTP method");return}if(req.headers.upgrade.toLowerCase()!=="websocket"){abortHandshakeOrEmitwsClientError(this,req,socket,400,"Invalid Upgrade header");return}if(!key||!keyRegex.test(key)){abortHandshakeOrEmitwsClientError(this,req,socket,400,"Missing or invalid Sec-WebSocket-Key header");return}if(version!==8&&version!==13){abortHandshakeOrEmitwsClientError(this,req,socket,400,"Missing or invalid Sec-WebSocket-Version header");return}if(!this.shouldHandle(req)){abortHandshake(socket,400);return}let secWebSocketProtocol=req.headers["sec-websocket-protocol"],protocols=new Set;if(secWebSocketProtocol!==void 0)try{protocols=subprotocol.parse(secWebSocketProtocol)}catch{abortHandshakeOrEmitwsClientError(this,req,socket,400,"Invalid Sec-WebSocket-Protocol header");return}let secWebSocketExtensions=req.headers["sec-websocket-extensions"],extensions={};if(this.options.perMessageDeflate&&secWebSocketExtensions!==void 0){let perMessageDeflate=new PerMessageDeflate(this.options.perMessageDeflate,!0,this.options.maxPayload);try{let offers=extension.parse(secWebSocketExtensions);offers[PerMessageDeflate.extensionName]&&(perMessageDeflate.accept(offers[PerMessageDeflate.extensionName]),extensions[PerMessageDeflate.extensionName]=perMessageDeflate)}catch{abortHandshakeOrEmitwsClientError(this,req,socket,400,"Invalid or unacceptable Sec-WebSocket-Extensions header");return}}if(this.options.verifyClient){let info={origin:req.headers[`${version===8?"sec-websocket-origin":"origin"}`],secure:!!(req.socket.authorized||req.socket.encrypted),req};if(this.options.verifyClient.length===2){this.options.verifyClient(info,(verified,code,message,headers)=>{if(!verified)return abortHandshake(socket,code||401,message,headers);this.completeUpgrade(extensions,key,protocols,req,socket,head,cb)});return}if(!this.options.verifyClient(info))return abortHandshake(socket,401)}this.completeUpgrade(extensions,key,protocols,req,socket,head,cb)}completeUpgrade(extensions,key,protocols,req,socket,head,cb){if(!socket.readable||!socket.writable)return socket.destroy();if(socket[kWebSocket])throw new Error("server.handleUpgrade() was called more than once with the same socket, possibly due to a misconfiguration");if(this._state>RUNNING)return abortHandshake(socket,503);let headers=["HTTP/1.1 101 Switching Protocols","Upgrade: websocket","Connection: Upgrade",`Sec-WebSocket-Accept: ${createHash("sha1").update(key+GUID).digest("base64")}`],ws=new this.options.WebSocket(null);if(protocols.size){let protocol=this.options.handleProtocols?this.options.handleProtocols(protocols,req):protocols.values().next().value;protocol&&(headers.push(`Sec-WebSocket-Protocol: ${protocol}`),ws._protocol=protocol)}if(extensions[PerMessageDeflate.extensionName]){let params=extensions[PerMessageDeflate.extensionName].params,value=extension.format({[PerMessageDeflate.extensionName]:[params]});headers.push(`Sec-WebSocket-Extensions: ${value}`),ws._extensions=extensions}this.emit("headers",headers,req),socket.write(headers.concat(`\r
|
|
268
271
|
`).join(`\r
|
|
269
272
|
`)),socket.removeListener("error",socketOnError),ws.setSocket(socket,head,{maxPayload:this.options.maxPayload,skipUTF8Validation:this.options.skipUTF8Validation}),this.clients&&(this.clients.add(ws),ws.on("close",()=>{this.clients.delete(ws),this._shouldEmitClose&&!this.clients.size&&process.nextTick(emitClose,this)})),cb(ws,req)}};module2.exports=WebSocketServer;function addListeners(server,map){for(let event of Object.keys(map))server.on(event,map[event]);return function(){for(let event of Object.keys(map))server.removeListener(event,map[event])}}function emitClose(server){server._state=CLOSED,server.emit("close")}function socketOnError(){this.destroy()}function abortHandshake(socket,code,message,headers){message=message||http.STATUS_CODES[code],headers={Connection:"close","Content-Type":"text/html","Content-Length":Buffer.byteLength(message),...headers},socket.once("finish",socket.destroy),socket.end(`HTTP/1.1 ${code} ${http.STATUS_CODES[code]}\r
|
|
270
273
|
`+Object.keys(headers).map(h=>`${h}: ${headers[h]}`).join(`\r
|
|
@@ -290,7 +293,7 @@ ${process.env.RESTARTED?"Restarting":"Starting"} up mock-server, serving `),colo
|
|
|
290
293
|
Opening API overview page...`));let openCommand;switch(process.platform){case"darwin":openCommand=`open ${apiOverviewUrl}`;break;case"win32":openCommand=`start ${apiOverviewUrl}`;break;case"linux":openCommand=`xdg-open ${apiOverviewUrl}`;break;default:console.warn(colors.yellow(`Could not automatically open browser. Please visit: ${apiOverviewUrl}`));return}exec(openCommand,error=>{error&&console.warn(colors.yellow(`Could not automatically open browser. Please visit: ${apiOverviewUrl}`))})}}),webApp&&!process.env.RESTARTED&&(webServer=webApp.listen(Number.parseInt(process.env.WEB_PORT,10),getServerHost(),()=>{if(console.info(colors.yellow(`
|
|
291
294
|
Web server available on:
|
|
292
295
|
`)),getServerUrls(process.env.WEB_PORT,webPublicPath).forEach(url=>{console.info(" "+url.replace(String(process.env.WEB_PORT),colors.green(process.env.WEB_PORT)))}),process.env.OPEN_API_OVERVIEW){let webUrl=`http://localhost:${process.env.WEB_PORT}${webPublicPath==="/"?"/":webPublicPath}`,command=process.platform==="darwin"?"open":process.platform==="win32"?"cmd":"xdg-open",args=process.platform==="win32"?["/c","start","",webUrl]:[webUrl],child=spawn(command,args,{detached:!0,stdio:"ignore"});child.once("error",()=>console.warn(colors.yellow(`Could not automatically open browser. Please visit: ${webUrl}`))),child.unref()}isEmptyObj(proxyTable)||(console.info(colors.yellow(`
|
|
293
|
-
Enable proxy at web server on:`)),Object.keys(proxyTable).forEach(prefix=>{console.info(` ${prefix} -> ${proxyTable[prefix]}`)}))}))}function closeServer(server){return new Promise(resolve=>{if(!server||!server.listening)return resolve();server.close(()=>resolve()),typeof server.closeAllConnections=="function"&&server.closeAllConnections()})}async function shutdown(){if(!shuttingDown){shuttingDown=!0;try{socketServer?(await socketServer.close(),socketServer=null):await closeServer(httpServer),await closeServer(webServer)}finally{log.info(colors.red("mock-server process stopped.")),process.exit()}}}process.platform==="win32"&&require("readline").createInterface({input:process.stdin,output:process.stdout}).on("SIGINT",function(){process.emit("SIGINT")});process.once("SIGINT",shutdown);process.once("SIGTERM",shutdown);module2.exports={composeRouteFromJsFile,parseMockFiles}}});var require_staticServer=__commonJS({"src/lib/staticServer.js"(exports2,module2){var express=require_express2(),{closeSync,existsSync,lstatSync,openSync,promises:fsPromises,readFileSync,readSync}=require("fs"),path=require("path"),http=require("http"),https=require("https"),mime=require_mime(),{spawn}=require("child_process"),chokidar=require("chokidar"),{createProxyMiddleware}=require_dist2(),colors=require_safe(),portfinder=require_portfinder(),{shouldExitImmediatelyOnShutdown}=require_processShutdown(),{dateFormat,logger,getServerHost,getServerUrls,hostAllowlistMiddleware,getDirectoryHiddenNames}=require_utils4(),log=logger(process.env.SILENT),argv=JSON.parse(process.env.ARGV),osHiddenEnabled=process.env.OS_HIDDEN_ENABLED==="true"||process.env.OS_HIDDEN_ENABLED==="1",LIVE_RELOAD_PATH="/__mock-service-cli/live-reload",LIVE_RELOAD_CLIENT_PATH="/__mock-service-cli/live-reload.js",STATIC_FAVICON_PATH="/__mock-service-cli/favicon.svg",TEXT_SAMPLE_SIZE=8192;function isPlainObject(value){return!!value&&typeof value=="object"&&!Array.isArray(value)}function detectTextCharset(filePath,stats){if(stats.size===0)return"utf-8";let buffer=Buffer.allocUnsafe(Math.min(stats.size,TEXT_SAMPLE_SIZE)),fileDescriptor;try{fileDescriptor=openSync(filePath,"r");let bytesRead=readSync(fileDescriptor,buffer,0,buffer.length,0),sample=buffer.subarray(0,bytesRead);if(sample[0]===255&&sample[1]===254)return"utf-16le";if(sample[0]===254&&sample[1]===255)return"utf-16be";for(let byte of sample)if(byte===0||byte<9||byte>13&&byte<32)return null;return new TextDecoder("utf-8",{fatal:!0}).decode(sample),"utf-8"}catch{return null}finally{fileDescriptor!==void 0&&closeSync(fileDescriptor)}}function setStaticHeaders(res,filePath,stats){res.setHeader("Content-Disposition","inline");let contentType=mime.lookup(filePath);if(!contentType||contentType==="application/octet-stream"){let charset=detectTextCharset(filePath,stats);charset&&res.setHeader("Content-Type",`text/plain; charset=${charset}`)}}function parseHeaderList(value){return typeof value!="string"?{}:value.split(/\s*,\s*/).reduce((headers,item)=>{let separator=item.indexOf("=");return separator<=0||(headers[item.slice(0,separator).trim()]=item.slice(separator+1).trim()),headers},{})}function parseProxyOptions(){if(!process.env.PROXY_OPTIONS)return{};try{let value=JSON.parse(process.env.PROXY_OPTIONS);return isPlainObject(value)?value:{}}catch(error){throw new Error(`Invalid proxy options: ${error.message}`)}}function normalizePublicPath(value,label,allowEmptyRoot){if(typeof value!="string")throw new Error(`${label} must be a path`);if(!value&&allowEmptyRoot)return"/";if(!value)throw new Error(`${label} must be a non-empty path`);let normalized="/"+value.replace(/^\/+|\/+$/g,"");if(normalized!=="/"&&(normalized.includes("..")||normalized.includes("?")||normalized.includes("#")))throw new Error(`${label} must be a root-relative path`);return normalized}function normalizeAccessLog(value,label,configDir){if(value===void 0)return null;if(!isPlainObject(value))throw new Error(`${label}.accessLog must be an object`);let accessLog={};if(["success","failure"].forEach(name=>{if(value[name]!==void 0){if(typeof value[name]!="string"||!value[name])throw new Error(`${label}.accessLog.${name} must be a file path`);accessLog[name]=path.resolve(configDir,value[name])}}),Object.keys(accessLog).length===0)throw new Error(`${label}.accessLog requires success or failure`);return accessLog}function normalizeRequestHeaders(value,label){if(value===void 0)return{};if(!isPlainObject(value))throw new Error(`${label} must be an object`);return Object.entries(value).reduce((headers,[name,headerValue])=>{if(!name||headerValue===null||typeof headerValue=="object")throw new Error(`${label}.${name} must be a primitive value`);return headers[name]=String(headerValue),headers},{})}function normalizeApplicationOptions(value,label,configDir){if(value.cors!==void 0&&typeof value.cors!="boolean")throw new Error(`${label}.cors must be boolean`);if(value.headers!==void 0&&!isPlainObject(value.headers))throw new Error(`${label}.headers must be an object`);if(value.secure!==void 0&&typeof value.secure!="boolean")throw new Error(`${label}.secure must be boolean`);return{cors:value.cors===!0,headers:isPlainObject(value.headers)?value.headers:{},secure:value.secure===!0,requestHeaders:normalizeRequestHeaders(value.requestHeaders,`${label}.requestHeaders`),accessLog:normalizeAccessLog(value.accessLog,label,configDir)}}function normalizeSpaFallback(value,directory,label){if(value===void 0||value===!1)return!1;if(typeof value!="string"||!value||!value.startsWith("/")||value.includes(".."))throw new Error(`${label} must be a root-relative path`);if(!directory)throw new Error(`${label} requires an application directory`);let fallbackPath=getStaticPath(directory,value);if(!fallbackPath||!/\.html?$/i.test(fallbackPath))throw new Error(`${label} does not exist: ${value}`);return value}function normalizeProxyTable(value,label,allowStringValues){if(value===void 0)return{};if(!isPlainObject(value))throw new Error(`${label} must be an object`);return Object.entries(value).reduce((table,[prefix,rule])=>{let normalizedPrefix=normalizePublicPath(prefix,`${label} route`);if(Object.prototype.hasOwnProperty.call(table,normalizedPrefix))throw new Error(`Duplicate proxy route: ${normalizedPrefix}`);let target=rule,rewrite=!1,requestHeaders={};if(isPlainObject(rule)){if(target=rule.target,rewrite=rule.rewrite===!0,requestHeaders=normalizeRequestHeaders(rule.requestHeaders,`${label}[${prefix}].requestHeaders`),rule.rewrite!==void 0&&typeof rule.rewrite!="boolean")throw new Error(`${label}[${prefix}].rewrite must be boolean`)}else if(!allowStringValues||typeof rule!="string")throw new Error(`${label}[${prefix}] must contain target and rewrite`);if(typeof target!="string"||!/^https?:\/\//.test(target))throw new Error(`Invalid proxy target for ${prefix}`);return table[normalizedPrefix]={target,rewrite,requestHeaders},table},{})}function hasPathPrefix(prefix,requestPath){return prefix==="/"||requestPath===prefix||requestPath.startsWith(`${prefix}/`)}function validateMountPaths(mounts){if(mounts.filter(mount=>mount.path==="/").length>1)throw new Error("mounts can only contain one root path");let nonRootMounts=mounts.filter(mount=>mount.path!=="/");nonRootMounts.forEach((mount,index)=>{nonRootMounts.forEach((other,otherIndex)=>{if(index!==otherIndex&&hasPathPrefix(mount.path,other.path))throw new Error(`mounts paths cannot overlap: ${mount.path} and ${other.path}`)})})}function isTransientWatchError(error){let code=error&&error.code;return["EBUSY","EPERM","EACCES","ENOENT","ENOTDIR"].includes(code)}function readWatchEnabledEnv(){if(process.env.WATCH_ENABLED!==void 0)return process.env.WATCH_ENABLED==="true"||process.env.WATCH_ENABLED==="1"}function normalizeConfig(){let defaults={open:!1,browser:"default",watch:{enabled:!1,ignore:["**/node_modules/**","**/.git/**"],delay:100,fullReload:!1,depth:void 0,interval:250},injectTag:"body",https:!1};if(process.env.WATCH_DEPTH!==void 0){let cliDepth=Number(process.env.WATCH_DEPTH);if(!Number.isInteger(cliDepth)||cliDepth<0)throw new Error("watch.depth must be a non-negative integer")}if(process.env.WATCH_INTERVAL!==void 0){let cliInterval=Number(process.env.WATCH_INTERVAL);if(!Number.isInteger(cliInterval)||cliInterval<1)throw new Error("watch.interval must be a positive integer")}let cliWatchEnabled=readWatchEnabledEnv(),cliWatchInterval=process.env.WATCH_INTERVAL===void 0?void 0:Number(process.env.WATCH_INTERVAL),cliDirectory=process.env.STATIC_DIRECTORY?path.resolve(process.env.STATIC_DIRECTORY):null;if(process.env.STATIC_CONFIG&&argv["spa-fallback"]!==void 0)throw new Error("--spa-fallback cannot be used with --static-config");let cliSpaFallback=process.env.STATIC_CONFIG?!1:normalizeSpaFallback(argv["spa-fallback"],cliDirectory,"spaFallback");if(!process.env.STATIC_CONFIG){if(!cliDirectory)throw new Error("Static server requires -R <directory> or --static-config <file>");if(!existsSync(cliDirectory)||!lstatSync(cliDirectory).isDirectory())throw new Error(`static-server: directory does not exist: ${cliDirectory}`);let cliProxy=normalizeProxyTable(parseProxyOptions(),"proxy",!0);return(argv.r||argv.rewrite)&&Object.values(cliProxy).forEach(rule=>rule.rewrite=!0),{...defaults,open:process.env.OPEN_API_OVERVIEW?!0:defaults.open,watch:{...defaults.watch,enabled:cliWatchEnabled===void 0?defaults.watch.enabled:cliWatchEnabled,interval:cliWatchInterval===void 0?defaults.watch.interval:cliWatchInterval,depth:process.env.WATCH_DEPTH===void 0?void 0:Number(process.env.WATCH_DEPTH)},configDir:process.cwd(),mounts:[{path:"/",directory:cliDirectory,spaFallback:cliSpaFallback,proxy:cliProxy,cors:!1,headers:{},secure:!1,requestHeaders:{},accessLog:null}]}}let configPath=path.resolve(process.env.STATIC_CONFIG),supplied;try{supplied=JSON.parse(readFileSync(configPath,"utf8"))}catch(error){throw new Error(`Unable to read static config: ${error.message}`)}if(!isPlainObject(supplied))throw new Error("Static config must contain a JSON object");let configDir=path.dirname(configPath),watch=isPlainObject(supplied.watch)?supplied.watch:{};if(watch.enabled!==void 0&&typeof watch.enabled!="boolean")throw new Error("watch.enabled must be boolean");if(watch.interval!==void 0&&(!Number.isInteger(watch.interval)||watch.interval<1))throw new Error("watch.interval must be a positive integer");let depthValue=process.env.WATCH_DEPTH!==void 0?Number(process.env.WATCH_DEPTH):watch.depth;if(depthValue!==void 0&&(!Number.isInteger(depthValue)||depthValue<0))throw new Error("watch.depth must be a non-negative integer");let enabledValue=cliWatchEnabled===void 0?watch.enabled===void 0?defaults.watch.enabled:watch.enabled:cliWatchEnabled,intervalValue=cliWatchInterval===void 0?watch.interval===void 0?defaults.watch.interval:watch.interval:cliWatchInterval;if(process.env.PROXY_OPTIONS)throw new Error("--proxy-options/--rewrite cannot be used with --static-config");let suppliedRootField=["directory","spaFallback","proxy","cors","headers","secure","requestHeaders","accessLog"].find(field=>supplied[field]!==void 0);if(suppliedRootField)throw new Error(`${suppliedRootField} must be declared on a mount in static config`);let mounts=supplied.mounts===void 0?[]:supplied.mounts;if(!Array.isArray(mounts))throw new Error("mounts must be an array");if(mounts.length===0)throw new Error("Static config requires at least one mount");let normalizedMounts=mounts.map((mount,index)=>{if(!isPlainObject(mount))throw new Error(`mounts[${index}] must be an object`);let mountPath=mount.path===void 0?"/":normalizePublicPath(mount.path,`mounts[${index}].path`,!0);if(mount.directory!==void 0&&typeof mount.directory!="string")throw new Error(`mounts[${index}].directory must be a string`);let directory=mount.directory===void 0?null:path.resolve(configDir,mount.directory);if(directory&&(!existsSync(directory)||!lstatSync(directory).isDirectory()))throw new Error(`Mount directory does not exist: ${directory}`);let normalizedMount={path:mountPath,directory,spaFallback:normalizeSpaFallback(mount.spaFallback,directory,`mounts[${index}].spaFallback`),proxy:normalizeProxyTable(mount.proxy,`mounts[${index}].proxy`,!1),...normalizeApplicationOptions(mount,`mounts[${index}]`,configDir)};if(!normalizedMount.directory&&Object.keys(normalizedMount.proxy).length===0)throw new Error(`mounts[${index}] requires directory or proxy`);if(normalizedMount.accessLog&&!normalizedMount.spaFallback)throw new Error(`mounts[${index}].accessLog requires spaFallback`);return normalizedMount});validateMountPaths(normalizedMounts);let httpsConfig=supplied.https,normalizedHttps=!1;if(httpsConfig===!0)throw new Error("https requires cert and key paths");if(isPlainObject(httpsConfig)&&httpsConfig.enable!==!1){if(typeof httpsConfig.cert!="string"||typeof httpsConfig.key!="string")throw new Error("https requires cert and key paths");normalizedHttps={cert:path.resolve(configDir,httpsConfig.cert),key:path.resolve(configDir,httpsConfig.key),passphrase:typeof httpsConfig.passphrase=="string"?httpsConfig.passphrase:void 0}}return{...defaults,open:process.env.OPEN_API_OVERVIEW?supplied.open||!0:supplied.open===void 0?defaults.open:supplied.open,browser:supplied.browser===void 0?defaults.browser:supplied.browser,configDir,watch:{enabled:enabledValue,ignore:Array.isArray(watch.ignore)?watch.ignore:defaults.watch.ignore,delay:Number.isFinite(watch.delay)&&watch.delay>=0?watch.delay:defaults.watch.delay,fullReload:watch.fullReload===!0,depth:depthValue,interval:intervalValue},injectTag:supplied.injectTag==="head"?"head":"body",mounts:normalizedMounts,https:normalizedHttps}}function getStaticPath(root,requestPath){let pathname;try{pathname=decodeURIComponent(requestPath)}catch{return null}let candidate=path.resolve(root,`.${pathname}`),relative=path.relative(root,candidate);return relative.startsWith("..")||path.isAbsolute(relative)||!existsSync(candidate)||lstatSync(candidate).isDirectory()?null:candidate}function getStaticDirectory(root,requestPath){let pathname;try{pathname=decodeURIComponent(requestPath)}catch{return null}let candidate=path.resolve(root,`.${pathname}`),relative=path.relative(root,candidate);return relative.startsWith("..")||path.isAbsolute(relative)||!existsSync(candidate)?null:lstatSync(candidate).isDirectory()?candidate:null}function escapeHtml(value){return String(value).replace(/[&<>"']/g,character=>({"&":"&","<":"<",">":">",'"':""","'":"'"})[character])}function joinPublicPath(basePath,localPath){return basePath==="/"?localPath:`${basePath}${localPath==="/"?"/":localPath}`.replace(/\/+/g,"/")}async function getDirectoryIndexData(directoryPath,requestPath,showHidden,basePath){let entries=await fsPromises.readdir(directoryPath,{withFileTypes:!0}),hiddenNames=await getDirectoryHiddenNames(directoryPath,entries.map(entry=>entry.name),{osHidden:osHiddenEnabled}),visibleEntries=entries.map(entry=>({entry,hidden:hiddenNames.has(entry.name)})).filter(item=>showHidden||!item.hidden);visibleEntries.sort((left,right)=>left.entry.isDirectory()!==right.entry.isDirectory()?left.entry.isDirectory()?-1:1:left.entry.name.localeCompare(right.entry.name));let decodedPath=decodeURIComponent(requestPath),normalizedPath=decodedPath==="/"?"/":`/${decodedPath.replace(/^\/+|\/+$/g,"")}/`,parentPath=normalizedPath==="/"?null:normalizedPath.split("/").slice(0,-2).join("/")||"/";return{currentPath:normalizedPath,parentPath,basePath,showHidden,entries:visibleEntries.map(({entry,hidden})=>({name:entry.name,isDirectory:entry.isDirectory(),isHidden:hidden}))}}function encodeDirectoryPath(directoryPath){return directoryPath==="/"?"/":`/${directoryPath.split("/").filter(Boolean).map(segment=>encodeURIComponent(segment)).join("/")}/`}function renderDirectoryIndex(data){let normalizedPath=data.currentPath,publicCurrentPath=joinPublicPath(data.basePath,normalizedPath),publicParentPath=data.parentPath?joinPublicPath(data.basePath,data.parentPath):null,encodedDirectoryPath=encodeDirectoryPath(publicCurrentPath),encodedApplicationRootPath=encodeDirectoryPath(joinPublicPath(data.basePath,"/")),withVisibility=url=>data.showHidden?`${url}?showHidden=1`:url,breadcrumbParts=normalizedPath.split("/").filter(Boolean),breadcrumbPath="",breadcrumb=[`<a href="${withVisibility(encodedApplicationRootPath)}">\u6839\u76EE\u5F55</a>`,...breadcrumbParts.map(part=>(breadcrumbPath+=`/${part}`,`<a href="${withVisibility(encodeDirectoryPath(joinPublicPath(data.basePath,breadcrumbPath)))}">${escapeHtml(part)}</a>`))].join('<span aria-hidden="true"> / </span>'),items=data.entries.map(entry=>{let suffix=entry.isDirectory?"/":"",href=`${encodedDirectoryPath}${encodeURIComponent(entry.name)}${suffix}`.replace(/\/+/g,"/"),target=entry.isDirectory?withVisibility(href):href;return`<li${entry.isHidden?' class="is-hidden"':""}><a href="${target}">${entry.isDirectory?"\u{1F4C1}":"\u{1F4C4}"} ${escapeHtml(entry.name)}${suffix}</a></li>`}).join(""),parent=data.parentPath?`<p id="directoryParent"><a href="${withVisibility(encodeDirectoryPath(publicParentPath))}">\u2190 \u8FD4\u56DE\u4E0A\u7EA7</a></p>`:'<p id="directoryParent" hidden></p>',visibilityToggle=`<a class="visibility-toggle" href="${data.showHidden?encodedDirectoryPath:`${encodedDirectoryPath}?showHidden=1`}">${data.showHidden?"\u9690\u85CF\u9690\u85CF\u9879\u76EE":"\u663E\u793A\u9690\u85CF\u9879\u76EE"}</a>`;return`<!doctype html><html lang="zh-CN"><head><meta charset="utf-8"><link rel="icon" type="image/svg+xml" href="${STATIC_FAVICON_PATH}"><title>\u76EE\u5F55\u7D22\u5F15 ${escapeHtml(publicCurrentPath)}</title><style>body{font:14px system-ui,sans-serif;margin:32px;max-width:900px}a{color:#2563eb;text-decoration:none}a:hover{text-decoration:underline}.directory-header{display:flex;align-items:center;gap:12px;margin:12px 0;flex-wrap:wrap}.directory-header h1{font-size:20px;margin:0}.directory-header nav{color:#4b5563;min-width:0;flex:1;overflow-wrap:anywhere}.directory-header nav span{padding:0 5px;color:#9ca3af}.visibility-toggle{color:#374151;border:1px solid #d1d5db;border-radius:4px;background:#f9fafb;padding:5px 8px;white-space:nowrap}.visibility-toggle:hover{background:#f3f4f6;text-decoration:none}.is-hidden{opacity:.55}ul{list-style:none;padding:0}li{padding:7px 0;border-bottom:1px solid #eee}</style></head><body><header class="directory-header"><h1>\u76EE\u5F55\u7D22\u5F15</h1><nav aria-label="\u8DEF\u5F84\u5BFC\u822A">${breadcrumb}</nav>${visibilityToggle}</header>${parent}<ul>${items||"<li>\uFF08\u7A7A\u76EE\u5F55\uFF09</li>"}</ul></body></html>`}function getLiveReloadClient(config){let delay=JSON.stringify(config.watch.delay),fullReload=JSON.stringify(config.watch.fullReload);return`(function(){const delay=${delay};const fullReload=${fullReload};let source;let timer;const dispose=function(){clearTimeout(timer);if(source){source.close();source=null}};const connect=function(){if(source)return;source=new EventSource('${LIVE_RELOAD_PATH}');source.onmessage=function(event){let change;try{change=JSON.parse(event.data)}catch(_){return}clearTimeout(timer);timer=setTimeout(function(){if(!fullReload&&change.type==='css'){const target=new URL(change.path,location.href).pathname;let updated=false;document.querySelectorAll('link[rel~="stylesheet"][href]').forEach(function(link){if(new URL(link.href,location.href).pathname===target){const url=new URL(link.href,location.href);url.searchParams.set('mock-service-cli-reload',Date.now());link.href=url.href;updated=true}});if(updated)return}location.reload()},delay)}};window.addEventListener('pagehide',dispose);window.addEventListener('pageshow',connect);connect()})();`}function injectLiveReload(html,config){if(!/<link\b[^>]*\brel\s*=\s*["'][^"']*\bicon\b[^"']*["'][^>]*>/i.test(html)){let favicon=`<link rel="icon" type="image/svg+xml" href="${STATIC_FAVICON_PATH}">`,headIndex=html.toLowerCase().lastIndexOf("</head>");html=headIndex===-1?`${favicon}${html}`:`${html.slice(0,headIndex)}${favicon}${html.slice(headIndex)}`}if(config.watch.enabled===!1)return html;let script=`<script src="${LIVE_RELOAD_CLIENT_PATH}" data-mock-service-cli-live-reload="true"></script>`,closingTag=config.injectTag==="head"?"</head>":"</body>",index=html.toLowerCase().lastIndexOf(closingTag);return index===-1?`${html}${script}`:`${html.slice(0,index)}${script}${html.slice(index)}`}function openBrowser(url,browser){if(!browser||browser===!1)return;let command,args;if(isPlainObject(browser)){if(typeof browser.command!="string"||!browser.command)return;command=browser.command,args=Array.isArray(browser.args)?browser.args.map(String):[],args.push(url)}else browser!=="default"?(command=String(browser),args=[url]):process.platform==="darwin"?(command="open",args=[url]):process.platform==="win32"?(command="cmd",args=["/c","start","",url]):(command="xdg-open",args=[url]);spawn(command,args,{detached:!0,stdio:"ignore"}).unref()}function createStaticServer(config){let app=express(),cliHeaders=parseHeaderList(argv.A||argv["append-headers"]),clients=new Set,watchers=[],pendingChanges=[],reloadTimer=null,closing=!1,pendingLogWrites=new Set,applications=config.mounts.map(mount=>({...mount,basePath:mount.path})),rootApplication=applications.find(application=>application.basePath==="/"&&application.directory),root=rootApplication?rootApplication.directory:null;app.use(hostAllowlistMiddleware()),app.use((req,res,next)=>{Object.entries(cliHeaders).forEach(([key,value])=>res.setHeader(key,String(value))),next()});function applyApplicationOptions(application){return(req,res,next)=>(Object.entries({...application.headers,...cliHeaders}).forEach(([key,value])=>res.setHeader(key,String(value))),application.cors&&(res.setHeader("Access-Control-Allow-Origin","*"),res.setHeader("Access-Control-Allow-Methods","GET,HEAD,OPTIONS"),res.setHeader("Access-Control-Allow-Headers","*"),req.method==="OPTIONS")?res.status(204).end():next())}function writeAccessLog(application,req,res){if(!application.accessLog)return;let logFile=res.statusCode>=400?application.accessLog.failure:application.accessLog.success;if(!logFile)return;let entry=`${JSON.stringify({timestamp:new Date().toISOString(),application:application.basePath,method:req.method,url:req.originalUrl||req.url,status:res.statusCode})}
|
|
296
|
+
Enable proxy at web server on:`)),Object.keys(proxyTable).forEach(prefix=>{console.info(` ${prefix} -> ${proxyTable[prefix]}`)}))}))}function closeServer(server){return new Promise(resolve=>{if(!server||!server.listening)return resolve();server.close(()=>resolve()),typeof server.closeAllConnections=="function"&&server.closeAllConnections()})}async function shutdown(){if(!shuttingDown){shuttingDown=!0;try{socketServer?(await socketServer.close(),socketServer=null):await closeServer(httpServer),await closeServer(webServer)}finally{log.info(colors.red("mock-server process stopped.")),process.exit()}}}process.platform==="win32"&&require("readline").createInterface({input:process.stdin,output:process.stdout}).on("SIGINT",function(){process.emit("SIGINT")});process.once("SIGINT",shutdown);process.once("SIGTERM",shutdown);module2.exports={composeRouteFromJsFile,parseMockFiles}}});var require_staticServer=__commonJS({"src/lib/staticServer.js"(exports2,module2){var express=require_express2(),{closeSync,existsSync,lstatSync,openSync,promises:fsPromises,readFileSync,readSync}=require("fs"),path=require("path"),http=require("http"),https=require("https"),mime=require_mime(),{spawn}=require("child_process"),chokidar=require("chokidar"),{createProxyMiddleware}=require_dist2(),colors=require_safe(),portfinder=require_portfinder(),{shouldExitImmediatelyOnShutdown}=require_processShutdown(),{dateFormat,logger,getServerHost,getServerUrls,hostAllowlistMiddleware,getDirectoryHiddenNames}=require_utils4(),log=logger(process.env.SILENT),argv=JSON.parse(process.env.ARGV),osHiddenEnabled=process.env.OS_HIDDEN_ENABLED==="true"||process.env.OS_HIDDEN_ENABLED==="1",LIVE_RELOAD_PATH="/__mock-service-cli/live-reload",LIVE_RELOAD_CLIENT_PATH="/__mock-service-cli/live-reload.js",STATIC_FAVICON_PATH="/__mock-service-cli/favicon.svg",TEXT_SAMPLE_SIZE=8192;function isPlainObject(value){return!!value&&typeof value=="object"&&!Array.isArray(value)}function detectTextCharset(filePath,stats){if(stats.size===0)return"utf-8";let buffer=Buffer.allocUnsafe(Math.min(stats.size,TEXT_SAMPLE_SIZE)),fileDescriptor;try{fileDescriptor=openSync(filePath,"r");let bytesRead=readSync(fileDescriptor,buffer,0,buffer.length,0),sample=buffer.subarray(0,bytesRead);if(sample[0]===255&&sample[1]===254)return"utf-16le";if(sample[0]===254&&sample[1]===255)return"utf-16be";for(let byte of sample)if(byte===0||byte<9||byte>13&&byte<32)return null;return new TextDecoder("utf-8",{fatal:!0}).decode(sample),"utf-8"}catch{return null}finally{fileDescriptor!==void 0&&closeSync(fileDescriptor)}}function setStaticHeaders(res,filePath,stats){res.setHeader("Content-Disposition","inline");let contentType=mime.lookup(filePath);if(!contentType||contentType==="application/octet-stream"){let charset=detectTextCharset(filePath,stats);charset&&res.setHeader("Content-Type",`text/plain; charset=${charset}`)}}function parseHeaderList(value){return typeof value!="string"?{}:value.split(/\s*,\s*/).reduce((headers,item)=>{let separator=item.indexOf("=");return separator<=0||(headers[item.slice(0,separator).trim()]=item.slice(separator+1).trim()),headers},{})}function parseProxyOptions(){if(!process.env.PROXY_OPTIONS)return{};try{let value=JSON.parse(process.env.PROXY_OPTIONS);return isPlainObject(value)?value:{}}catch(error){throw new Error(`Invalid proxy options: ${error.message}`)}}function normalizePublicPath(value,label,allowEmptyRoot){if(typeof value!="string")throw new Error(`${label} must be a path`);if(!value&&allowEmptyRoot)return"/";if(!value)throw new Error(`${label} must be a non-empty path`);let normalized="/"+value.replace(/^\/+|\/+$/g,"");if(normalized!=="/"&&(normalized.includes("..")||normalized.includes("?")||normalized.includes("#")))throw new Error(`${label} must be a root-relative path`);return normalized}function normalizeAccessLog(value,label,configDir){if(value===void 0)return null;if(!isPlainObject(value))throw new Error(`${label}.accessLog must be an object`);let accessLog={};if(["success","failure"].forEach(name=>{if(value[name]!==void 0){if(typeof value[name]!="string"||!value[name])throw new Error(`${label}.accessLog.${name} must be a file path`);accessLog[name]=path.resolve(configDir,value[name])}}),Object.keys(accessLog).length===0)throw new Error(`${label}.accessLog requires success or failure`);return accessLog}function normalizeRequestHeaders(value,label){if(value===void 0)return{};if(!isPlainObject(value))throw new Error(`${label} must be an object`);return Object.entries(value).reduce((headers,[name,headerValue])=>{if(!name||headerValue===null||typeof headerValue=="object")throw new Error(`${label}.${name} must be a primitive value`);return headers[name]=String(headerValue),headers},{})}function normalizeApplicationOptions(value,label,configDir){if(value.cors!==void 0&&typeof value.cors!="boolean")throw new Error(`${label}.cors must be boolean`);if(value.headers!==void 0&&!isPlainObject(value.headers))throw new Error(`${label}.headers must be an object`);if(value.secure!==void 0&&typeof value.secure!="boolean")throw new Error(`${label}.secure must be boolean`);return{cors:value.cors===!0,headers:isPlainObject(value.headers)?value.headers:{},secure:value.secure===!0,requestHeaders:normalizeRequestHeaders(value.requestHeaders,`${label}.requestHeaders`),accessLog:normalizeAccessLog(value.accessLog,label,configDir)}}function normalizeSpaFallback(value,directory,label){if(value===void 0||value===!1)return!1;if(typeof value!="string"||!value||!value.startsWith("/")||value.includes(".."))throw new Error(`${label} must be a root-relative path`);if(!directory)throw new Error(`${label} requires an application directory`);let fallbackPath=getStaticPath(directory,value);if(!fallbackPath||!/\.html?$/i.test(fallbackPath))throw new Error(`${label} does not exist: ${value}`);return value}function normalizeProxyTable(value,label,allowStringValues){if(value===void 0)return{};if(!isPlainObject(value))throw new Error(`${label} must be an object`);return Object.entries(value).reduce((table,[prefix,rule])=>{let normalizedPrefix=normalizePublicPath(prefix,`${label} route`);if(Object.prototype.hasOwnProperty.call(table,normalizedPrefix))throw new Error(`Duplicate proxy route: ${normalizedPrefix}`);let target=rule,rewrite=!1,requestHeaders={};if(isPlainObject(rule)){if(target=rule.target,rewrite=rule.rewrite===!0,requestHeaders=normalizeRequestHeaders(rule.requestHeaders,`${label}[${prefix}].requestHeaders`),rule.rewrite!==void 0&&typeof rule.rewrite!="boolean")throw new Error(`${label}[${prefix}].rewrite must be boolean`)}else if(!allowStringValues||typeof rule!="string")throw new Error(`${label}[${prefix}] must contain target and rewrite`);if(typeof target!="string"||!/^https?:\/\//.test(target))throw new Error(`Invalid proxy target for ${prefix}`);return table[normalizedPrefix]={target,rewrite,requestHeaders},table},{})}function hasPathPrefix(prefix,requestPath){return prefix==="/"||requestPath===prefix||requestPath.startsWith(`${prefix}/`)}function validateMountPaths(mounts){if(mounts.filter(mount=>mount.path==="/").length>1)throw new Error("mounts can only contain one root path");let nonRootMounts=mounts.filter(mount=>mount.path!=="/");nonRootMounts.forEach((mount,index)=>{nonRootMounts.forEach((other,otherIndex)=>{if(index!==otherIndex&&hasPathPrefix(mount.path,other.path))throw new Error(`mounts paths cannot overlap: ${mount.path} and ${other.path}`)})})}function isTransientWatchError(error){let code=error&&error.code;return["EBUSY","EPERM","EACCES","ENOENT","ENOTDIR"].includes(code)}function readWatchEnabledEnv(){if(process.env.WATCH_ENABLED!==void 0)return process.env.WATCH_ENABLED==="true"||process.env.WATCH_ENABLED==="1"}function normalizeConfig(){let defaults={open:!1,browser:"default",watch:{enabled:!1,ignore:["**/node_modules/**","**/.git/**"],delay:100,fullReload:!1,depth:void 0,interval:250},injectTag:"body",https:!1};if(process.env.WATCH_DEPTH!==void 0){let cliDepth=Number(process.env.WATCH_DEPTH);if(!Number.isInteger(cliDepth)||cliDepth<0)throw new Error("watch.depth must be a non-negative integer")}if(process.env.WATCH_INTERVAL!==void 0){let cliInterval=Number(process.env.WATCH_INTERVAL);if(!Number.isInteger(cliInterval)||cliInterval<1)throw new Error("watch.interval must be a positive integer")}let cliWatchEnabled=readWatchEnabledEnv(),cliWatchInterval=process.env.WATCH_INTERVAL===void 0?void 0:Number(process.env.WATCH_INTERVAL),cliDirectory=process.env.STATIC_DIRECTORY?path.resolve(process.env.STATIC_DIRECTORY):null;if(process.env.STATIC_CONFIG&&argv["spa-fallback"]!==void 0)throw new Error("--spa-fallback cannot be used with --static-config");let cliSpaFallback=process.env.STATIC_CONFIG?!1:normalizeSpaFallback(argv["spa-fallback"],cliDirectory,"spaFallback");if(!process.env.STATIC_CONFIG){if(!cliDirectory)throw new Error("Static server requires -R <directory> or --static-config <file>");if(!existsSync(cliDirectory)||!lstatSync(cliDirectory).isDirectory())throw new Error(`static-server: directory does not exist: ${cliDirectory}`);let cliProxy=normalizeProxyTable(parseProxyOptions(),"proxy",!0);return(argv.r||argv.rewrite)&&Object.values(cliProxy).forEach(rule=>rule.rewrite=!0),{...defaults,open:process.env.OPEN_API_OVERVIEW?!0:defaults.open,watch:{...defaults.watch,enabled:cliWatchEnabled===void 0?defaults.watch.enabled:cliWatchEnabled,interval:cliWatchInterval===void 0?defaults.watch.interval:cliWatchInterval,depth:process.env.WATCH_DEPTH===void 0?void 0:Number(process.env.WATCH_DEPTH)},configDir:process.cwd(),mounts:[{path:"/",directory:cliDirectory,spaFallback:cliSpaFallback,proxy:cliProxy,cors:!1,headers:{},secure:!1,requestHeaders:{},accessLog:null}]}}let configPath=path.resolve(process.env.STATIC_CONFIG),supplied;try{supplied=JSON.parse(readFileSync(configPath,"utf8"))}catch(error){throw new Error(`Unable to read static config: ${error.message}`)}if(!isPlainObject(supplied))throw new Error("Static config must contain a JSON object");let configDir=path.dirname(configPath),watch=isPlainObject(supplied.watch)?supplied.watch:{};if(watch.enabled!==void 0&&typeof watch.enabled!="boolean")throw new Error("watch.enabled must be boolean");if(watch.interval!==void 0&&(!Number.isInteger(watch.interval)||watch.interval<1))throw new Error("watch.interval must be a positive integer");let depthValue=process.env.WATCH_DEPTH!==void 0?Number(process.env.WATCH_DEPTH):watch.depth;if(depthValue!==void 0&&(!Number.isInteger(depthValue)||depthValue<0))throw new Error("watch.depth must be a non-negative integer");let enabledValue=cliWatchEnabled===void 0?watch.enabled===void 0?defaults.watch.enabled:watch.enabled:cliWatchEnabled,intervalValue=cliWatchInterval===void 0?watch.interval===void 0?defaults.watch.interval:watch.interval:cliWatchInterval;if(process.env.PROXY_OPTIONS)throw new Error("--proxy-options/--rewrite cannot be used with --static-config");let suppliedRootField=["directory","spaFallback","proxy","cors","headers","secure","requestHeaders","accessLog"].find(field=>supplied[field]!==void 0);if(suppliedRootField)throw new Error(`${suppliedRootField} must be declared on a mount in static config`);let mounts=supplied.mounts===void 0?[]:supplied.mounts;if(!Array.isArray(mounts))throw new Error("mounts must be an array");if(mounts.length===0)throw new Error("Static config requires at least one mount");let normalizedMounts=mounts.map((mount,index)=>{if(!isPlainObject(mount))throw new Error(`mounts[${index}] must be an object`);let mountPath=mount.path===void 0?"/":normalizePublicPath(mount.path,`mounts[${index}].path`,!0);if(mount.directory!==void 0&&typeof mount.directory!="string")throw new Error(`mounts[${index}].directory must be a string`);let directory=mount.directory===void 0?null:path.resolve(configDir,mount.directory);if(directory&&(!existsSync(directory)||!lstatSync(directory).isDirectory()))throw new Error(`Mount directory does not exist: ${directory}`);let normalizedMount={path:mountPath,directory,spaFallback:normalizeSpaFallback(mount.spaFallback,directory,`mounts[${index}].spaFallback`),proxy:normalizeProxyTable(mount.proxy,`mounts[${index}].proxy`,!1),...normalizeApplicationOptions(mount,`mounts[${index}]`,configDir)};if(!normalizedMount.directory&&Object.keys(normalizedMount.proxy).length===0)throw new Error(`mounts[${index}] requires directory or proxy`);if(normalizedMount.accessLog&&!normalizedMount.spaFallback)throw new Error(`mounts[${index}].accessLog requires spaFallback`);return normalizedMount});validateMountPaths(normalizedMounts);let httpsConfig=supplied.https,normalizedHttps=!1;if(httpsConfig===!0)throw new Error("https requires cert and key paths");if(isPlainObject(httpsConfig)&&httpsConfig.enable!==!1){if(typeof httpsConfig.cert!="string"||typeof httpsConfig.key!="string")throw new Error("https requires cert and key paths");normalizedHttps={cert:path.resolve(configDir,httpsConfig.cert),key:path.resolve(configDir,httpsConfig.key),passphrase:typeof httpsConfig.passphrase=="string"?httpsConfig.passphrase:void 0}}return{...defaults,open:process.env.OPEN_API_OVERVIEW?supplied.open||!0:supplied.open===void 0?defaults.open:supplied.open,browser:supplied.browser===void 0?defaults.browser:supplied.browser,configDir,watch:{enabled:enabledValue,ignore:Array.isArray(watch.ignore)?watch.ignore:defaults.watch.ignore,delay:Number.isFinite(watch.delay)&&watch.delay>=0?watch.delay:defaults.watch.delay,fullReload:watch.fullReload===!0,depth:depthValue,interval:intervalValue},injectTag:supplied.injectTag==="head"?"head":"body",mounts:normalizedMounts,https:normalizedHttps}}function getStaticPath(root,requestPath){let pathname;try{pathname=decodeURIComponent(requestPath)}catch{return null}let candidate=path.resolve(root,`.${pathname}`),relative=path.relative(root,candidate);return relative.startsWith("..")||path.isAbsolute(relative)||!existsSync(candidate)||lstatSync(candidate).isDirectory()?null:candidate}function getStaticDirectory(root,requestPath){let pathname;try{pathname=decodeURIComponent(requestPath)}catch{return null}let candidate=path.resolve(root,`.${pathname}`),relative=path.relative(root,candidate);return relative.startsWith("..")||path.isAbsolute(relative)||!existsSync(candidate)?null:lstatSync(candidate).isDirectory()?candidate:null}function escapeHtml(value){return String(value).replace(/[&<>"']/g,character=>({"&":"&","<":"<",">":">",'"':""","'":"'"})[character])}function joinPublicPath(basePath,localPath){return basePath==="/"?localPath:`${basePath}${localPath==="/"?"/":localPath}`.replace(/\/+/g,"/")}async function getDirectoryIndexData(directoryPath,requestPath,showHidden,basePath){let entries=await fsPromises.readdir(directoryPath,{withFileTypes:!0}),hiddenNames=await getDirectoryHiddenNames(directoryPath,entries.map(entry=>entry.name),{osHidden:osHiddenEnabled}),visibleEntries=entries.map(entry=>({entry,hidden:hiddenNames.has(entry.name)})).filter(item=>showHidden||!item.hidden);visibleEntries.sort((left,right)=>left.entry.isDirectory()!==right.entry.isDirectory()?left.entry.isDirectory()?-1:1:left.entry.name.localeCompare(right.entry.name));let decodedPath=decodeURIComponent(requestPath),normalizedPath=decodedPath==="/"?"/":`/${decodedPath.replace(/^\/+|\/+$/g,"")}/`,parentPath=normalizedPath==="/"?null:normalizedPath.split("/").slice(0,-2).join("/")||"/";return{currentPath:normalizedPath,parentPath,basePath,showHidden,entries:visibleEntries.map(({entry,hidden})=>({name:entry.name,isDirectory:entry.isDirectory(),isHidden:hidden}))}}function encodeDirectoryPath(directoryPath){return directoryPath==="/"?"/":`/${directoryPath.split("/").filter(Boolean).map(segment=>encodeURIComponent(segment)).join("/")}/`}function renderDirectoryIndex(data){let normalizedPath=data.currentPath,publicCurrentPath=joinPublicPath(data.basePath,normalizedPath),publicParentPath=data.parentPath?joinPublicPath(data.basePath,data.parentPath):null,encodedDirectoryPath=encodeDirectoryPath(publicCurrentPath),encodedApplicationRootPath=encodeDirectoryPath(joinPublicPath(data.basePath,"/")),withVisibility=url=>data.showHidden?`${url}?showHidden=1`:url,breadcrumbParts=normalizedPath.split("/").filter(Boolean),breadcrumbPath="",breadcrumb=[`<a href="${withVisibility(encodedApplicationRootPath)}">\u6839\u76EE\u5F55</a>`,...breadcrumbParts.map(part=>(breadcrumbPath+=`/${part}`,`<a href="${withVisibility(encodeDirectoryPath(joinPublicPath(data.basePath,breadcrumbPath)))}">${escapeHtml(part)}</a>`))].join('<span aria-hidden="true"> / </span>'),items=data.entries.map(entry=>{let suffix=entry.isDirectory?"/":"",href=`${encodedDirectoryPath}${encodeURIComponent(entry.name)}${suffix}`.replace(/\/+/g,"/"),target=entry.isDirectory?withVisibility(href):href;return`<li${entry.isHidden?' class="is-hidden"':""}><a href="${target}">${entry.isDirectory?"\u{1F4C1}":"\u{1F4C4}"} ${escapeHtml(entry.name)}${suffix}</a></li>`}).join(""),parent=data.parentPath?`<p id="directoryParent"><a href="${withVisibility(encodeDirectoryPath(publicParentPath))}">\u2190 \u8FD4\u56DE\u4E0A\u7EA7</a></p>`:'<p id="directoryParent" hidden></p>',visibilityToggle=`<a class="visibility-toggle" href="${data.showHidden?encodedDirectoryPath:`${encodedDirectoryPath}?showHidden=1`}" title="${data.showHidden?"\u4E0D\u663E\u793A\u9690\u85CF\u9879\u76EE":"\u663E\u793A\u9690\u85CF\u9879\u76EE"}">${data.showHidden?"\u4E0D\u663E\u793A\u9690\u85CF\u9879\u76EE":"\u663E\u793A\u9690\u85CF\u9879\u76EE"}</a>`;return`<!doctype html><html lang="zh-CN"><head><meta charset="utf-8"><link rel="icon" type="image/svg+xml" href="${STATIC_FAVICON_PATH}"><title>\u76EE\u5F55\u7D22\u5F15 ${escapeHtml(publicCurrentPath)}</title><style>body{font:14px system-ui,sans-serif;margin:32px;max-width:900px}a{color:#2563eb;text-decoration:none}a:hover{text-decoration:underline}.directory-header{display:flex;align-items:center;gap:12px;margin:12px 0;flex-wrap:wrap}.directory-header h1{font-size:20px;margin:0}.directory-header nav{color:#4b5563;min-width:0;flex:1;overflow-wrap:anywhere}.directory-header nav span{padding:0 5px;color:#9ca3af}.visibility-toggle{color:#374151;border:1px solid #d1d5db;border-radius:4px;background:#f9fafb;padding:5px 8px;white-space:nowrap}.visibility-toggle:hover{background:#f3f4f6;text-decoration:none}.is-hidden{opacity:.55}ul{list-style:none;padding:0}li{padding:7px 0;border-bottom:1px solid #eee}</style></head><body><header class="directory-header"><h1>\u76EE\u5F55\u7D22\u5F15</h1><nav aria-label="\u8DEF\u5F84\u5BFC\u822A">${breadcrumb}</nav>${visibilityToggle}</header>${parent}<ul>${items||"<li>\uFF08\u7A7A\u76EE\u5F55\uFF09</li>"}</ul></body></html>`}function getLiveReloadClient(config){let delay=JSON.stringify(config.watch.delay),fullReload=JSON.stringify(config.watch.fullReload);return`(function(){const delay=${delay};const fullReload=${fullReload};let source;let timer;const dispose=function(){clearTimeout(timer);if(source){source.close();source=null}};const connect=function(){if(source)return;source=new EventSource('${LIVE_RELOAD_PATH}');source.onmessage=function(event){let change;try{change=JSON.parse(event.data)}catch(_){return}clearTimeout(timer);timer=setTimeout(function(){if(!fullReload&&change.type==='css'){const target=new URL(change.path,location.href).pathname;let updated=false;document.querySelectorAll('link[rel~="stylesheet"][href]').forEach(function(link){if(new URL(link.href,location.href).pathname===target){const url=new URL(link.href,location.href);url.searchParams.set('mock-service-cli-reload',Date.now());link.href=url.href;updated=true}});if(updated)return}location.reload()},delay)}};window.addEventListener('pagehide',dispose);window.addEventListener('pageshow',connect);connect()})();`}function injectLiveReload(html,config){if(!/<link\b[^>]*\brel\s*=\s*["'][^"']*\bicon\b[^"']*["'][^>]*>/i.test(html)){let favicon=`<link rel="icon" type="image/svg+xml" href="${STATIC_FAVICON_PATH}">`,headIndex=html.toLowerCase().lastIndexOf("</head>");html=headIndex===-1?`${favicon}${html}`:`${html.slice(0,headIndex)}${favicon}${html.slice(headIndex)}`}if(config.watch.enabled===!1)return html;let script=`<script src="${LIVE_RELOAD_CLIENT_PATH}" data-mock-service-cli-live-reload="true"></script>`,closingTag=config.injectTag==="head"?"</head>":"</body>",index=html.toLowerCase().lastIndexOf(closingTag);return index===-1?`${html}${script}`:`${html.slice(0,index)}${script}${html.slice(index)}`}function openBrowser(url,browser){if(!browser||browser===!1)return;let command,args;if(isPlainObject(browser)){if(typeof browser.command!="string"||!browser.command)return;command=browser.command,args=Array.isArray(browser.args)?browser.args.map(String):[],args.push(url)}else browser!=="default"?(command=String(browser),args=[url]):process.platform==="darwin"?(command="open",args=[url]):process.platform==="win32"?(command="cmd",args=["/c","start","",url]):(command="xdg-open",args=[url]);spawn(command,args,{detached:!0,stdio:"ignore"}).unref()}function createStaticServer(config){let app=express(),cliHeaders=parseHeaderList(argv.A||argv["append-headers"]),clients=new Set,watchers=[],pendingChanges=[],reloadTimer=null,closing=!1,pendingLogWrites=new Set,applications=config.mounts.map(mount=>({...mount,basePath:mount.path})),rootApplication=applications.find(application=>application.basePath==="/"&&application.directory),root=rootApplication?rootApplication.directory:null;app.use(hostAllowlistMiddleware()),app.use((req,res,next)=>{Object.entries(cliHeaders).forEach(([key,value])=>res.setHeader(key,String(value))),next()});function applyApplicationOptions(application){return(req,res,next)=>(Object.entries({...application.headers,...cliHeaders}).forEach(([key,value])=>res.setHeader(key,String(value))),application.cors&&(res.setHeader("Access-Control-Allow-Origin","*"),res.setHeader("Access-Control-Allow-Methods","GET,HEAD,OPTIONS"),res.setHeader("Access-Control-Allow-Headers","*"),req.method==="OPTIONS")?res.status(204).end():next())}function writeAccessLog(application,req,res){if(!application.accessLog)return;let logFile=res.statusCode>=400?application.accessLog.failure:application.accessLog.success;if(!logFile)return;let entry=`${JSON.stringify({timestamp:new Date().toISOString(),application:application.basePath,method:req.method,url:req.originalUrl||req.url,status:res.statusCode})}
|
|
294
297
|
`,write=fsPromises.mkdir(path.dirname(logFile),{recursive:!0}).then(()=>fsPromises.appendFile(logFile,entry,"utf8")).catch(error=>log.info(colors.red(`static-server access log failed: ${error.message}`)));pendingLogWrites.add(write),write.finally(()=>pendingLogWrites.delete(write))}function createAccessLogMiddleware(application){return application.accessLog?(req,res,next)=>{res.once("finish",()=>writeAccessLog(application,req,res)),next()}:(_req,_res,next)=>next()}app.get(LIVE_RELOAD_PATH,(req,res)=>{res.status(200).set({"Content-Type":"text/event-stream","Cache-Control":"no-cache, no-transform",Connection:"keep-alive"}),res.flushHeaders(),res.write(`retry: 1000
|
|
295
298
|
|
|
296
299
|
`),clients.add(res);let removeClient=()=>clients.delete(res);req.once("close",removeClient),res.once("close",removeClient)}),app.get(LIVE_RELOAD_CLIENT_PATH,(req,res)=>{res.type("application/javascript").set("Cache-Control","no-store").send(getLiveReloadClient(config))}),app.get(STATIC_FAVICON_PATH,(req,res)=>{res.sendFile(path.resolve(__dirname,"./favicon-static-server.svg"))});let proxyRoutes=[],proxyOwners=new Map;applications.forEach(application=>{Object.entries(application.proxy||{}).forEach(([prefix,rule])=>{if(proxyOwners.has(prefix))throw new Error(`Duplicate proxy route: ${prefix}`);proxyOwners.set(prefix,application.basePath),proxyRoutes.push({prefix,application,...rule})})}),proxyRoutes.sort((left,right)=>right.prefix.length-left.prefix.length),proxyRoutes.forEach(route=>{let pathRewrite=route.rewrite?requestPath=>route.prefix==="/"?requestPath:requestPath===route.prefix?"/":requestPath.startsWith(`${route.prefix}/`)?requestPath.slice(route.prefix.length)||"/":requestPath:void 0;app.use(route.prefix,applyApplicationOptions(route.application),createAccessLogMiddleware(route.application),createProxyMiddleware({target:route.target,changeOrigin:!0,ws:!0,secure:route.application.secure,headers:{...route.application.requestHeaders,...route.requestHeaders},pathRewrite}))});let sendHtml=async(filePath,res,next)=>{try{let html=await fsPromises.readFile(filePath,"utf8");res.type("html").send(injectLiveReload(html,config))}catch(error){next(error)}};function createApplicationRouter(application){let router=express.Router();if(router.use(applyApplicationOptions(application)),router.use(createAccessLogMiddleware(application)),router.get("*",async(req,res,next)=>{if(req.path.startsWith("/__mock-service-cli/"))return next();let filePath=getStaticPath(application.directory,req.path);if(filePath&&/\.html?$/i.test(filePath))return sendHtml(filePath,res,next);if(!application.spaFallback){let directoryPath=getStaticDirectory(application.directory,req.path);if(directoryPath)try{let data=await getDirectoryIndexData(directoryPath,req.path,req.query.showHidden==="1",application.basePath);return res.type("html").set("Cache-Control","no-store").send(injectLiveReload(renderDirectoryIndex(data),config))}catch(error){return next(error)}}next()}),router.use(express.static(application.directory,{dotfiles:"allow",index:!1,redirect:!1,setHeaders:setStaticHeaders})),application.spaFallback){let fallbackPath=getStaticPath(application.directory,application.spaFallback);if(!fallbackPath||!/\.html?$/i.test(fallbackPath))throw new Error(`SPA fallback does not exist: ${application.spaFallback}`);router.get("*",(req,res,next)=>{if(req.path.startsWith("/__mock-service-cli/"))return next();sendHtml(fallbackPath,res,next)})}return router}applications.filter(application=>application.basePath!=="/"&&application.directory).forEach(application=>{let router=createApplicationRouter(application);app.use(application.basePath,(req,res,next)=>{router.handle(req,res,error=>{if(error)return next(error);if(!res.headersSent)return res.status(404).send("Not Found")})})}),rootApplication&&app.use(createApplicationRouter(rootApplication)),app.use((req,res)=>res.status(404).send("Not Found")),app.use((error,req,res,_next)=>{log.info(colors.red(`static-server request failed: ${error.message}`)),res.status(500).send("Static server request failed")});function toUrlPath(changedPath){let mount=config.mounts.find(item=>{if(!item.directory)return!1;let relative=path.relative(item.directory,changedPath);return!relative.startsWith("..")&&!path.isAbsolute(relative)});if(mount){let relative=path.relative(mount.directory,changedPath).split(path.sep).join("/");return`${mount.path.replace(/\/$/,"")}/${relative}`.replace(/\/+/g,"/")}if(root){let rootRelative=path.relative(root,changedPath);if(!rootRelative.startsWith("..")&&!path.isAbsolute(rootRelative))return`/${rootRelative.split(path.sep).join("/")}`}return"/"}function notifyClients(){let changes=pendingChanges;pendingChanges=[];let cssOnly=changes.length>0&&changes.every(change=>/\.css$/i.test(change)),payload=JSON.stringify({type:!config.watch.fullReload&&cssOnly?"css":"reload",path:changes[0]||"/"});clients.forEach(client=>client.write(`data: ${payload}
|
|
@@ -302,11 +305,8 @@ Starting up Static Server, serving `),colors.cyan(instance.root||config.configDi
|
|
|
302
305
|
Static application proxy routes:
|
|
303
306
|
`)),instance.proxyRoutes.forEach(route=>{log.info(` ${colors.cyan(route.application.basePath)} ${colors.green(route.prefix)} -> ${colors.magenta(route.target)}${route.rewrite?colors.yellow(" (rewrite)"):""}`)})),config.open){let openPath=typeof config.open=="string"?config.open:"/";openBrowser(`${urls[0]}${openPath.startsWith("/")?openPath:`/${openPath}`}`,config.browser)}})}).catch(error=>{console.error(colors.red(`static-server watcher failed: ${error.message}`)),shutdown("SIGTERM")})}process.env.PORT?startServer():(portfinder.basePort=8090,portfinder.getPort((error,port)=>{if(error)throw error;process.env.PORT=port,startServer()}));module2.exports={normalizeConfig,createStaticServer}}});var require_utils9=__commonJS({"node_modules/busboy/lib/utils.js"(exports2,module2){"use strict";function parseContentType(str){if(str.length===0)return;let params=Object.create(null),i=0;for(;i<str.length;++i){let code=str.charCodeAt(i);if(TOKEN[code]!==1){if(code!==47||i===0)return;break}}if(i===str.length)return;let type=str.slice(0,i).toLowerCase(),subtypeStart=++i;for(;i<str.length;++i){let code=str.charCodeAt(i);if(TOKEN[code]!==1){if(i===subtypeStart||parseContentTypeParams(str,i,params)===void 0)return;break}}if(i===subtypeStart)return;let subtype=str.slice(subtypeStart,i).toLowerCase();return{type,subtype,params}}function parseContentTypeParams(str,i,params){for(;i<str.length;){for(;i<str.length;++i){let code=str.charCodeAt(i);if(code!==32&&code!==9)break}if(i===str.length)break;if(str.charCodeAt(i++)!==59)return;for(;i<str.length;++i){let code=str.charCodeAt(i);if(code!==32&&code!==9)break}if(i===str.length)return;let name,nameStart=i;for(;i<str.length;++i){let code=str.charCodeAt(i);if(TOKEN[code]!==1){if(code!==61)return;break}}if(i===str.length||(name=str.slice(nameStart,i),++i,i===str.length))return;let value="",valueStart;if(str.charCodeAt(i)===34){valueStart=++i;let escaping=!1;for(;i<str.length;++i){let code=str.charCodeAt(i);if(code===92){escaping?(valueStart=i,escaping=!1):(value+=str.slice(valueStart,i),escaping=!0);continue}if(code===34){if(escaping){valueStart=i,escaping=!1;continue}value+=str.slice(valueStart,i);break}if(escaping&&(valueStart=i-1,escaping=!1),QDTEXT[code]!==1)return}if(i===str.length)return;++i}else{for(valueStart=i;i<str.length;++i){let code=str.charCodeAt(i);if(TOKEN[code]!==1){if(i===valueStart)return;break}}value=str.slice(valueStart,i)}name=name.toLowerCase(),params[name]===void 0&&(params[name]=value)}return params}function parseDisposition(str,defDecoder){if(str.length===0)return;let params=Object.create(null),i=0;for(;i<str.length;++i){let code=str.charCodeAt(i);if(TOKEN[code]!==1){if(parseDispositionParams(str,i,params,defDecoder)===void 0)return;break}}return{type:str.slice(0,i).toLowerCase(),params}}function parseDispositionParams(str,i,params,defDecoder){for(;i<str.length;){for(;i<str.length;++i){let code=str.charCodeAt(i);if(code!==32&&code!==9)break}if(i===str.length)break;if(str.charCodeAt(i++)!==59)return;for(;i<str.length;++i){let code=str.charCodeAt(i);if(code!==32&&code!==9)break}if(i===str.length)return;let name,nameStart=i;for(;i<str.length;++i){let code=str.charCodeAt(i);if(TOKEN[code]!==1){if(code===61)break;return}}if(i===str.length)return;let value="",valueStart,charset;if(name=str.slice(nameStart,i),name.charCodeAt(name.length-1)===42){let charsetStart=++i;for(;i<str.length;++i){let code=str.charCodeAt(i);if(CHARSET[code]!==1){if(code!==39)return;break}}if(i===str.length)return;for(charset=str.slice(charsetStart,i),++i;i<str.length&&str.charCodeAt(i)!==39;++i);if(i===str.length||(++i,i===str.length))return;valueStart=i;let encode=0;for(;i<str.length;++i){let code=str.charCodeAt(i);if(EXTENDED_VALUE[code]!==1){if(code===37){let hexUpper,hexLower;if(i+2<str.length&&(hexUpper=HEX_VALUES[str.charCodeAt(i+1)])!==-1&&(hexLower=HEX_VALUES[str.charCodeAt(i+2)])!==-1){let byteVal=(hexUpper<<4)+hexLower;value+=str.slice(valueStart,i),value+=String.fromCharCode(byteVal),i+=2,valueStart=i+1,byteVal>=128?encode=2:encode===0&&(encode=1);continue}return}break}}if(value+=str.slice(valueStart,i),value=convertToUTF8(value,charset,encode),value===void 0)return}else{if(++i,i===str.length)return;if(str.charCodeAt(i)===34){valueStart=++i;let escaping=!1;for(;i<str.length;++i){let code=str.charCodeAt(i);if(code===92){escaping?(valueStart=i,escaping=!1):(value+=str.slice(valueStart,i),escaping=!0);continue}if(code===34){if(escaping){valueStart=i,escaping=!1;continue}value+=str.slice(valueStart,i);break}if(escaping&&(valueStart=i-1,escaping=!1),QDTEXT[code]!==1)return}if(i===str.length)return;++i}else{for(valueStart=i;i<str.length;++i){let code=str.charCodeAt(i);if(TOKEN[code]!==1){if(i===valueStart)return;break}}value=str.slice(valueStart,i)}if(value=defDecoder(value,2),value===void 0)return}name=name.toLowerCase(),params[name]===void 0&&(params[name]=value)}return params}function getDecoder(charset){let lc;for(;;)switch(charset){case"utf-8":case"utf8":return decoders.utf8;case"latin1":case"ascii":case"us-ascii":case"iso-8859-1":case"iso8859-1":case"iso88591":case"iso_8859-1":case"windows-1252":case"iso_8859-1:1987":case"cp1252":case"x-cp1252":return decoders.latin1;case"utf16le":case"utf-16le":case"ucs2":case"ucs-2":return decoders.utf16le;case"base64":return decoders.base64;default:if(lc===void 0){lc=!0,charset=charset.toLowerCase();continue}return decoders.other.bind(charset)}}var decoders={utf8:(data,hint)=>{if(data.length===0)return"";if(typeof data=="string"){if(hint<2)return data;data=Buffer.from(data,"latin1")}return data.utf8Slice(0,data.length)},latin1:(data,hint)=>data.length===0?"":typeof data=="string"?data:data.latin1Slice(0,data.length),utf16le:(data,hint)=>data.length===0?"":(typeof data=="string"&&(data=Buffer.from(data,"latin1")),data.ucs2Slice(0,data.length)),base64:(data,hint)=>data.length===0?"":(typeof data=="string"&&(data=Buffer.from(data,"latin1")),data.base64Slice(0,data.length)),other:(data,hint)=>{if(data.length===0)return"";typeof data=="string"&&(data=Buffer.from(data,"latin1"));try{return new TextDecoder(exports2).decode(data)}catch{}}};function convertToUTF8(data,charset,hint){let decode=getDecoder(charset);if(decode)return decode(data,hint)}function basename(path){if(typeof path!="string")return"";for(let i=path.length-1;i>=0;--i)switch(path.charCodeAt(i)){case 47:case 92:return path=path.slice(i+1),path===".."||path==="."?"":path}return path===".."||path==="."?"":path}var TOKEN=[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,1,1,1,1,1,0,0,1,1,0,1,1,0,1,1,1,1,1,1,1,1,1,1,0,0,0,0,0,0,0,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,0,0,0,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,0,1,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],QDTEXT=[0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,1,0,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,0,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,0,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1],CHARSET=[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,1,1,1,1,0,0,0,0,1,0,1,0,0,1,1,1,1,1,1,1,1,1,1,0,0,0,0,0,0,0,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,0,0,0,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,0,1,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],EXTENDED_VALUE=[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,1,1,0,1,0,0,0,0,1,0,1,1,0,1,1,1,1,1,1,1,1,1,1,0,0,0,0,0,0,0,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,0,0,0,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,0,1,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],HEX_VALUES=[-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,0,1,2,3,4,5,6,7,8,9,-1,-1,-1,-1,-1,-1,-1,10,11,12,13,14,15,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,10,11,12,13,14,15,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1];module2.exports={basename,convertToUTF8,getDecoder,parseContentType,parseDisposition}}});var require_sbmh=__commonJS({"node_modules/streamsearch/lib/sbmh.js"(exports2,module2){"use strict";function memcmp(buf1,pos1,buf2,pos2,num){for(let i=0;i<num;++i)if(buf1[pos1+i]!==buf2[pos2+i])return!1;return!0}var SBMH=class{constructor(needle,cb){if(typeof cb!="function")throw new Error("Missing match callback");if(typeof needle=="string")needle=Buffer.from(needle);else if(!Buffer.isBuffer(needle))throw new Error(`Expected Buffer for needle, got ${typeof needle}`);let needleLen=needle.length;if(this.maxMatches=1/0,this.matches=0,this._cb=cb,this._lookbehindSize=0,this._needle=needle,this._bufPos=0,this._lookbehind=Buffer.allocUnsafe(needleLen),this._occ=[needleLen,needleLen,needleLen,needleLen,needleLen,needleLen,needleLen,needleLen,needleLen,needleLen,needleLen,needleLen,needleLen,needleLen,needleLen,needleLen,needleLen,needleLen,needleLen,needleLen,needleLen,needleLen,needleLen,needleLen,needleLen,needleLen,needleLen,needleLen,needleLen,needleLen,needleLen,needleLen,needleLen,needleLen,needleLen,needleLen,needleLen,needleLen,needleLen,needleLen,needleLen,needleLen,needleLen,needleLen,needleLen,needleLen,needleLen,needleLen,needleLen,needleLen,needleLen,needleLen,needleLen,needleLen,needleLen,needleLen,needleLen,needleLen,needleLen,needleLen,needleLen,needleLen,needleLen,needleLen,needleLen,needleLen,needleLen,needleLen,needleLen,needleLen,needleLen,needleLen,needleLen,needleLen,needleLen,needleLen,needleLen,needleLen,needleLen,needleLen,needleLen,needleLen,needleLen,needleLen,needleLen,needleLen,needleLen,needleLen,needleLen,needleLen,needleLen,needleLen,needleLen,needleLen,needleLen,needleLen,needleLen,needleLen,needleLen,needleLen,needleLen,needleLen,needleLen,needleLen,needleLen,needleLen,needleLen,needleLen,needleLen,needleLen,needleLen,needleLen,needleLen,needleLen,needleLen,needleLen,needleLen,needleLen,needleLen,needleLen,needleLen,needleLen,needleLen,needleLen,needleLen,needleLen,needleLen,needleLen,needleLen,needleLen,needleLen,needleLen,needleLen,needleLen,needleLen,needleLen,needleLen,needleLen,needleLen,needleLen,needleLen,needleLen,needleLen,needleLen,needleLen,needleLen,needleLen,needleLen,needleLen,needleLen,needleLen,needleLen,needleLen,needleLen,needleLen,needleLen,needleLen,needleLen,needleLen,needleLen,needleLen,needleLen,needleLen,needleLen,needleLen,needleLen,needleLen,needleLen,needleLen,needleLen,needleLen,needleLen,needleLen,needleLen,needleLen,needleLen,needleLen,needleLen,needleLen,needleLen,needleLen,needleLen,needleLen,needleLen,needleLen,needleLen,needleLen,needleLen,needleLen,needleLen,needleLen,needleLen,needleLen,needleLen,needleLen,needleLen,needleLen,needleLen,needleLen,needleLen,needleLen,needleLen,needleLen,needleLen,needleLen,needleLen,needleLen,needleLen,needleLen,needleLen,needleLen,needleLen,needleLen,needleLen,needleLen,needleLen,needleLen,needleLen,needleLen,needleLen,needleLen,needleLen,needleLen,needleLen,needleLen,needleLen,needleLen,needleLen,needleLen,needleLen,needleLen,needleLen,needleLen,needleLen,needleLen,needleLen,needleLen,needleLen,needleLen,needleLen,needleLen,needleLen,needleLen,needleLen,needleLen,needleLen,needleLen,needleLen,needleLen,needleLen,needleLen,needleLen,needleLen,needleLen,needleLen,needleLen],needleLen>1)for(let i=0;i<needleLen-1;++i)this._occ[needle[i]]=needleLen-1-i}reset(){this.matches=0,this._lookbehindSize=0,this._bufPos=0}push(chunk,pos){let result;Buffer.isBuffer(chunk)||(chunk=Buffer.from(chunk,"latin1"));let chunkLen=chunk.length;for(this._bufPos=pos||0;result!==chunkLen&&this.matches<this.maxMatches;)result=feed(this,chunk);return result}destroy(){let lbSize=this._lookbehindSize;lbSize&&this._cb(!1,this._lookbehind,0,lbSize,!1),this.reset()}};function feed(self2,data){let len=data.length,needle=self2._needle,needleLen=needle.length,pos=-self2._lookbehindSize,lastNeedleCharPos=needleLen-1,lastNeedleChar=needle[lastNeedleCharPos],end=len-needleLen,occ=self2._occ,lookbehind=self2._lookbehind;if(pos<0){for(;pos<0&&pos<=end;){let nextPos=pos+lastNeedleCharPos,ch=nextPos<0?lookbehind[self2._lookbehindSize+nextPos]:data[nextPos];if(ch===lastNeedleChar&&matchNeedle(self2,data,pos,lastNeedleCharPos))return self2._lookbehindSize=0,++self2.matches,pos>-self2._lookbehindSize?self2._cb(!0,lookbehind,0,self2._lookbehindSize+pos,!1):self2._cb(!0,void 0,0,0,!0),self2._bufPos=pos+needleLen;pos+=occ[ch]}for(;pos<0&&!matchNeedle(self2,data,pos,len-pos);)++pos;if(pos<0){let bytesToCutOff=self2._lookbehindSize+pos;return bytesToCutOff>0&&self2._cb(!1,lookbehind,0,bytesToCutOff,!1),self2._lookbehindSize-=bytesToCutOff,lookbehind.copy(lookbehind,0,bytesToCutOff,self2._lookbehindSize),lookbehind.set(data,self2._lookbehindSize),self2._lookbehindSize+=len,self2._bufPos=len,len}self2._cb(!1,lookbehind,0,self2._lookbehindSize,!1),self2._lookbehindSize=0}pos+=self2._bufPos;let firstNeedleChar=needle[0];for(;pos<=end;){let ch=data[pos+lastNeedleCharPos];if(ch===lastNeedleChar&&data[pos]===firstNeedleChar&&memcmp(needle,0,data,pos,lastNeedleCharPos))return++self2.matches,pos>0?self2._cb(!0,data,self2._bufPos,pos,!0):self2._cb(!0,void 0,0,0,!0),self2._bufPos=pos+needleLen;pos+=occ[ch]}for(;pos<len;){if(data[pos]!==firstNeedleChar||!memcmp(data,pos,needle,0,len-pos)){++pos;continue}data.copy(lookbehind,0,pos,len),self2._lookbehindSize=len-pos;break}return pos>0&&self2._cb(!1,data,self2._bufPos,pos<len?pos:len,!0),self2._bufPos=len,len}function matchNeedle(self2,data,pos,len){let lb=self2._lookbehind,lbSize=self2._lookbehindSize,needle=self2._needle;for(let i=0;i<len;++i,++pos)if((pos<0?lb[lbSize+pos]:data[pos])!==needle[i])return!1;return!0}module2.exports=SBMH}});var require_multipart=__commonJS({"node_modules/busboy/lib/types/multipart.js"(exports2,module2){"use strict";var{Readable,Writable}=require("stream"),StreamSearch=require_sbmh(),{basename,convertToUTF8,getDecoder,parseContentType,parseDisposition}=require_utils9(),BUF_CRLF=Buffer.from(`\r
|
|
304
307
|
`),BUF_CR=Buffer.from("\r"),BUF_DASH=Buffer.from("-");function noop(){}var MAX_HEADER_PAIRS=2e3,MAX_HEADER_SIZE=16*1024,HPARSER_NAME=0,HPARSER_PRE_OWS=1,HPARSER_VALUE=2,HeaderParser=class{constructor(cb){this.header=Object.create(null),this.pairCount=0,this.byteCount=0,this.state=HPARSER_NAME,this.name="",this.value="",this.crlf=0,this.cb=cb}reset(){this.header=Object.create(null),this.pairCount=0,this.byteCount=0,this.state=HPARSER_NAME,this.name="",this.value="",this.crlf=0}push(chunk,pos,end){let start=pos;for(;pos<end;)switch(this.state){case HPARSER_NAME:{let done=!1;for(;pos<end;++pos){if(this.byteCount===MAX_HEADER_SIZE)return-1;++this.byteCount;let code=chunk[pos];if(TOKEN[code]!==1){if(code!==58||(this.name+=chunk.latin1Slice(start,pos),this.name.length===0))return-1;++pos,done=!0,this.state=HPARSER_PRE_OWS;break}}if(!done){this.name+=chunk.latin1Slice(start,pos);break}}case HPARSER_PRE_OWS:{let done=!1;for(;pos<end;++pos){if(this.byteCount===MAX_HEADER_SIZE)return-1;++this.byteCount;let code=chunk[pos];if(code!==32&&code!==9){start=pos,done=!0,this.state=HPARSER_VALUE;break}}if(!done)break}case HPARSER_VALUE:switch(this.crlf){case 0:for(;pos<end;++pos){if(this.byteCount===MAX_HEADER_SIZE)return-1;++this.byteCount;let code=chunk[pos];if(FIELD_VCHAR[code]!==1){if(code!==13)return-1;++this.crlf;break}}this.value+=chunk.latin1Slice(start,pos++);break;case 1:if(this.byteCount===MAX_HEADER_SIZE||(++this.byteCount,chunk[pos++]!==10))return-1;++this.crlf;break;case 2:{if(this.byteCount===MAX_HEADER_SIZE)return-1;++this.byteCount;let code=chunk[pos];code===32||code===9?(start=pos,this.crlf=0):(++this.pairCount<MAX_HEADER_PAIRS&&(this.name=this.name.toLowerCase(),this.header[this.name]===void 0?this.header[this.name]=[this.value]:this.header[this.name].push(this.value)),code===13?(++this.crlf,++pos):(start=pos,this.crlf=0,this.state=HPARSER_NAME,this.name="",this.value=""));break}case 3:{if(this.byteCount===MAX_HEADER_SIZE||(++this.byteCount,chunk[pos++]!==10))return-1;let header=this.header;return this.reset(),this.cb(header),pos}}break}return pos}},FileStream=class extends Readable{constructor(opts,owner){super(opts),this.truncated=!1,this._readcb=null,this.once("end",()=>{if(this._read(),--owner._fileEndsLeft===0&&owner._finalcb){let cb=owner._finalcb;owner._finalcb=null,process.nextTick(cb)}})}_read(n){let cb=this._readcb;cb&&(this._readcb=null,cb())}},ignoreData={push:(chunk,pos)=>{},destroy:()=>{}};function callAndUnsetCb(self2,err){let cb=self2._writecb;self2._writecb=null,err?self2.destroy(err):cb&&cb()}function nullDecoder(val,hint){return val}var Multipart=class extends Writable{constructor(cfg){let streamOpts={autoDestroy:!0,emitClose:!0,highWaterMark:typeof cfg.highWaterMark=="number"?cfg.highWaterMark:void 0};if(super(streamOpts),!cfg.conType.params||typeof cfg.conType.params.boundary!="string")throw new Error("Multipart: Boundary not found");let boundary=cfg.conType.params.boundary,paramDecoder=typeof cfg.defParamCharset=="string"&&cfg.defParamCharset?getDecoder(cfg.defParamCharset):nullDecoder,defCharset=cfg.defCharset||"utf8",preservePath=cfg.preservePath,fileOpts={autoDestroy:!0,emitClose:!0,highWaterMark:typeof cfg.fileHwm=="number"?cfg.fileHwm:void 0},limits=cfg.limits,fieldSizeLimit=limits&&typeof limits.fieldSize=="number"?limits.fieldSize:1*1024*1024,fileSizeLimit=limits&&typeof limits.fileSize=="number"?limits.fileSize:1/0,filesLimit=limits&&typeof limits.files=="number"?limits.files:1/0,fieldsLimit=limits&&typeof limits.fields=="number"?limits.fields:1/0,partsLimit=limits&&typeof limits.parts=="number"?limits.parts:1/0,parts=-1,fields=0,files=0,skipPart=!1;this._fileEndsLeft=0,this._fileStream=void 0,this._complete=!1;let fileSize=0,field,fieldSize=0,partCharset,partEncoding,partType,partName,partTruncated=!1,hitFilesLimit=!1,hitFieldsLimit=!1;this._hparser=null;let hparser=new HeaderParser(header=>{this._hparser=null,skipPart=!1,partType="text/plain",partCharset=defCharset,partEncoding="7bit",partName=void 0,partTruncated=!1;let filename;if(!header["content-disposition"]){skipPart=!0;return}let disp=parseDisposition(header["content-disposition"][0],paramDecoder);if(!disp||disp.type!=="form-data"){skipPart=!0;return}if(disp.params&&(disp.params.name&&(partName=disp.params.name),disp.params["filename*"]?filename=disp.params["filename*"]:disp.params.filename&&(filename=disp.params.filename),filename!==void 0&&!preservePath&&(filename=basename(filename))),header["content-type"]){let conType=parseContentType(header["content-type"][0]);conType&&(partType=`${conType.type}/${conType.subtype}`,conType.params&&typeof conType.params.charset=="string"&&(partCharset=conType.params.charset.toLowerCase()))}if(header["content-transfer-encoding"]&&(partEncoding=header["content-transfer-encoding"][0].toLowerCase()),partType==="application/octet-stream"||filename!==void 0){if(files===filesLimit){hitFilesLimit||(hitFilesLimit=!0,this.emit("filesLimit")),skipPart=!0;return}if(++files,this.listenerCount("file")===0){skipPart=!0;return}fileSize=0,this._fileStream=new FileStream(fileOpts,this),++this._fileEndsLeft,this.emit("file",partName,this._fileStream,{filename,encoding:partEncoding,mimeType:partType})}else{if(fields===fieldsLimit){hitFieldsLimit||(hitFieldsLimit=!0,this.emit("fieldsLimit")),skipPart=!0;return}if(++fields,this.listenerCount("field")===0){skipPart=!0;return}field=[],fieldSize=0}}),matchPostBoundary=0,ssCb=(isMatch,data,start,end,isDataSafe)=>{retrydata:for(;data;){if(this._hparser!==null){let ret=this._hparser.push(data,start,end);if(ret===-1){this._hparser=null,hparser.reset(),this.emit("error",new Error("Malformed part header"));break}start=ret}if(start===end)break;if(matchPostBoundary!==0){if(matchPostBoundary===1){switch(data[start]){case 45:matchPostBoundary=2,++start;break;case 13:matchPostBoundary=3,++start;break;default:matchPostBoundary=0}if(start===end)return}if(matchPostBoundary===2){if(matchPostBoundary=0,data[start]===45){this._complete=!0,this._bparser=ignoreData;return}let writecb=this._writecb;this._writecb=noop,ssCb(!1,BUF_DASH,0,1,!1),this._writecb=writecb}else if(matchPostBoundary===3)if(matchPostBoundary=0,data[start]===10){if(++start,parts>=partsLimit||(this._hparser=hparser,start===end))break;continue retrydata}else{let writecb=this._writecb;this._writecb=noop,ssCb(!1,BUF_CR,0,1,!1),this._writecb=writecb}}if(!skipPart){if(this._fileStream){let chunk,actualLen=Math.min(end-start,fileSizeLimit-fileSize);isDataSafe?chunk=data.slice(start,start+actualLen):(chunk=Buffer.allocUnsafe(actualLen),data.copy(chunk,0,start,start+actualLen)),fileSize+=chunk.length,fileSize===fileSizeLimit?(chunk.length>0&&this._fileStream.push(chunk),this._fileStream.emit("limit"),this._fileStream.truncated=!0,skipPart=!0):this._fileStream.push(chunk)||(this._writecb&&(this._fileStream._readcb=this._writecb),this._writecb=null)}else if(field!==void 0){let chunk,actualLen=Math.min(end-start,fieldSizeLimit-fieldSize);isDataSafe?chunk=data.slice(start,start+actualLen):(chunk=Buffer.allocUnsafe(actualLen),data.copy(chunk,0,start,start+actualLen)),fieldSize+=actualLen,field.push(chunk),fieldSize===fieldSizeLimit&&(skipPart=!0,partTruncated=!0)}}break}if(isMatch){if(matchPostBoundary=1,this._fileStream)this._fileStream.push(null),this._fileStream=null;else if(field!==void 0){let data2;switch(field.length){case 0:data2="";break;case 1:data2=convertToUTF8(field[0],partCharset,0);break;default:data2=convertToUTF8(Buffer.concat(field,fieldSize),partCharset,0)}field=void 0,fieldSize=0,this.emit("field",partName,data2,{nameTruncated:!1,valueTruncated:partTruncated,encoding:partEncoding,mimeType:partType})}++parts===partsLimit&&this.emit("partsLimit")}};this._bparser=new StreamSearch(`\r
|
|
305
|
-
--${boundary}`,ssCb),this._writecb=null,this._finalcb=null,this.write(BUF_CRLF)}static detect(conType){return conType.type==="multipart"&&conType.subtype==="form-data"}_write(chunk,enc,cb){this._writecb=cb,this._bparser.push(chunk,0),this._writecb&&callAndUnsetCb(this)}_destroy(err,cb){this._hparser=null,this._bparser=ignoreData,err||(err=checkEndState(this));let fileStream=this._fileStream;fileStream&&(this._fileStream=null,fileStream.destroy(err)),cb(err)}_final(cb){if(this._bparser.destroy(),!this._complete)return cb(new Error("Unexpected end of form"));this._fileEndsLeft?this._finalcb=finalcb.bind(null,this,cb):finalcb(this,cb)}};function finalcb(self2,cb,err){if(err)return cb(err);err=checkEndState(self2),cb(err)}function checkEndState(self2){if(self2._hparser)return new Error("Malformed part header");let fileStream=self2._fileStream;if(fileStream&&(self2._fileStream=null,fileStream.destroy(new Error("Unexpected end of file"))),!self2._complete)return new Error("Unexpected end of form")}var TOKEN=[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,1,1,1,1,1,0,0,1,1,0,1,1,0,1,1,1,1,1,1,1,1,1,1,0,0,0,0,0,0,0,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,0,0,0,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,0,1,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],FIELD_VCHAR=[0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,0,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1];module2.exports=Multipart}});var require_urlencoded2=__commonJS({"node_modules/busboy/lib/types/urlencoded.js"(exports2,module2){"use strict";var{Writable}=require("stream"),{getDecoder}=require_utils9(),URLEncoded=class extends Writable{constructor(cfg){let streamOpts={autoDestroy:!0,emitClose:!0,highWaterMark:typeof cfg.highWaterMark=="number"?cfg.highWaterMark:void 0};super(streamOpts);let charset=cfg.defCharset||"utf8";cfg.conType.params&&typeof cfg.conType.params.charset=="string"&&(charset=cfg.conType.params.charset),this.charset=charset;let limits=cfg.limits;this.fieldSizeLimit=limits&&typeof limits.fieldSize=="number"?limits.fieldSize:1*1024*1024,this.fieldsLimit=limits&&typeof limits.fields=="number"?limits.fields:1/0,this.fieldNameSizeLimit=limits&&typeof limits.fieldNameSize=="number"?limits.fieldNameSize:100,this._inKey=!0,this._keyTrunc=!1,this._valTrunc=!1,this._bytesKey=0,this._bytesVal=0,this._fields=0,this._key="",this._val="",this._byte=-2,this._lastPos=0,this._encode=0,this._decoder=getDecoder(charset)}static detect(conType){return conType.type==="application"&&conType.subtype==="x-www-form-urlencoded"}_write(chunk,enc,cb){if(this._fields>=this.fieldsLimit)return cb();let i=0,len=chunk.length;if(this._lastPos=0,this._byte!==-2){if(i=readPctEnc(this,chunk,i,len),i===-1)return cb(new Error("Malformed urlencoded form"));if(i>=len)return cb();this._inKey?++this._bytesKey:++this._bytesVal}main:for(;i<len;)if(this._inKey){for(i=skipKeyBytes(this,chunk,i,len);i<len;){switch(chunk[i]){case 61:this._lastPos<i&&(this._key+=chunk.latin1Slice(this._lastPos,i)),this._lastPos=++i,this._key=this._decoder(this._key,this._encode),this._encode=0,this._inKey=!1;continue main;case 38:if(this._lastPos<i&&(this._key+=chunk.latin1Slice(this._lastPos,i)),this._lastPos=++i,this._key=this._decoder(this._key,this._encode),this._encode=0,this._bytesKey>0&&this.emit("field",this._key,"",{nameTruncated:this._keyTrunc,valueTruncated:!1,encoding:this.charset,mimeType:"text/plain"}),this._key="",this._val="",this._keyTrunc=!1,this._valTrunc=!1,this._bytesKey=0,this._bytesVal=0,++this._fields>=this.fieldsLimit)return this.emit("fieldsLimit"),cb();continue;case 43:this._lastPos<i&&(this._key+=chunk.latin1Slice(this._lastPos,i)),this._key+=" ",this._lastPos=i+1;break;case 37:if(this._encode===0&&(this._encode=1),this._lastPos<i&&(this._key+=chunk.latin1Slice(this._lastPos,i)),this._lastPos=i+1,this._byte=-1,i=readPctEnc(this,chunk,i+1,len),i===-1)return cb(new Error("Malformed urlencoded form"));if(i>=len)return cb();++this._bytesKey,i=skipKeyBytes(this,chunk,i,len);continue}++i,++this._bytesKey,i=skipKeyBytes(this,chunk,i,len)}this._lastPos<i&&(this._key+=chunk.latin1Slice(this._lastPos,i))}else{for(i=skipValBytes(this,chunk,i,len);i<len;){switch(chunk[i]){case 38:if(this._lastPos<i&&(this._val+=chunk.latin1Slice(this._lastPos,i)),this._lastPos=++i,this._inKey=!0,this._val=this._decoder(this._val,this._encode),this._encode=0,(this._bytesKey>0||this._bytesVal>0)&&this.emit("field",this._key,this._val,{nameTruncated:this._keyTrunc,valueTruncated:this._valTrunc,encoding:this.charset,mimeType:"text/plain"}),this._key="",this._val="",this._keyTrunc=!1,this._valTrunc=!1,this._bytesKey=0,this._bytesVal=0,++this._fields>=this.fieldsLimit)return this.emit("fieldsLimit"),cb();continue main;case 43:this._lastPos<i&&(this._val+=chunk.latin1Slice(this._lastPos,i)),this._val+=" ",this._lastPos=i+1;break;case 37:if(this._encode===0&&(this._encode=1),this._lastPos<i&&(this._val+=chunk.latin1Slice(this._lastPos,i)),this._lastPos=i+1,this._byte=-1,i=readPctEnc(this,chunk,i+1,len),i===-1)return cb(new Error("Malformed urlencoded form"));if(i>=len)return cb();++this._bytesVal,i=skipValBytes(this,chunk,i,len);continue}++i,++this._bytesVal,i=skipValBytes(this,chunk,i,len)}this._lastPos<i&&(this._val+=chunk.latin1Slice(this._lastPos,i))}cb()}_final(cb){if(this._byte!==-2)return cb(new Error("Malformed urlencoded form"));(!this._inKey||this._bytesKey>0||this._bytesVal>0)&&(this._inKey?this._key=this._decoder(this._key,this._encode):this._val=this._decoder(this._val,this._encode),this.emit("field",this._key,this._val,{nameTruncated:this._keyTrunc,valueTruncated:this._valTrunc,encoding:this.charset,mimeType:"text/plain"})),cb()}};function readPctEnc(self2,chunk,pos,len){if(pos>=len)return len;if(self2._byte===-1){let hexUpper=HEX_VALUES[chunk[pos++]];if(hexUpper===-1)return-1;if(hexUpper>=8&&(self2._encode=2),pos<len){let hexLower=HEX_VALUES[chunk[pos++]];if(hexLower===-1)return-1;self2._inKey?self2._key+=String.fromCharCode((hexUpper<<4)+hexLower):self2._val+=String.fromCharCode((hexUpper<<4)+hexLower),self2._byte=-2,self2._lastPos=pos}else self2._byte=hexUpper}else{let hexLower=HEX_VALUES[chunk[pos++]];if(hexLower===-1)return-1;self2._inKey?self2._key+=String.fromCharCode((self2._byte<<4)+hexLower):self2._val+=String.fromCharCode((self2._byte<<4)+hexLower),self2._byte=-2,self2._lastPos=pos}return pos}function skipKeyBytes(self2,chunk,pos,len){if(self2._bytesKey>self2.fieldNameSizeLimit){for(self2._keyTrunc||self2._lastPos<pos&&(self2._key+=chunk.latin1Slice(self2._lastPos,pos-1)),self2._keyTrunc=!0;pos<len;++pos){let code=chunk[pos];if(code===61||code===38)break;++self2._bytesKey}self2._lastPos=pos}return pos}function skipValBytes(self2,chunk,pos,len){if(self2._bytesVal>self2.fieldSizeLimit){for(self2._valTrunc||self2._lastPos<pos&&(self2._val+=chunk.latin1Slice(self2._lastPos,pos-1)),self2._valTrunc=!0;pos<len&&chunk[pos]!==38;++pos)++self2._bytesVal;self2._lastPos=pos}return pos}var HEX_VALUES=[-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,0,1,2,3,4,5,6,7,8,9,-1,-1,-1,-1,-1,-1,-1,10,11,12,13,14,15,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,10,11,12,13,14,15,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1];module2.exports=URLEncoded}});var require_lib5=__commonJS({"node_modules/busboy/lib/index.js"(exports2,module2){"use strict";var{parseContentType}=require_utils9();function getInstance(cfg){let headers=cfg.headers,conType=parseContentType(headers["content-type"]);if(!conType)throw new Error("Malformed content type");for(let type of TYPES){if(!type.detect(conType))continue;let instanceCfg={limits:cfg.limits,headers,conType,highWaterMark:void 0,fileHwm:void 0,defCharset:void 0,defParamCharset:void 0,preservePath:!1};return cfg.highWaterMark&&(instanceCfg.highWaterMark=cfg.highWaterMark),cfg.fileHwm&&(instanceCfg.fileHwm=cfg.fileHwm),instanceCfg.defCharset=cfg.defCharset,instanceCfg.defParamCharset=cfg.defParamCharset,instanceCfg.preservePath=cfg.preservePath,new type(instanceCfg)}throw new Error(`Unsupported content type: ${headers["content-type"]}`)}var TYPES=[require_multipart(),require_urlencoded2()].filter(function(typemod){return typeof typemod.detect=="function"});module2.exports=cfg=>{if((typeof cfg!="object"||cfg===null)&&(cfg={}),typeof cfg.headers!="object"||cfg.headers===null||typeof cfg.headers["content-type"]!="string")throw new Error("Missing Content-Type");return getInstance(cfg)}}});var require_parse_path=__commonJS({"node_modules/append-field/lib/parse-path.js"(exports2,module2){var reFirstKey=/^[^\[]*/,reDigitPath=/^\[(\d+)\]/,reNormalPath=/^\[([^\]]+)\]/;function parsePath(key){function failure(){return[{type:"object",key,last:!0}]}var firstKey=reFirstKey.exec(key)[0];if(!firstKey)return failure();for(var len=key.length,pos=firstKey.length,tail={type:"object",key:firstKey},steps=[tail];pos<len;){var m;if(key[pos]==="["&&key[pos+1]==="]"){if(pos+=2,tail.append=!0,pos!==len)return failure();continue}if(m=reDigitPath.exec(key.substring(pos)),m!==null){pos+=m[0].length,tail.nextType="array",tail={type:"array",key:parseInt(m[1],10)},steps.push(tail);continue}if(m=reNormalPath.exec(key.substring(pos)),m!==null){pos+=m[0].length,tail.nextType="object",tail={type:"object",key:m[1]},steps.push(tail);continue}return failure()}return tail.last=!0,steps}module2.exports=parsePath}});var require_set_value=__commonJS({"node_modules/append-field/lib/set-value.js"(exports2,module2){function valueType(value){return value===void 0?"undefined":Array.isArray(value)?"array":typeof value=="object"?"object":"scalar"}function setLastValue(context,step,currentValue,entryValue){switch(valueType(currentValue)){case"undefined":step.append?context[step.key]=[entryValue]:context[step.key]=entryValue;break;case"array":context[step.key].push(entryValue);break;case"object":return setLastValue(currentValue,{type:"object",key:"",last:!0},currentValue[""],entryValue);case"scalar":context[step.key]=[context[step.key],entryValue];break}return context}function setValue(context,step,currentValue,entryValue){if(step.last)return setLastValue(context,step,currentValue,entryValue);var obj;switch(valueType(currentValue)){case"undefined":return step.nextType==="array"?context[step.key]=[]:context[step.key]=Object.create(null),context[step.key];case"object":return context[step.key];case"array":return step.nextType==="array"?currentValue:(obj=Object.create(null),context[step.key]=obj,currentValue.forEach(function(item,i){item!==void 0&&(obj[""+i]=item)}),obj);case"scalar":return obj=Object.create(null),obj[""]=currentValue,context[step.key]=obj,obj}}module2.exports=setValue}});var require_append_field=__commonJS({"node_modules/append-field/index.js"(exports2,module2){var parsePath=require_parse_path(),setValue=require_set_value();function appendField(store,key,value){var steps=parsePath(key);steps.reduce(function(context,step){return setValue(context,step,context[step.key],value)},store)}module2.exports=appendField}});var require_counter=__commonJS({"node_modules/multer/lib/counter.js"(exports2,module2){var EventEmitter=require("events").EventEmitter;function Counter(){EventEmitter.call(this),this.value=0}Counter.prototype=Object.create(EventEmitter.prototype);Counter.prototype.increment=function(){this.value++};Counter.prototype.decrement=function(){--this.value===0&&this.emit("zero")};Counter.prototype.isZero=function(){return this.value===0};Counter.prototype.onceZero=function(fn){if(this.isZero())return fn();this.once("zero",fn)};module2.exports=Counter}});var require_multer_error=__commonJS({"node_modules/multer/lib/multer-error.js"(exports2,module2){var util=require("util"),errorMessages={LIMIT_PART_COUNT:"Too many parts",LIMIT_FILE_SIZE:"File too large",LIMIT_FILE_COUNT:"Too many files",LIMIT_FIELD_KEY:"Field name too long",LIMIT_FIELD_VALUE:"Field value too long",LIMIT_FIELD_COUNT:"Too many fields",LIMIT_UNEXPECTED_FILE:"Unexpected field",MISSING_FIELD_NAME:"Field name missing",LIMIT_FIELD_NESTING:"Field name nesting too deep"};function MulterError(code,field){Error.captureStackTrace(this,this.constructor),this.name=this.constructor.name,this.message=errorMessages[code],this.code=code,field&&(this.field=field)}util.inherits(MulterError,Error);module2.exports=MulterError}});var require_file_appender=__commonJS({"node_modules/multer/lib/file-appender.js"(exports2,module2){function arrayRemove(arr,item){var idx=arr.indexOf(item);~idx&&arr.splice(idx,1)}function FileAppender(strategy,req){switch(this.strategy=strategy,this.req=req,strategy){case"NONE":break;case"VALUE":break;case"ARRAY":req.files=[];break;case"OBJECT":req.files=Object.create(null);break;default:throw new Error("Unknown file strategy: "+strategy)}}FileAppender.prototype.insertPlaceholder=function(file){var placeholder={fieldname:file.fieldname};switch(this.strategy){case"NONE":break;case"VALUE":break;case"ARRAY":this.req.files.push(placeholder);break;case"OBJECT":this.req.files[file.fieldname]?this.req.files[file.fieldname].push(placeholder):this.req.files[file.fieldname]=[placeholder];break}return placeholder};FileAppender.prototype.removePlaceholder=function(placeholder){switch(this.strategy){case"NONE":break;case"VALUE":break;case"ARRAY":arrayRemove(this.req.files,placeholder);break;case"OBJECT":this.req.files[placeholder.fieldname].length===1?delete this.req.files[placeholder.fieldname]:arrayRemove(this.req.files[placeholder.fieldname],placeholder);break}};FileAppender.prototype.replacePlaceholder=function(placeholder,file){if(this.strategy==="VALUE"){this.req.file=file;return}delete placeholder.fieldname,Object.assign(placeholder,file)};module2.exports=FileAppender}});var require_remove_uploaded_files=__commonJS({"node_modules/multer/lib/remove-uploaded-files.js"(exports2,module2){function removeUploadedFiles(uploadedFiles,remove,cb){var length=uploadedFiles.length,errors=[];if(length===0)return cb(null,errors);function handleFile(idx){var file=uploadedFiles[idx];remove(file,function(err){err&&(err.file=file,err.field=file.fieldname,errors.push(err)),idx<length-1?setImmediate(function(){handleFile(idx+1)}):cb(null,errors)})}handleFile(0)}module2.exports=removeUploadedFiles}});var require_make_middleware=__commonJS({"node_modules/multer/lib/make-middleware.js"(exports2,module2){var is=require_type_is(),Busboy=require_lib5(),appendField=require_append_field(),Counter=require_counter(),MulterError=require_multer_error(),FileAppender=require_file_appender(),removeUploadedFiles=require_remove_uploaded_files();function drainStream(stream){stream.on("readable",()=>{for(;stream.read()!==null;);})}function makeMiddleware(setup){return function(req,res,next){if(!is(req,["multipart"]))return next();var options=setup(),limits=options.limits,storage=options.storage,fileFilter=options.fileFilter,fileStrategy=options.fileStrategy,preservePath=options.preservePath,defParamCharset=options.defParamCharset;req.body=Object.create(null);var busboy,appender=null,isDone=!1,readFinished=!1,errorOccured=!1,pendingWrites=new Counter,uploadedFiles=[],pendingFiles=[];function done(err){var called=!1;function onFinished(){called||(called=!0,next(err))}if(!isDone){if(isDone=!0,busboy&&(req.unpipe(busboy),setImmediate(()=>{busboy.removeAllListeners()})),drainStream(req),req.resume(),err&&req.readable&&!req.destroyed){req.once("end",onFinished),req.once("error",onFinished),req.once("close",onFinished);return}next(err)}}function indicateDone(){readFinished&&pendingWrites.isZero()&&!errorOccured&&done()}function abortWithError(uploadError,skipPendingWait){if(errorOccured)return;errorOccured=!0;function finishAbort(){function remove(file,cb){storage._removeFile(req,file,cb)}var filesToRemove=uploadedFiles.concat(pendingFiles.filter(function(f){return f.path}));pendingFiles=[],removeUploadedFiles(filesToRemove,remove,function(err,storageErrors){if(err)return done(err);uploadError.storageErrors=storageErrors,done(uploadError)})}skipPendingWait?finishAbort():pendingWrites.onceZero(finishAbort)}function abortWithCode(code,optionalField){abortWithError(new MulterError(code,optionalField))}function handleRequestFailure(err){isDone||(busboy&&(req.unpipe(busboy),busboy.destroy(err)),abortWithError(err,!0))}req.on("error",function(err){handleRequestFailure(err||new Error("Request error"))}),req.on("aborted",function(){handleRequestFailure(new Error("Request aborted"))}),req.on("close",function(){req.readableEnded||handleRequestFailure(new Error("Request closed"))});try{busboy=Busboy({headers:req.headers,limits,preservePath,defParamCharset})}catch(err){return next(err)}appender=new FileAppender(fileStrategy,req),busboy.on("field",function(fieldname,value,{nameTruncated,valueTruncated}){if(fieldname==null)return abortWithCode("MISSING_FIELD_NAME");if(nameTruncated)return abortWithCode("LIMIT_FIELD_KEY");if(valueTruncated)return abortWithCode("LIMIT_FIELD_VALUE",fieldname);if(limits&&Object.prototype.hasOwnProperty.call(limits,"fieldNameSize")&&fieldname.length>limits.fieldNameSize)return abortWithCode("LIMIT_FIELD_KEY");if(limits&&Object.prototype.hasOwnProperty.call(limits,"fieldNestingDepth")&&fieldname.split("[").length-1>limits.fieldNestingDepth)return abortWithCode("LIMIT_FIELD_NESTING",fieldname);appendField(req.body,fieldname,value)}),busboy.on("file",function(fieldname,fileStream,{filename,encoding,mimeType}){var pendingWritesIncremented=!1;if(fileStream.on("error",function(err){pendingWritesIncremented&&pendingWrites.decrement(),abortWithError(err)}),fieldname==null)return abortWithCode("MISSING_FIELD_NAME");if(!filename)return fileStream.resume();if(limits&&Object.prototype.hasOwnProperty.call(limits,"fieldNameSize")&&fieldname.length>limits.fieldNameSize)return abortWithCode("LIMIT_FIELD_KEY");var file={fieldname,originalname:filename,encoding,mimetype:mimeType},placeholder=appender.insertPlaceholder(file);fileFilter(req,file,function(err,includeFile){if(errorOccured)return appender.removePlaceholder(placeholder),fileStream.resume();if(err)return appender.removePlaceholder(placeholder),abortWithError(err);if(!includeFile)return appender.removePlaceholder(placeholder),fileStream.resume();var aborting=!1;pendingWritesIncremented=!0,pendingWrites.increment(),Object.defineProperty(file,"stream",{configurable:!0,enumerable:!1,value:fileStream}),fileStream.on("limit",function(){aborting=!0,abortWithCode("LIMIT_FILE_SIZE",fieldname)}),pendingFiles.push(file),storage._handleFile(req,file,function(err2,info){var idx=pendingFiles.indexOf(file);if(idx!==-1&&pendingFiles.splice(idx,1),aborting)return appender.removePlaceholder(placeholder),uploadedFiles.push({...file,...info}),pendingWrites.decrement();if(err2)return appender.removePlaceholder(placeholder),pendingWrites.decrement(),abortWithError(err2);var fileInfo={...file,...info};appender.replacePlaceholder(placeholder,fileInfo),uploadedFiles.push(fileInfo),pendingWrites.decrement(),indicateDone()})})}),busboy.on("error",function(err){abortWithError(err)}),busboy.on("partsLimit",function(){abortWithCode("LIMIT_PART_COUNT")}),busboy.on("filesLimit",function(){abortWithCode("LIMIT_FILE_COUNT")}),busboy.on("fieldsLimit",function(){abortWithCode("LIMIT_FIELD_COUNT")}),busboy.on("close",function(){readFinished=!0,indicateDone()}),req.pipe(busboy)}}module2.exports=makeMiddleware}});var require_disk=__commonJS({"node_modules/multer/storage/disk.js"(exports2,module2){var fs=require("fs"),os=require("os"),path=require("path"),crypto=require("crypto");function getFilename(req,file,cb){crypto.randomBytes(16,function(err,raw){cb(err,err?void 0:raw.toString("hex"))})}function getDestination(req,file,cb){cb(null,os.tmpdir())}function DiskStorage(opts){this.getFilename=opts.filename||getFilename,typeof opts.destination=="string"?(fs.mkdirSync(opts.destination,{recursive:!0}),this.getDestination=function($0,$1,cb){cb(null,opts.destination)}):this.getDestination=opts.destination||getDestination}DiskStorage.prototype._handleFile=function(req,file,cb){var that=this;that.getDestination(req,file,function(err,destination){if(err)return cb(err);that.getFilename(req,file,function(err2,filename){if(err2)return cb(err2);var finalPath=path.join(destination,filename);if(!file.stream.destroyed){var outStream=fs.createWriteStream(finalPath);file.path=finalPath,file.stream.pipe(outStream),outStream.on("error",cb),outStream.on("finish",function(){cb(null,{destination,filename,path:finalPath,size:outStream.bytesWritten})})}})})};DiskStorage.prototype._removeFile=function(req,file,cb){var path2=file.path;delete file.destination,delete file.filename,delete file.path,fs.unlink(path2,cb)};module2.exports=function(opts){return new DiskStorage(opts)}}});var require_stream3=__commonJS({"node_modules/readable-stream/lib/internal/streams/stream.js"(exports2,module2){module2.exports=require("stream")}});var require_buffer_list=__commonJS({"node_modules/readable-stream/lib/internal/streams/buffer_list.js"(exports2,module2){"use strict";function ownKeys(object,enumerableOnly){var keys=Object.keys(object);if(Object.getOwnPropertySymbols){var symbols=Object.getOwnPropertySymbols(object);enumerableOnly&&(symbols=symbols.filter(function(sym){return Object.getOwnPropertyDescriptor(object,sym).enumerable})),keys.push.apply(keys,symbols)}return keys}function _objectSpread(target){for(var i=1;i<arguments.length;i++){var source=arguments[i]!=null?arguments[i]:{};i%2?ownKeys(Object(source),!0).forEach(function(key){_defineProperty(target,key,source[key])}):Object.getOwnPropertyDescriptors?Object.defineProperties(target,Object.getOwnPropertyDescriptors(source)):ownKeys(Object(source)).forEach(function(key){Object.defineProperty(target,key,Object.getOwnPropertyDescriptor(source,key))})}return target}function _defineProperty(obj,key,value){return key=_toPropertyKey(key),key in obj?Object.defineProperty(obj,key,{value,enumerable:!0,configurable:!0,writable:!0}):obj[key]=value,obj}function _classCallCheck(instance,Constructor){if(!(instance instanceof Constructor))throw new TypeError("Cannot call a class as a function")}function _defineProperties(target,props){for(var i=0;i<props.length;i++){var descriptor=props[i];descriptor.enumerable=descriptor.enumerable||!1,descriptor.configurable=!0,"value"in descriptor&&(descriptor.writable=!0),Object.defineProperty(target,_toPropertyKey(descriptor.key),descriptor)}}function _createClass(Constructor,protoProps,staticProps){return protoProps&&_defineProperties(Constructor.prototype,protoProps),staticProps&&_defineProperties(Constructor,staticProps),Object.defineProperty(Constructor,"prototype",{writable:!1}),Constructor}function _toPropertyKey(arg){var key=_toPrimitive(arg,"string");return typeof key=="symbol"?key:String(key)}function _toPrimitive(input,hint){if(typeof input!="object"||input===null)return input;var prim=input[Symbol.toPrimitive];if(prim!==void 0){var res=prim.call(input,hint||"default");if(typeof res!="object")return res;throw new TypeError("@@toPrimitive must return a primitive value.")}return(hint==="string"?String:Number)(input)}var _require=require("buffer"),Buffer2=_require.Buffer,_require2=require("util"),inspect=_require2.inspect,custom=inspect&&inspect.custom||"inspect";function copyBuffer(src,target,offset){Buffer2.prototype.copy.call(src,target,offset)}module2.exports=(function(){function BufferList(){_classCallCheck(this,BufferList),this.head=null,this.tail=null,this.length=0}return _createClass(BufferList,[{key:"push",value:function(v){var entry={data:v,next:null};this.length>0?this.tail.next=entry:this.head=entry,this.tail=entry,++this.length}},{key:"unshift",value:function(v){var entry={data:v,next:this.head};this.length===0&&(this.tail=entry),this.head=entry,++this.length}},{key:"shift",value:function(){if(this.length!==0){var ret=this.head.data;return this.length===1?this.head=this.tail=null:this.head=this.head.next,--this.length,ret}}},{key:"clear",value:function(){this.head=this.tail=null,this.length=0}},{key:"join",value:function(s){if(this.length===0)return"";for(var p=this.head,ret=""+p.data;p=p.next;)ret+=s+p.data;return ret}},{key:"concat",value:function(n){if(this.length===0)return Buffer2.alloc(0);for(var ret=Buffer2.allocUnsafe(n>>>0),p=this.head,i=0;p;)copyBuffer(p.data,ret,i),i+=p.data.length,p=p.next;return ret}},{key:"consume",value:function(n,hasStrings){var ret;return n<this.head.data.length?(ret=this.head.data.slice(0,n),this.head.data=this.head.data.slice(n)):n===this.head.data.length?ret=this.shift():ret=hasStrings?this._getString(n):this._getBuffer(n),ret}},{key:"first",value:function(){return this.head.data}},{key:"_getString",value:function(n){var p=this.head,c=1,ret=p.data;for(n-=ret.length;p=p.next;){var str=p.data,nb=n>str.length?str.length:n;if(nb===str.length?ret+=str:ret+=str.slice(0,n),n-=nb,n===0){nb===str.length?(++c,p.next?this.head=p.next:this.head=this.tail=null):(this.head=p,p.data=str.slice(nb));break}++c}return this.length-=c,ret}},{key:"_getBuffer",value:function(n){var ret=Buffer2.allocUnsafe(n),p=this.head,c=1;for(p.data.copy(ret),n-=p.data.length;p=p.next;){var buf=p.data,nb=n>buf.length?buf.length:n;if(buf.copy(ret,ret.length-n,0,nb),n-=nb,n===0){nb===buf.length?(++c,p.next?this.head=p.next:this.head=this.tail=null):(this.head=p,p.data=buf.slice(nb));break}++c}return this.length-=c,ret}},{key:custom,value:function(_,options){return inspect(this,_objectSpread(_objectSpread({},options),{},{depth:0,customInspect:!1}))}}]),BufferList})()}});var require_destroy2=__commonJS({"node_modules/readable-stream/lib/internal/streams/destroy.js"(exports2,module2){"use strict";function destroy(err,cb){var _this=this,readableDestroyed=this._readableState&&this._readableState.destroyed,writableDestroyed=this._writableState&&this._writableState.destroyed;return readableDestroyed||writableDestroyed?(cb?cb(err):err&&(this._writableState?this._writableState.errorEmitted||(this._writableState.errorEmitted=!0,process.nextTick(emitErrorNT,this,err)):process.nextTick(emitErrorNT,this,err)),this):(this._readableState&&(this._readableState.destroyed=!0),this._writableState&&(this._writableState.destroyed=!0),this._destroy(err||null,function(err2){!cb&&err2?_this._writableState?_this._writableState.errorEmitted?process.nextTick(emitCloseNT,_this):(_this._writableState.errorEmitted=!0,process.nextTick(emitErrorAndCloseNT,_this,err2)):process.nextTick(emitErrorAndCloseNT,_this,err2):cb?(process.nextTick(emitCloseNT,_this),cb(err2)):process.nextTick(emitCloseNT,_this)}),this)}function emitErrorAndCloseNT(self2,err){emitErrorNT(self2,err),emitCloseNT(self2)}function emitCloseNT(self2){self2._writableState&&!self2._writableState.emitClose||self2._readableState&&!self2._readableState.emitClose||self2.emit("close")}function undestroy(){this._readableState&&(this._readableState.destroyed=!1,this._readableState.reading=!1,this._readableState.ended=!1,this._readableState.endEmitted=!1),this._writableState&&(this._writableState.destroyed=!1,this._writableState.ended=!1,this._writableState.ending=!1,this._writableState.finalCalled=!1,this._writableState.prefinished=!1,this._writableState.finished=!1,this._writableState.errorEmitted=!1)}function emitErrorNT(self2,err){self2.emit("error",err)}function errorOrDestroy(stream,err){var rState=stream._readableState,wState=stream._writableState;rState&&rState.autoDestroy||wState&&wState.autoDestroy?stream.destroy(err):stream.emit("error",err)}module2.exports={destroy,undestroy,errorOrDestroy}}});var require_errors3=__commonJS({"node_modules/readable-stream/errors.js"(exports2,module2){"use strict";var codes={};function createErrorType(code,message,Base){Base||(Base=Error);function getMessage(arg1,arg2,arg3){return typeof message=="string"?message:message(arg1,arg2,arg3)}class NodeError extends Base{constructor(arg1,arg2,arg3){super(getMessage(arg1,arg2,arg3))}}NodeError.prototype.name=Base.name,NodeError.prototype.code=code,codes[code]=NodeError}function oneOf(expected,thing){if(Array.isArray(expected)){let len=expected.length;return expected=expected.map(i=>String(i)),len>2?`one of ${thing} ${expected.slice(0,len-1).join(", ")}, or `+expected[len-1]:len===2?`one of ${thing} ${expected[0]} or ${expected[1]}`:`of ${thing} ${expected[0]}`}else return`of ${thing} ${String(expected)}`}function startsWith(str,search,pos){return str.substr(!pos||pos<0?0:+pos,search.length)===search}function endsWith(str,search,this_len){return(this_len===void 0||this_len>str.length)&&(this_len=str.length),str.substring(this_len-search.length,this_len)===search}function includes(str,search,start){return typeof start!="number"&&(start=0),start+search.length>str.length?!1:str.indexOf(search,start)!==-1}createErrorType("ERR_INVALID_OPT_VALUE",function(name,value){return'The value "'+value+'" is invalid for option "'+name+'"'},TypeError);createErrorType("ERR_INVALID_ARG_TYPE",function(name,expected,actual){let determiner;typeof expected=="string"&&startsWith(expected,"not ")?(determiner="must not be",expected=expected.replace(/^not /,"")):determiner="must be";let msg;if(endsWith(name," argument"))msg=`The ${name} ${determiner} ${oneOf(expected,"type")}`;else{let type=includes(name,".")?"property":"argument";msg=`The "${name}" ${type} ${determiner} ${oneOf(expected,"type")}`}return msg+=`. Received type ${typeof actual}`,msg},TypeError);createErrorType("ERR_STREAM_PUSH_AFTER_EOF","stream.push() after EOF");createErrorType("ERR_METHOD_NOT_IMPLEMENTED",function(name){return"The "+name+" method is not implemented"});createErrorType("ERR_STREAM_PREMATURE_CLOSE","Premature close");createErrorType("ERR_STREAM_DESTROYED",function(name){return"Cannot call "+name+" after a stream was destroyed"});createErrorType("ERR_MULTIPLE_CALLBACK","Callback called multiple times");createErrorType("ERR_STREAM_CANNOT_PIPE","Cannot pipe, not readable");createErrorType("ERR_STREAM_WRITE_AFTER_END","write after end");createErrorType("ERR_STREAM_NULL_VALUES","May not write null values to stream",TypeError);createErrorType("ERR_UNKNOWN_ENCODING",function(arg){return"Unknown encoding: "+arg},TypeError);createErrorType("ERR_STREAM_UNSHIFT_AFTER_END_EVENT","stream.unshift() after end event");module2.exports.codes=codes}});var require_state=__commonJS({"node_modules/readable-stream/lib/internal/streams/state.js"(exports2,module2){"use strict";var ERR_INVALID_OPT_VALUE=require_errors3().codes.ERR_INVALID_OPT_VALUE;function highWaterMarkFrom(options,isDuplex,duplexKey){return options.highWaterMark!=null?options.highWaterMark:isDuplex?options[duplexKey]:null}function getHighWaterMark(state,options,duplexKey,isDuplex){var hwm=highWaterMarkFrom(options,isDuplex,duplexKey);if(hwm!=null){if(!(isFinite(hwm)&&Math.floor(hwm)===hwm)||hwm<0){var name=isDuplex?duplexKey:"highWaterMark";throw new ERR_INVALID_OPT_VALUE(name,hwm)}return Math.floor(hwm)}return state.objectMode?16:16*1024}module2.exports={getHighWaterMark}}});var require_node9=__commonJS({"node_modules/util-deprecate/node.js"(exports2,module2){module2.exports=require("util").deprecate}});var require_stream_writable=__commonJS({"node_modules/readable-stream/lib/_stream_writable.js"(exports2,module2){"use strict";module2.exports=Writable;function CorkedRequest(state){var _this=this;this.next=null,this.entry=null,this.finish=function(){onCorkedFinish(_this,state)}}var Duplex;Writable.WritableState=WritableState;var internalUtil={deprecate:require_node9()},Stream=require_stream3(),Buffer2=require("buffer").Buffer,OurUint8Array=(typeof global<"u"?global:typeof window<"u"?window:typeof self<"u"?self:{}).Uint8Array||function(){};function _uint8ArrayToBuffer(chunk){return Buffer2.from(chunk)}function _isUint8Array(obj){return Buffer2.isBuffer(obj)||obj instanceof OurUint8Array}var destroyImpl=require_destroy2(),_require=require_state(),getHighWaterMark=_require.getHighWaterMark,_require$codes=require_errors3().codes,ERR_INVALID_ARG_TYPE=_require$codes.ERR_INVALID_ARG_TYPE,ERR_METHOD_NOT_IMPLEMENTED=_require$codes.ERR_METHOD_NOT_IMPLEMENTED,ERR_MULTIPLE_CALLBACK=_require$codes.ERR_MULTIPLE_CALLBACK,ERR_STREAM_CANNOT_PIPE=_require$codes.ERR_STREAM_CANNOT_PIPE,ERR_STREAM_DESTROYED=_require$codes.ERR_STREAM_DESTROYED,ERR_STREAM_NULL_VALUES=_require$codes.ERR_STREAM_NULL_VALUES,ERR_STREAM_WRITE_AFTER_END=_require$codes.ERR_STREAM_WRITE_AFTER_END,ERR_UNKNOWN_ENCODING=_require$codes.ERR_UNKNOWN_ENCODING,errorOrDestroy=destroyImpl.errorOrDestroy;require_inherits()(Writable,Stream);function nop(){}function WritableState(options,stream,isDuplex){Duplex=Duplex||require_stream_duplex(),options=options||{},typeof isDuplex!="boolean"&&(isDuplex=stream instanceof Duplex),this.objectMode=!!options.objectMode,isDuplex&&(this.objectMode=this.objectMode||!!options.writableObjectMode),this.highWaterMark=getHighWaterMark(this,options,"writableHighWaterMark",isDuplex),this.finalCalled=!1,this.needDrain=!1,this.ending=!1,this.ended=!1,this.finished=!1,this.destroyed=!1;var noDecode=options.decodeStrings===!1;this.decodeStrings=!noDecode,this.defaultEncoding=options.defaultEncoding||"utf8",this.length=0,this.writing=!1,this.corked=0,this.sync=!0,this.bufferProcessing=!1,this.onwrite=function(er){onwrite(stream,er)},this.writecb=null,this.writelen=0,this.bufferedRequest=null,this.lastBufferedRequest=null,this.pendingcb=0,this.prefinished=!1,this.errorEmitted=!1,this.emitClose=options.emitClose!==!1,this.autoDestroy=!!options.autoDestroy,this.bufferedRequestCount=0,this.corkedRequestsFree=new CorkedRequest(this)}WritableState.prototype.getBuffer=function(){for(var current=this.bufferedRequest,out=[];current;)out.push(current),current=current.next;return out};(function(){try{Object.defineProperty(WritableState.prototype,"buffer",{get:internalUtil.deprecate(function(){return this.getBuffer()},"_writableState.buffer is deprecated. Use _writableState.getBuffer instead.","DEP0003")})}catch{}})();var realHasInstance;typeof Symbol=="function"&&Symbol.hasInstance&&typeof Function.prototype[Symbol.hasInstance]=="function"?(realHasInstance=Function.prototype[Symbol.hasInstance],Object.defineProperty(Writable,Symbol.hasInstance,{value:function(object){return realHasInstance.call(this,object)?!0:this!==Writable?!1:object&&object._writableState instanceof WritableState}})):realHasInstance=function(object){return object instanceof this};function Writable(options){Duplex=Duplex||require_stream_duplex();var isDuplex=this instanceof Duplex;if(!isDuplex&&!realHasInstance.call(Writable,this))return new Writable(options);this._writableState=new WritableState(options,this,isDuplex),this.writable=!0,options&&(typeof options.write=="function"&&(this._write=options.write),typeof options.writev=="function"&&(this._writev=options.writev),typeof options.destroy=="function"&&(this._destroy=options.destroy),typeof options.final=="function"&&(this._final=options.final)),Stream.call(this)}Writable.prototype.pipe=function(){errorOrDestroy(this,new ERR_STREAM_CANNOT_PIPE)};function writeAfterEnd(stream,cb){var er=new ERR_STREAM_WRITE_AFTER_END;errorOrDestroy(stream,er),process.nextTick(cb,er)}function validChunk(stream,state,chunk,cb){var er;return chunk===null?er=new ERR_STREAM_NULL_VALUES:typeof chunk!="string"&&!state.objectMode&&(er=new ERR_INVALID_ARG_TYPE("chunk",["string","Buffer"],chunk)),er?(errorOrDestroy(stream,er),process.nextTick(cb,er),!1):!0}Writable.prototype.write=function(chunk,encoding,cb){var state=this._writableState,ret=!1,isBuf=!state.objectMode&&_isUint8Array(chunk);return isBuf&&!Buffer2.isBuffer(chunk)&&(chunk=_uint8ArrayToBuffer(chunk)),typeof encoding=="function"&&(cb=encoding,encoding=null),isBuf?encoding="buffer":encoding||(encoding=state.defaultEncoding),typeof cb!="function"&&(cb=nop),state.ending?writeAfterEnd(this,cb):(isBuf||validChunk(this,state,chunk,cb))&&(state.pendingcb++,ret=writeOrBuffer(this,state,isBuf,chunk,encoding,cb)),ret};Writable.prototype.cork=function(){this._writableState.corked++};Writable.prototype.uncork=function(){var state=this._writableState;state.corked&&(state.corked--,!state.writing&&!state.corked&&!state.bufferProcessing&&state.bufferedRequest&&clearBuffer(this,state))};Writable.prototype.setDefaultEncoding=function(encoding){if(typeof encoding=="string"&&(encoding=encoding.toLowerCase()),!(["hex","utf8","utf-8","ascii","binary","base64","ucs2","ucs-2","utf16le","utf-16le","raw"].indexOf((encoding+"").toLowerCase())>-1))throw new ERR_UNKNOWN_ENCODING(encoding);return this._writableState.defaultEncoding=encoding,this};Object.defineProperty(Writable.prototype,"writableBuffer",{enumerable:!1,get:function(){return this._writableState&&this._writableState.getBuffer()}});function decodeChunk(state,chunk,encoding){return!state.objectMode&&state.decodeStrings!==!1&&typeof chunk=="string"&&(chunk=Buffer2.from(chunk,encoding)),chunk}Object.defineProperty(Writable.prototype,"writableHighWaterMark",{enumerable:!1,get:function(){return this._writableState.highWaterMark}});function writeOrBuffer(stream,state,isBuf,chunk,encoding,cb){if(!isBuf){var newChunk=decodeChunk(state,chunk,encoding);chunk!==newChunk&&(isBuf=!0,encoding="buffer",chunk=newChunk)}var len=state.objectMode?1:chunk.length;state.length+=len;var ret=state.length<state.highWaterMark;if(ret||(state.needDrain=!0),state.writing||state.corked){var last=state.lastBufferedRequest;state.lastBufferedRequest={chunk,encoding,isBuf,callback:cb,next:null},last?last.next=state.lastBufferedRequest:state.bufferedRequest=state.lastBufferedRequest,state.bufferedRequestCount+=1}else doWrite(stream,state,!1,len,chunk,encoding,cb);return ret}function doWrite(stream,state,writev,len,chunk,encoding,cb){state.writelen=len,state.writecb=cb,state.writing=!0,state.sync=!0,state.destroyed?state.onwrite(new ERR_STREAM_DESTROYED("write")):writev?stream._writev(chunk,state.onwrite):stream._write(chunk,encoding,state.onwrite),state.sync=!1}function onwriteError(stream,state,sync,er,cb){--state.pendingcb,sync?(process.nextTick(cb,er),process.nextTick(finishMaybe,stream,state),stream._writableState.errorEmitted=!0,errorOrDestroy(stream,er)):(cb(er),stream._writableState.errorEmitted=!0,errorOrDestroy(stream,er),finishMaybe(stream,state))}function onwriteStateUpdate(state){state.writing=!1,state.writecb=null,state.length-=state.writelen,state.writelen=0}function onwrite(stream,er){var state=stream._writableState,sync=state.sync,cb=state.writecb;if(typeof cb!="function")throw new ERR_MULTIPLE_CALLBACK;if(onwriteStateUpdate(state),er)onwriteError(stream,state,sync,er,cb);else{var finished=needFinish(state)||stream.destroyed;!finished&&!state.corked&&!state.bufferProcessing&&state.bufferedRequest&&clearBuffer(stream,state),sync?process.nextTick(afterWrite,stream,state,finished,cb):afterWrite(stream,state,finished,cb)}}function afterWrite(stream,state,finished,cb){finished||onwriteDrain(stream,state),state.pendingcb--,cb(),finishMaybe(stream,state)}function onwriteDrain(stream,state){state.length===0&&state.needDrain&&(state.needDrain=!1,stream.emit("drain"))}function clearBuffer(stream,state){state.bufferProcessing=!0;var entry=state.bufferedRequest;if(stream._writev&&entry&&entry.next){var l=state.bufferedRequestCount,buffer=new Array(l),holder=state.corkedRequestsFree;holder.entry=entry;for(var count=0,allBuffers=!0;entry;)buffer[count]=entry,entry.isBuf||(allBuffers=!1),entry=entry.next,count+=1;buffer.allBuffers=allBuffers,doWrite(stream,state,!0,state.length,buffer,"",holder.finish),state.pendingcb++,state.lastBufferedRequest=null,holder.next?(state.corkedRequestsFree=holder.next,holder.next=null):state.corkedRequestsFree=new CorkedRequest(state),state.bufferedRequestCount=0}else{for(;entry;){var chunk=entry.chunk,encoding=entry.encoding,cb=entry.callback,len=state.objectMode?1:chunk.length;if(doWrite(stream,state,!1,len,chunk,encoding,cb),entry=entry.next,state.bufferedRequestCount--,state.writing)break}entry===null&&(state.lastBufferedRequest=null)}state.bufferedRequest=entry,state.bufferProcessing=!1}Writable.prototype._write=function(chunk,encoding,cb){cb(new ERR_METHOD_NOT_IMPLEMENTED("_write()"))};Writable.prototype._writev=null;Writable.prototype.end=function(chunk,encoding,cb){var state=this._writableState;return typeof chunk=="function"?(cb=chunk,chunk=null,encoding=null):typeof encoding=="function"&&(cb=encoding,encoding=null),chunk!=null&&this.write(chunk,encoding),state.corked&&(state.corked=1,this.uncork()),state.ending||endWritable(this,state,cb),this};Object.defineProperty(Writable.prototype,"writableLength",{enumerable:!1,get:function(){return this._writableState.length}});function needFinish(state){return state.ending&&state.length===0&&state.bufferedRequest===null&&!state.finished&&!state.writing}function callFinal(stream,state){stream._final(function(err){state.pendingcb--,err&&errorOrDestroy(stream,err),state.prefinished=!0,stream.emit("prefinish"),finishMaybe(stream,state)})}function prefinish(stream,state){!state.prefinished&&!state.finalCalled&&(typeof stream._final=="function"&&!state.destroyed?(state.pendingcb++,state.finalCalled=!0,process.nextTick(callFinal,stream,state)):(state.prefinished=!0,stream.emit("prefinish")))}function finishMaybe(stream,state){var need=needFinish(state);if(need&&(prefinish(stream,state),state.pendingcb===0&&(state.finished=!0,stream.emit("finish"),state.autoDestroy))){var rState=stream._readableState;(!rState||rState.autoDestroy&&rState.endEmitted)&&stream.destroy()}return need}function endWritable(stream,state,cb){state.ending=!0,finishMaybe(stream,state),cb&&(state.finished?process.nextTick(cb):stream.once("finish",cb)),state.ended=!0,stream.writable=!1}function onCorkedFinish(corkReq,state,err){var entry=corkReq.entry;for(corkReq.entry=null;entry;){var cb=entry.callback;state.pendingcb--,cb(err),entry=entry.next}state.corkedRequestsFree.next=corkReq}Object.defineProperty(Writable.prototype,"destroyed",{enumerable:!1,get:function(){return this._writableState===void 0?!1:this._writableState.destroyed},set:function(value){this._writableState&&(this._writableState.destroyed=value)}});Writable.prototype.destroy=destroyImpl.destroy;Writable.prototype._undestroy=destroyImpl.undestroy;Writable.prototype._destroy=function(err,cb){cb(err)}}});var require_stream_duplex=__commonJS({"node_modules/readable-stream/lib/_stream_duplex.js"(exports2,module2){"use strict";var objectKeys=Object.keys||function(obj){var keys2=[];for(var key in obj)keys2.push(key);return keys2};module2.exports=Duplex;var Readable=require_stream_readable(),Writable=require_stream_writable();require_inherits()(Duplex,Readable);for(keys=objectKeys(Writable.prototype),v=0;v<keys.length;v++)method=keys[v],Duplex.prototype[method]||(Duplex.prototype[method]=Writable.prototype[method]);var keys,method,v;function Duplex(options){if(!(this instanceof Duplex))return new Duplex(options);Readable.call(this,options),Writable.call(this,options),this.allowHalfOpen=!0,options&&(options.readable===!1&&(this.readable=!1),options.writable===!1&&(this.writable=!1),options.allowHalfOpen===!1&&(this.allowHalfOpen=!1,this.once("end",onend)))}Object.defineProperty(Duplex.prototype,"writableHighWaterMark",{enumerable:!1,get:function(){return this._writableState.highWaterMark}});Object.defineProperty(Duplex.prototype,"writableBuffer",{enumerable:!1,get:function(){return this._writableState&&this._writableState.getBuffer()}});Object.defineProperty(Duplex.prototype,"writableLength",{enumerable:!1,get:function(){return this._writableState.length}});function onend(){this._writableState.ended||process.nextTick(onEndNT,this)}function onEndNT(self2){self2.end()}Object.defineProperty(Duplex.prototype,"destroyed",{enumerable:!1,get:function(){return this._readableState===void 0||this._writableState===void 0?!1:this._readableState.destroyed&&this._writableState.destroyed},set:function(value){this._readableState===void 0||this._writableState===void 0||(this._readableState.destroyed=value,this._writableState.destroyed=value)}})}});var require_string_decoder=__commonJS({"node_modules/string_decoder/lib/string_decoder.js"(exports2){"use strict";var Buffer2=require_safe_buffer().Buffer,isEncoding=Buffer2.isEncoding||function(encoding){switch(encoding=""+encoding,encoding&&encoding.toLowerCase()){case"hex":case"utf8":case"utf-8":case"ascii":case"binary":case"base64":case"ucs2":case"ucs-2":case"utf16le":case"utf-16le":case"raw":return!0;default:return!1}};function _normalizeEncoding(enc){if(!enc)return"utf8";for(var retried;;)switch(enc){case"utf8":case"utf-8":return"utf8";case"ucs2":case"ucs-2":case"utf16le":case"utf-16le":return"utf16le";case"latin1":case"binary":return"latin1";case"base64":case"ascii":case"hex":return enc;default:if(retried)return;enc=(""+enc).toLowerCase(),retried=!0}}function normalizeEncoding(enc){var nenc=_normalizeEncoding(enc);if(typeof nenc!="string"&&(Buffer2.isEncoding===isEncoding||!isEncoding(enc)))throw new Error("Unknown encoding: "+enc);return nenc||enc}exports2.StringDecoder=StringDecoder;function StringDecoder(encoding){this.encoding=normalizeEncoding(encoding);var nb;switch(this.encoding){case"utf16le":this.text=utf16Text,this.end=utf16End,nb=4;break;case"utf8":this.fillLast=utf8FillLast,nb=4;break;case"base64":this.text=base64Text,this.end=base64End,nb=3;break;default:this.write=simpleWrite,this.end=simpleEnd;return}this.lastNeed=0,this.lastTotal=0,this.lastChar=Buffer2.allocUnsafe(nb)}StringDecoder.prototype.write=function(buf){if(buf.length===0)return"";var r,i;if(this.lastNeed){if(r=this.fillLast(buf),r===void 0)return"";i=this.lastNeed,this.lastNeed=0}else i=0;return i<buf.length?r?r+this.text(buf,i):this.text(buf,i):r||""};StringDecoder.prototype.end=utf8End;StringDecoder.prototype.text=utf8Text;StringDecoder.prototype.fillLast=function(buf){if(this.lastNeed<=buf.length)return buf.copy(this.lastChar,this.lastTotal-this.lastNeed,0,this.lastNeed),this.lastChar.toString(this.encoding,0,this.lastTotal);buf.copy(this.lastChar,this.lastTotal-this.lastNeed,0,buf.length),this.lastNeed-=buf.length};function utf8CheckByte(byte){return byte<=127?0:byte>>5===6?2:byte>>4===14?3:byte>>3===30?4:byte>>6===2?-1:-2}function utf8CheckIncomplete(self2,buf,i){var j=buf.length-1;if(j<i)return 0;var nb=utf8CheckByte(buf[j]);return nb>=0?(nb>0&&(self2.lastNeed=nb-1),nb):--j<i||nb===-2?0:(nb=utf8CheckByte(buf[j]),nb>=0?(nb>0&&(self2.lastNeed=nb-2),nb):--j<i||nb===-2?0:(nb=utf8CheckByte(buf[j]),nb>=0?(nb>0&&(nb===2?nb=0:self2.lastNeed=nb-3),nb):0))}function utf8CheckExtraBytes(self2,buf,p){if((buf[0]&192)!==128)return self2.lastNeed=0,"\uFFFD";if(self2.lastNeed>1&&buf.length>1){if((buf[1]&192)!==128)return self2.lastNeed=1,"\uFFFD";if(self2.lastNeed>2&&buf.length>2&&(buf[2]&192)!==128)return self2.lastNeed=2,"\uFFFD"}}function utf8FillLast(buf){var p=this.lastTotal-this.lastNeed,r=utf8CheckExtraBytes(this,buf,p);if(r!==void 0)return r;if(this.lastNeed<=buf.length)return buf.copy(this.lastChar,p,0,this.lastNeed),this.lastChar.toString(this.encoding,0,this.lastTotal);buf.copy(this.lastChar,p,0,buf.length),this.lastNeed-=buf.length}function utf8Text(buf,i){var total=utf8CheckIncomplete(this,buf,i);if(!this.lastNeed)return buf.toString("utf8",i);this.lastTotal=total;var end=buf.length-(total-this.lastNeed);return buf.copy(this.lastChar,0,end),buf.toString("utf8",i,end)}function utf8End(buf){var r=buf&&buf.length?this.write(buf):"";return this.lastNeed?r+"\uFFFD":r}function utf16Text(buf,i){if((buf.length-i)%2===0){var r=buf.toString("utf16le",i);if(r){var c=r.charCodeAt(r.length-1);if(c>=55296&&c<=56319)return this.lastNeed=2,this.lastTotal=4,this.lastChar[0]=buf[buf.length-2],this.lastChar[1]=buf[buf.length-1],r.slice(0,-1)}return r}return this.lastNeed=1,this.lastTotal=2,this.lastChar[0]=buf[buf.length-1],buf.toString("utf16le",i,buf.length-1)}function utf16End(buf){var r=buf&&buf.length?this.write(buf):"";if(this.lastNeed){var end=this.lastTotal-this.lastNeed;return r+this.lastChar.toString("utf16le",0,end)}return r}function base64Text(buf,i){var n=(buf.length-i)%3;return n===0?buf.toString("base64",i):(this.lastNeed=3-n,this.lastTotal=3,n===1?this.lastChar[0]=buf[buf.length-1]:(this.lastChar[0]=buf[buf.length-2],this.lastChar[1]=buf[buf.length-1]),buf.toString("base64",i,buf.length-n))}function base64End(buf){var r=buf&&buf.length?this.write(buf):"";return this.lastNeed?r+this.lastChar.toString("base64",0,3-this.lastNeed):r}function simpleWrite(buf){return buf.toString(this.encoding)}function simpleEnd(buf){return buf&&buf.length?this.write(buf):""}}});var require_end_of_stream=__commonJS({"node_modules/readable-stream/lib/internal/streams/end-of-stream.js"(exports2,module2){"use strict";var ERR_STREAM_PREMATURE_CLOSE=require_errors3().codes.ERR_STREAM_PREMATURE_CLOSE;function once(callback){var called=!1;return function(){if(!called){called=!0;for(var _len=arguments.length,args=new Array(_len),_key=0;_key<_len;_key++)args[_key]=arguments[_key];callback.apply(this,args)}}}function noop(){}function isRequest(stream){return stream.setHeader&&typeof stream.abort=="function"}function eos(stream,opts,callback){if(typeof opts=="function")return eos(stream,null,opts);opts||(opts={}),callback=once(callback||noop);var readable=opts.readable||opts.readable!==!1&&stream.readable,writable=opts.writable||opts.writable!==!1&&stream.writable,onlegacyfinish=function(){stream.writable||onfinish()},writableEnded=stream._writableState&&stream._writableState.finished,onfinish=function(){writable=!1,writableEnded=!0,readable||callback.call(stream)},readableEnded=stream._readableState&&stream._readableState.endEmitted,onend=function(){readable=!1,readableEnded=!0,writable||callback.call(stream)},onerror=function(err){callback.call(stream,err)},onclose=function(){var err;if(readable&&!readableEnded)return(!stream._readableState||!stream._readableState.ended)&&(err=new ERR_STREAM_PREMATURE_CLOSE),callback.call(stream,err);if(writable&&!writableEnded)return(!stream._writableState||!stream._writableState.ended)&&(err=new ERR_STREAM_PREMATURE_CLOSE),callback.call(stream,err)},onrequest=function(){stream.req.on("finish",onfinish)};return isRequest(stream)?(stream.on("complete",onfinish),stream.on("abort",onclose),stream.req?onrequest():stream.on("request",onrequest)):writable&&!stream._writableState&&(stream.on("end",onlegacyfinish),stream.on("close",onlegacyfinish)),stream.on("end",onend),stream.on("finish",onfinish),opts.error!==!1&&stream.on("error",onerror),stream.on("close",onclose),function(){stream.removeListener("complete",onfinish),stream.removeListener("abort",onclose),stream.removeListener("request",onrequest),stream.req&&stream.req.removeListener("finish",onfinish),stream.removeListener("end",onlegacyfinish),stream.removeListener("close",onlegacyfinish),stream.removeListener("finish",onfinish),stream.removeListener("end",onend),stream.removeListener("error",onerror),stream.removeListener("close",onclose)}}module2.exports=eos}});var require_async_iterator=__commonJS({"node_modules/readable-stream/lib/internal/streams/async_iterator.js"(exports2,module2){"use strict";var _Object$setPrototypeO;function _defineProperty(obj,key,value){return key=_toPropertyKey(key),key in obj?Object.defineProperty(obj,key,{value,enumerable:!0,configurable:!0,writable:!0}):obj[key]=value,obj}function _toPropertyKey(arg){var key=_toPrimitive(arg,"string");return typeof key=="symbol"?key:String(key)}function _toPrimitive(input,hint){if(typeof input!="object"||input===null)return input;var prim=input[Symbol.toPrimitive];if(prim!==void 0){var res=prim.call(input,hint||"default");if(typeof res!="object")return res;throw new TypeError("@@toPrimitive must return a primitive value.")}return(hint==="string"?String:Number)(input)}var finished=require_end_of_stream(),kLastResolve=Symbol("lastResolve"),kLastReject=Symbol("lastReject"),kError=Symbol("error"),kEnded=Symbol("ended"),kLastPromise=Symbol("lastPromise"),kHandlePromise=Symbol("handlePromise"),kStream=Symbol("stream");function createIterResult(value,done){return{value,done}}function readAndResolve(iter){var resolve=iter[kLastResolve];if(resolve!==null){var data=iter[kStream].read();data!==null&&(iter[kLastPromise]=null,iter[kLastResolve]=null,iter[kLastReject]=null,resolve(createIterResult(data,!1)))}}function onReadable(iter){process.nextTick(readAndResolve,iter)}function wrapForNext(lastPromise,iter){return function(resolve,reject){lastPromise.then(function(){if(iter[kEnded]){resolve(createIterResult(void 0,!0));return}iter[kHandlePromise](resolve,reject)},reject)}}var AsyncIteratorPrototype=Object.getPrototypeOf(function(){}),ReadableStreamAsyncIteratorPrototype=Object.setPrototypeOf((_Object$setPrototypeO={get stream(){return this[kStream]},next:function(){var _this=this,error=this[kError];if(error!==null)return Promise.reject(error);if(this[kEnded])return Promise.resolve(createIterResult(void 0,!0));if(this[kStream].destroyed)return new Promise(function(resolve,reject){process.nextTick(function(){_this[kError]?reject(_this[kError]):resolve(createIterResult(void 0,!0))})});var lastPromise=this[kLastPromise],promise;if(lastPromise)promise=new Promise(wrapForNext(lastPromise,this));else{var data=this[kStream].read();if(data!==null)return Promise.resolve(createIterResult(data,!1));promise=new Promise(this[kHandlePromise])}return this[kLastPromise]=promise,promise}},_defineProperty(_Object$setPrototypeO,Symbol.asyncIterator,function(){return this}),_defineProperty(_Object$setPrototypeO,"return",function(){var _this2=this;return new Promise(function(resolve,reject){_this2[kStream].destroy(null,function(err){if(err){reject(err);return}resolve(createIterResult(void 0,!0))})})}),_Object$setPrototypeO),AsyncIteratorPrototype),createReadableStreamAsyncIterator=function(stream){var _Object$create,iterator=Object.create(ReadableStreamAsyncIteratorPrototype,(_Object$create={},_defineProperty(_Object$create,kStream,{value:stream,writable:!0}),_defineProperty(_Object$create,kLastResolve,{value:null,writable:!0}),_defineProperty(_Object$create,kLastReject,{value:null,writable:!0}),_defineProperty(_Object$create,kError,{value:null,writable:!0}),_defineProperty(_Object$create,kEnded,{value:stream._readableState.endEmitted,writable:!0}),_defineProperty(_Object$create,kHandlePromise,{value:function(resolve,reject){var data=iterator[kStream].read();data?(iterator[kLastPromise]=null,iterator[kLastResolve]=null,iterator[kLastReject]=null,resolve(createIterResult(data,!1))):(iterator[kLastResolve]=resolve,iterator[kLastReject]=reject)},writable:!0}),_Object$create));return iterator[kLastPromise]=null,finished(stream,function(err){if(err&&err.code!=="ERR_STREAM_PREMATURE_CLOSE"){var reject=iterator[kLastReject];reject!==null&&(iterator[kLastPromise]=null,iterator[kLastResolve]=null,iterator[kLastReject]=null,reject(err)),iterator[kError]=err;return}var resolve=iterator[kLastResolve];resolve!==null&&(iterator[kLastPromise]=null,iterator[kLastResolve]=null,iterator[kLastReject]=null,resolve(createIterResult(void 0,!0))),iterator[kEnded]=!0}),stream.on("readable",onReadable.bind(null,iterator)),iterator};module2.exports=createReadableStreamAsyncIterator}});var require_from=__commonJS({"node_modules/readable-stream/lib/internal/streams/from.js"(exports2,module2){"use strict";function asyncGeneratorStep(gen,resolve,reject,_next,_throw,key,arg){try{var info=gen[key](arg),value=info.value}catch(error){reject(error);return}info.done?resolve(value):Promise.resolve(value).then(_next,_throw)}function _asyncToGenerator(fn){return function(){var self2=this,args=arguments;return new Promise(function(resolve,reject){var gen=fn.apply(self2,args);function _next(value){asyncGeneratorStep(gen,resolve,reject,_next,_throw,"next",value)}function _throw(err){asyncGeneratorStep(gen,resolve,reject,_next,_throw,"throw",err)}_next(void 0)})}}function ownKeys(object,enumerableOnly){var keys=Object.keys(object);if(Object.getOwnPropertySymbols){var symbols=Object.getOwnPropertySymbols(object);enumerableOnly&&(symbols=symbols.filter(function(sym){return Object.getOwnPropertyDescriptor(object,sym).enumerable})),keys.push.apply(keys,symbols)}return keys}function _objectSpread(target){for(var i=1;i<arguments.length;i++){var source=arguments[i]!=null?arguments[i]:{};i%2?ownKeys(Object(source),!0).forEach(function(key){_defineProperty(target,key,source[key])}):Object.getOwnPropertyDescriptors?Object.defineProperties(target,Object.getOwnPropertyDescriptors(source)):ownKeys(Object(source)).forEach(function(key){Object.defineProperty(target,key,Object.getOwnPropertyDescriptor(source,key))})}return target}function _defineProperty(obj,key,value){return key=_toPropertyKey(key),key in obj?Object.defineProperty(obj,key,{value,enumerable:!0,configurable:!0,writable:!0}):obj[key]=value,obj}function _toPropertyKey(arg){var key=_toPrimitive(arg,"string");return typeof key=="symbol"?key:String(key)}function _toPrimitive(input,hint){if(typeof input!="object"||input===null)return input;var prim=input[Symbol.toPrimitive];if(prim!==void 0){var res=prim.call(input,hint||"default");if(typeof res!="object")return res;throw new TypeError("@@toPrimitive must return a primitive value.")}return(hint==="string"?String:Number)(input)}var ERR_INVALID_ARG_TYPE=require_errors3().codes.ERR_INVALID_ARG_TYPE;function from(Readable,iterable,opts){var iterator;if(iterable&&typeof iterable.next=="function")iterator=iterable;else if(iterable&&iterable[Symbol.asyncIterator])iterator=iterable[Symbol.asyncIterator]();else if(iterable&&iterable[Symbol.iterator])iterator=iterable[Symbol.iterator]();else throw new ERR_INVALID_ARG_TYPE("iterable",["Iterable"],iterable);var readable=new Readable(_objectSpread({objectMode:!0},opts)),reading=!1;readable._read=function(){reading||(reading=!0,next())};function next(){return _next2.apply(this,arguments)}function _next2(){return _next2=_asyncToGenerator(function*(){try{var _yield$iterator$next=yield iterator.next(),value=_yield$iterator$next.value,done=_yield$iterator$next.done;done?readable.push(null):readable.push(yield value)?next():reading=!1}catch(err){readable.destroy(err)}}),_next2.apply(this,arguments)}return readable}module2.exports=from}});var require_stream_readable=__commonJS({"node_modules/readable-stream/lib/_stream_readable.js"(exports2,module2){"use strict";module2.exports=Readable;var Duplex;Readable.ReadableState=ReadableState;var EE=require("events").EventEmitter,EElistenerCount=function(emitter,type){return emitter.listeners(type).length},Stream=require_stream3(),Buffer2=require("buffer").Buffer,OurUint8Array=(typeof global<"u"?global:typeof window<"u"?window:typeof self<"u"?self:{}).Uint8Array||function(){};function _uint8ArrayToBuffer(chunk){return Buffer2.from(chunk)}function _isUint8Array(obj){return Buffer2.isBuffer(obj)||obj instanceof OurUint8Array}var debugUtil=require("util"),debug;debugUtil&&debugUtil.debuglog?debug=debugUtil.debuglog("stream"):debug=function(){};var BufferList=require_buffer_list(),destroyImpl=require_destroy2(),_require=require_state(),getHighWaterMark=_require.getHighWaterMark,_require$codes=require_errors3().codes,ERR_INVALID_ARG_TYPE=_require$codes.ERR_INVALID_ARG_TYPE,ERR_STREAM_PUSH_AFTER_EOF=_require$codes.ERR_STREAM_PUSH_AFTER_EOF,ERR_METHOD_NOT_IMPLEMENTED=_require$codes.ERR_METHOD_NOT_IMPLEMENTED,ERR_STREAM_UNSHIFT_AFTER_END_EVENT=_require$codes.ERR_STREAM_UNSHIFT_AFTER_END_EVENT,StringDecoder,createReadableStreamAsyncIterator,from;require_inherits()(Readable,Stream);var errorOrDestroy=destroyImpl.errorOrDestroy,kProxyEvents=["error","close","destroy","pause","resume"];function prependListener(emitter,event,fn){if(typeof emitter.prependListener=="function")return emitter.prependListener(event,fn);!emitter._events||!emitter._events[event]?emitter.on(event,fn):Array.isArray(emitter._events[event])?emitter._events[event].unshift(fn):emitter._events[event]=[fn,emitter._events[event]]}function ReadableState(options,stream,isDuplex){Duplex=Duplex||require_stream_duplex(),options=options||{},typeof isDuplex!="boolean"&&(isDuplex=stream instanceof Duplex),this.objectMode=!!options.objectMode,isDuplex&&(this.objectMode=this.objectMode||!!options.readableObjectMode),this.highWaterMark=getHighWaterMark(this,options,"readableHighWaterMark",isDuplex),this.buffer=new BufferList,this.length=0,this.pipes=null,this.pipesCount=0,this.flowing=null,this.ended=!1,this.endEmitted=!1,this.reading=!1,this.sync=!0,this.needReadable=!1,this.emittedReadable=!1,this.readableListening=!1,this.resumeScheduled=!1,this.paused=!0,this.emitClose=options.emitClose!==!1,this.autoDestroy=!!options.autoDestroy,this.destroyed=!1,this.defaultEncoding=options.defaultEncoding||"utf8",this.awaitDrain=0,this.readingMore=!1,this.decoder=null,this.encoding=null,options.encoding&&(StringDecoder||(StringDecoder=require_string_decoder().StringDecoder),this.decoder=new StringDecoder(options.encoding),this.encoding=options.encoding)}function Readable(options){if(Duplex=Duplex||require_stream_duplex(),!(this instanceof Readable))return new Readable(options);var isDuplex=this instanceof Duplex;this._readableState=new ReadableState(options,this,isDuplex),this.readable=!0,options&&(typeof options.read=="function"&&(this._read=options.read),typeof options.destroy=="function"&&(this._destroy=options.destroy)),Stream.call(this)}Object.defineProperty(Readable.prototype,"destroyed",{enumerable:!1,get:function(){return this._readableState===void 0?!1:this._readableState.destroyed},set:function(value){this._readableState&&(this._readableState.destroyed=value)}});Readable.prototype.destroy=destroyImpl.destroy;Readable.prototype._undestroy=destroyImpl.undestroy;Readable.prototype._destroy=function(err,cb){cb(err)};Readable.prototype.push=function(chunk,encoding){var state=this._readableState,skipChunkCheck;return state.objectMode?skipChunkCheck=!0:typeof chunk=="string"&&(encoding=encoding||state.defaultEncoding,encoding!==state.encoding&&(chunk=Buffer2.from(chunk,encoding),encoding=""),skipChunkCheck=!0),readableAddChunk(this,chunk,encoding,!1,skipChunkCheck)};Readable.prototype.unshift=function(chunk){return readableAddChunk(this,chunk,null,!0,!1)};function readableAddChunk(stream,chunk,encoding,addToFront,skipChunkCheck){debug("readableAddChunk",chunk);var state=stream._readableState;if(chunk===null)state.reading=!1,onEofChunk(stream,state);else{var er;if(skipChunkCheck||(er=chunkInvalid(state,chunk)),er)errorOrDestroy(stream,er);else if(state.objectMode||chunk&&chunk.length>0)if(typeof chunk!="string"&&!state.objectMode&&Object.getPrototypeOf(chunk)!==Buffer2.prototype&&(chunk=_uint8ArrayToBuffer(chunk)),addToFront)state.endEmitted?errorOrDestroy(stream,new ERR_STREAM_UNSHIFT_AFTER_END_EVENT):addChunk(stream,state,chunk,!0);else if(state.ended)errorOrDestroy(stream,new ERR_STREAM_PUSH_AFTER_EOF);else{if(state.destroyed)return!1;state.reading=!1,state.decoder&&!encoding?(chunk=state.decoder.write(chunk),state.objectMode||chunk.length!==0?addChunk(stream,state,chunk,!1):maybeReadMore(stream,state)):addChunk(stream,state,chunk,!1)}else addToFront||(state.reading=!1,maybeReadMore(stream,state))}return!state.ended&&(state.length<state.highWaterMark||state.length===0)}function addChunk(stream,state,chunk,addToFront){state.flowing&&state.length===0&&!state.sync?(state.awaitDrain=0,stream.emit("data",chunk)):(state.length+=state.objectMode?1:chunk.length,addToFront?state.buffer.unshift(chunk):state.buffer.push(chunk),state.needReadable&&emitReadable(stream)),maybeReadMore(stream,state)}function chunkInvalid(state,chunk){var er;return!_isUint8Array(chunk)&&typeof chunk!="string"&&chunk!==void 0&&!state.objectMode&&(er=new ERR_INVALID_ARG_TYPE("chunk",["string","Buffer","Uint8Array"],chunk)),er}Readable.prototype.isPaused=function(){return this._readableState.flowing===!1};Readable.prototype.setEncoding=function(enc){StringDecoder||(StringDecoder=require_string_decoder().StringDecoder);var decoder=new StringDecoder(enc);this._readableState.decoder=decoder,this._readableState.encoding=this._readableState.decoder.encoding;for(var p=this._readableState.buffer.head,content="";p!==null;)content+=decoder.write(p.data),p=p.next;return this._readableState.buffer.clear(),content!==""&&this._readableState.buffer.push(content),this._readableState.length=content.length,this};var MAX_HWM=1073741824;function computeNewHighWaterMark(n){return n>=MAX_HWM?n=MAX_HWM:(n--,n|=n>>>1,n|=n>>>2,n|=n>>>4,n|=n>>>8,n|=n>>>16,n++),n}function howMuchToRead(n,state){return n<=0||state.length===0&&state.ended?0:state.objectMode?1:n!==n?state.flowing&&state.length?state.buffer.head.data.length:state.length:(n>state.highWaterMark&&(state.highWaterMark=computeNewHighWaterMark(n)),n<=state.length?n:state.ended?state.length:(state.needReadable=!0,0))}Readable.prototype.read=function(n){debug("read",n),n=parseInt(n,10);var state=this._readableState,nOrig=n;if(n!==0&&(state.emittedReadable=!1),n===0&&state.needReadable&&((state.highWaterMark!==0?state.length>=state.highWaterMark:state.length>0)||state.ended))return debug("read: emitReadable",state.length,state.ended),state.length===0&&state.ended?endReadable(this):emitReadable(this),null;if(n=howMuchToRead(n,state),n===0&&state.ended)return state.length===0&&endReadable(this),null;var doRead=state.needReadable;debug("need readable",doRead),(state.length===0||state.length-n<state.highWaterMark)&&(doRead=!0,debug("length less than watermark",doRead)),state.ended||state.reading?(doRead=!1,debug("reading or ended",doRead)):doRead&&(debug("do read"),state.reading=!0,state.sync=!0,state.length===0&&(state.needReadable=!0),this._read(state.highWaterMark),state.sync=!1,state.reading||(n=howMuchToRead(nOrig,state)));var ret;return n>0?ret=fromList(n,state):ret=null,ret===null?(state.needReadable=state.length<=state.highWaterMark,n=0):(state.length-=n,state.awaitDrain=0),state.length===0&&(state.ended||(state.needReadable=!0),nOrig!==n&&state.ended&&endReadable(this)),ret!==null&&this.emit("data",ret),ret};function onEofChunk(stream,state){if(debug("onEofChunk"),!state.ended){if(state.decoder){var chunk=state.decoder.end();chunk&&chunk.length&&(state.buffer.push(chunk),state.length+=state.objectMode?1:chunk.length)}state.ended=!0,state.sync?emitReadable(stream):(state.needReadable=!1,state.emittedReadable||(state.emittedReadable=!0,emitReadable_(stream)))}}function emitReadable(stream){var state=stream._readableState;debug("emitReadable",state.needReadable,state.emittedReadable),state.needReadable=!1,state.emittedReadable||(debug("emitReadable",state.flowing),state.emittedReadable=!0,process.nextTick(emitReadable_,stream))}function emitReadable_(stream){var state=stream._readableState;debug("emitReadable_",state.destroyed,state.length,state.ended),!state.destroyed&&(state.length||state.ended)&&(stream.emit("readable"),state.emittedReadable=!1),state.needReadable=!state.flowing&&!state.ended&&state.length<=state.highWaterMark,flow(stream)}function maybeReadMore(stream,state){state.readingMore||(state.readingMore=!0,process.nextTick(maybeReadMore_,stream,state))}function maybeReadMore_(stream,state){for(;!state.reading&&!state.ended&&(state.length<state.highWaterMark||state.flowing&&state.length===0);){var len=state.length;if(debug("maybeReadMore read 0"),stream.read(0),len===state.length)break}state.readingMore=!1}Readable.prototype._read=function(n){errorOrDestroy(this,new ERR_METHOD_NOT_IMPLEMENTED("_read()"))};Readable.prototype.pipe=function(dest,pipeOpts){var src=this,state=this._readableState;switch(state.pipesCount){case 0:state.pipes=dest;break;case 1:state.pipes=[state.pipes,dest];break;default:state.pipes.push(dest);break}state.pipesCount+=1,debug("pipe count=%d opts=%j",state.pipesCount,pipeOpts);var doEnd=(!pipeOpts||pipeOpts.end!==!1)&&dest!==process.stdout&&dest!==process.stderr,endFn=doEnd?onend:unpipe;state.endEmitted?process.nextTick(endFn):src.once("end",endFn),dest.on("unpipe",onunpipe);function onunpipe(readable,unpipeInfo){debug("onunpipe"),readable===src&&unpipeInfo&&unpipeInfo.hasUnpiped===!1&&(unpipeInfo.hasUnpiped=!0,cleanup())}function onend(){debug("onend"),dest.end()}var ondrain=pipeOnDrain(src);dest.on("drain",ondrain);var cleanedUp=!1;function cleanup(){debug("cleanup"),dest.removeListener("close",onclose),dest.removeListener("finish",onfinish),dest.removeListener("drain",ondrain),dest.removeListener("error",onerror),dest.removeListener("unpipe",onunpipe),src.removeListener("end",onend),src.removeListener("end",unpipe),src.removeListener("data",ondata),cleanedUp=!0,state.awaitDrain&&(!dest._writableState||dest._writableState.needDrain)&&ondrain()}src.on("data",ondata);function ondata(chunk){debug("ondata");var ret=dest.write(chunk);debug("dest.write",ret),ret===!1&&((state.pipesCount===1&&state.pipes===dest||state.pipesCount>1&&indexOf(state.pipes,dest)!==-1)&&!cleanedUp&&(debug("false write response, pause",state.awaitDrain),state.awaitDrain++),src.pause())}function onerror(er){debug("onerror",er),unpipe(),dest.removeListener("error",onerror),EElistenerCount(dest,"error")===0&&errorOrDestroy(dest,er)}prependListener(dest,"error",onerror);function onclose(){dest.removeListener("finish",onfinish),unpipe()}dest.once("close",onclose);function onfinish(){debug("onfinish"),dest.removeListener("close",onclose),unpipe()}dest.once("finish",onfinish);function unpipe(){debug("unpipe"),src.unpipe(dest)}return dest.emit("pipe",src),state.flowing||(debug("pipe resume"),src.resume()),dest};function pipeOnDrain(src){return function(){var state=src._readableState;debug("pipeOnDrain",state.awaitDrain),state.awaitDrain&&state.awaitDrain--,state.awaitDrain===0&&EElistenerCount(src,"data")&&(state.flowing=!0,flow(src))}}Readable.prototype.unpipe=function(dest){var state=this._readableState,unpipeInfo={hasUnpiped:!1};if(state.pipesCount===0)return this;if(state.pipesCount===1)return dest&&dest!==state.pipes?this:(dest||(dest=state.pipes),state.pipes=null,state.pipesCount=0,state.flowing=!1,dest&&dest.emit("unpipe",this,unpipeInfo),this);if(!dest){var dests=state.pipes,len=state.pipesCount;state.pipes=null,state.pipesCount=0,state.flowing=!1;for(var i=0;i<len;i++)dests[i].emit("unpipe",this,{hasUnpiped:!1});return this}var index=indexOf(state.pipes,dest);return index===-1?this:(state.pipes.splice(index,1),state.pipesCount-=1,state.pipesCount===1&&(state.pipes=state.pipes[0]),dest.emit("unpipe",this,unpipeInfo),this)};Readable.prototype.on=function(ev,fn){var res=Stream.prototype.on.call(this,ev,fn),state=this._readableState;return ev==="data"?(state.readableListening=this.listenerCount("readable")>0,state.flowing!==!1&&this.resume()):ev==="readable"&&!state.endEmitted&&!state.readableListening&&(state.readableListening=state.needReadable=!0,state.flowing=!1,state.emittedReadable=!1,debug("on readable",state.length,state.reading),state.length?emitReadable(this):state.reading||process.nextTick(nReadingNextTick,this)),res};Readable.prototype.addListener=Readable.prototype.on;Readable.prototype.removeListener=function(ev,fn){var res=Stream.prototype.removeListener.call(this,ev,fn);return ev==="readable"&&process.nextTick(updateReadableListening,this),res};Readable.prototype.removeAllListeners=function(ev){var res=Stream.prototype.removeAllListeners.apply(this,arguments);return(ev==="readable"||ev===void 0)&&process.nextTick(updateReadableListening,this),res};function updateReadableListening(self2){var state=self2._readableState;state.readableListening=self2.listenerCount("readable")>0,state.resumeScheduled&&!state.paused?state.flowing=!0:self2.listenerCount("data")>0&&self2.resume()}function nReadingNextTick(self2){debug("readable nexttick read 0"),self2.read(0)}Readable.prototype.resume=function(){var state=this._readableState;return state.flowing||(debug("resume"),state.flowing=!state.readableListening,resume(this,state)),state.paused=!1,this};function resume(stream,state){state.resumeScheduled||(state.resumeScheduled=!0,process.nextTick(resume_,stream,state))}function resume_(stream,state){debug("resume",state.reading),state.reading||stream.read(0),state.resumeScheduled=!1,stream.emit("resume"),flow(stream),state.flowing&&!state.reading&&stream.read(0)}Readable.prototype.pause=function(){return debug("call pause flowing=%j",this._readableState.flowing),this._readableState.flowing!==!1&&(debug("pause"),this._readableState.flowing=!1,this.emit("pause")),this._readableState.paused=!0,this};function flow(stream){var state=stream._readableState;for(debug("flow",state.flowing);state.flowing&&stream.read()!==null;);}Readable.prototype.wrap=function(stream){var _this=this,state=this._readableState,paused=!1;stream.on("end",function(){if(debug("wrapped end"),state.decoder&&!state.ended){var chunk=state.decoder.end();chunk&&chunk.length&&_this.push(chunk)}_this.push(null)}),stream.on("data",function(chunk){if(debug("wrapped data"),state.decoder&&(chunk=state.decoder.write(chunk)),!(state.objectMode&&chunk==null)&&!(!state.objectMode&&(!chunk||!chunk.length))){var ret=_this.push(chunk);ret||(paused=!0,stream.pause())}});for(var i in stream)this[i]===void 0&&typeof stream[i]=="function"&&(this[i]=(function(method){return function(){return stream[method].apply(stream,arguments)}})(i));for(var n=0;n<kProxyEvents.length;n++)stream.on(kProxyEvents[n],this.emit.bind(this,kProxyEvents[n]));return this._read=function(n2){debug("wrapped _read",n2),paused&&(paused=!1,stream.resume())},this};typeof Symbol=="function"&&(Readable.prototype[Symbol.asyncIterator]=function(){return createReadableStreamAsyncIterator===void 0&&(createReadableStreamAsyncIterator=require_async_iterator()),createReadableStreamAsyncIterator(this)});Object.defineProperty(Readable.prototype,"readableHighWaterMark",{enumerable:!1,get:function(){return this._readableState.highWaterMark}});Object.defineProperty(Readable.prototype,"readableBuffer",{enumerable:!1,get:function(){return this._readableState&&this._readableState.buffer}});Object.defineProperty(Readable.prototype,"readableFlowing",{enumerable:!1,get:function(){return this._readableState.flowing},set:function(state){this._readableState&&(this._readableState.flowing=state)}});Readable._fromList=fromList;Object.defineProperty(Readable.prototype,"readableLength",{enumerable:!1,get:function(){return this._readableState.length}});function fromList(n,state){if(state.length===0)return null;var ret;return state.objectMode?ret=state.buffer.shift():!n||n>=state.length?(state.decoder?ret=state.buffer.join(""):state.buffer.length===1?ret=state.buffer.first():ret=state.buffer.concat(state.length),state.buffer.clear()):ret=state.buffer.consume(n,state.decoder),ret}function endReadable(stream){var state=stream._readableState;debug("endReadable",state.endEmitted),state.endEmitted||(state.ended=!0,process.nextTick(endReadableNT,state,stream))}function endReadableNT(state,stream){if(debug("endReadableNT",state.endEmitted,state.length),!state.endEmitted&&state.length===0&&(state.endEmitted=!0,stream.readable=!1,stream.emit("end"),state.autoDestroy)){var wState=stream._writableState;(!wState||wState.autoDestroy&&wState.finished)&&stream.destroy()}}typeof Symbol=="function"&&(Readable.from=function(iterable,opts){return from===void 0&&(from=require_from()),from(Readable,iterable,opts)});function indexOf(xs,x){for(var i=0,l=xs.length;i<l;i++)if(xs[i]===x)return i;return-1}}});var require_stream_transform=__commonJS({"node_modules/readable-stream/lib/_stream_transform.js"(exports2,module2){"use strict";module2.exports=Transform;var _require$codes=require_errors3().codes,ERR_METHOD_NOT_IMPLEMENTED=_require$codes.ERR_METHOD_NOT_IMPLEMENTED,ERR_MULTIPLE_CALLBACK=_require$codes.ERR_MULTIPLE_CALLBACK,ERR_TRANSFORM_ALREADY_TRANSFORMING=_require$codes.ERR_TRANSFORM_ALREADY_TRANSFORMING,ERR_TRANSFORM_WITH_LENGTH_0=_require$codes.ERR_TRANSFORM_WITH_LENGTH_0,Duplex=require_stream_duplex();require_inherits()(Transform,Duplex);function afterTransform(er,data){var ts=this._transformState;ts.transforming=!1;var cb=ts.writecb;if(cb===null)return this.emit("error",new ERR_MULTIPLE_CALLBACK);ts.writechunk=null,ts.writecb=null,data!=null&&this.push(data),cb(er);var rs=this._readableState;rs.reading=!1,(rs.needReadable||rs.length<rs.highWaterMark)&&this._read(rs.highWaterMark)}function Transform(options){if(!(this instanceof Transform))return new Transform(options);Duplex.call(this,options),this._transformState={afterTransform:afterTransform.bind(this),needTransform:!1,transforming:!1,writecb:null,writechunk:null,writeencoding:null},this._readableState.needReadable=!0,this._readableState.sync=!1,options&&(typeof options.transform=="function"&&(this._transform=options.transform),typeof options.flush=="function"&&(this._flush=options.flush)),this.on("prefinish",prefinish)}function prefinish(){var _this=this;typeof this._flush=="function"&&!this._readableState.destroyed?this._flush(function(er,data){done(_this,er,data)}):done(this,null,null)}Transform.prototype.push=function(chunk,encoding){return this._transformState.needTransform=!1,Duplex.prototype.push.call(this,chunk,encoding)};Transform.prototype._transform=function(chunk,encoding,cb){cb(new ERR_METHOD_NOT_IMPLEMENTED("_transform()"))};Transform.prototype._write=function(chunk,encoding,cb){var ts=this._transformState;if(ts.writecb=cb,ts.writechunk=chunk,ts.writeencoding=encoding,!ts.transforming){var rs=this._readableState;(ts.needTransform||rs.needReadable||rs.length<rs.highWaterMark)&&this._read(rs.highWaterMark)}};Transform.prototype._read=function(n){var ts=this._transformState;ts.writechunk!==null&&!ts.transforming?(ts.transforming=!0,this._transform(ts.writechunk,ts.writeencoding,ts.afterTransform)):ts.needTransform=!0};Transform.prototype._destroy=function(err,cb){Duplex.prototype._destroy.call(this,err,function(err2){cb(err2)})};function done(stream,er,data){if(er)return stream.emit("error",er);if(data!=null&&stream.push(data),stream._writableState.length)throw new ERR_TRANSFORM_WITH_LENGTH_0;if(stream._transformState.transforming)throw new ERR_TRANSFORM_ALREADY_TRANSFORMING;return stream.push(null)}}});var require_stream_passthrough=__commonJS({"node_modules/readable-stream/lib/_stream_passthrough.js"(exports2,module2){"use strict";module2.exports=PassThrough;var Transform=require_stream_transform();require_inherits()(PassThrough,Transform);function PassThrough(options){if(!(this instanceof PassThrough))return new PassThrough(options);Transform.call(this,options)}PassThrough.prototype._transform=function(chunk,encoding,cb){cb(null,chunk)}}});var require_pipeline=__commonJS({"node_modules/readable-stream/lib/internal/streams/pipeline.js"(exports2,module2){"use strict";var eos;function once(callback){var called=!1;return function(){called||(called=!0,callback.apply(void 0,arguments))}}var _require$codes=require_errors3().codes,ERR_MISSING_ARGS=_require$codes.ERR_MISSING_ARGS,ERR_STREAM_DESTROYED=_require$codes.ERR_STREAM_DESTROYED;function noop(err){if(err)throw err}function isRequest(stream){return stream.setHeader&&typeof stream.abort=="function"}function destroyer(stream,reading,writing,callback){callback=once(callback);var closed=!1;stream.on("close",function(){closed=!0}),eos===void 0&&(eos=require_end_of_stream()),eos(stream,{readable:reading,writable:writing},function(err){if(err)return callback(err);closed=!0,callback()});var destroyed=!1;return function(err){if(!closed&&!destroyed){if(destroyed=!0,isRequest(stream))return stream.abort();if(typeof stream.destroy=="function")return stream.destroy();callback(err||new ERR_STREAM_DESTROYED("pipe"))}}}function call(fn){fn()}function pipe(from,to){return from.pipe(to)}function popCallback(streams){return!streams.length||typeof streams[streams.length-1]!="function"?noop:streams.pop()}function pipeline(){for(var _len=arguments.length,streams=new Array(_len),_key=0;_key<_len;_key++)streams[_key]=arguments[_key];var callback=popCallback(streams);if(Array.isArray(streams[0])&&(streams=streams[0]),streams.length<2)throw new ERR_MISSING_ARGS("streams");var error,destroys=streams.map(function(stream,i){var reading=i<streams.length-1,writing=i>0;return destroyer(stream,reading,writing,function(err){error||(error=err),err&&destroys.forEach(call),!reading&&(destroys.forEach(call),callback(error))})});return streams.reduce(pipe)}module2.exports=pipeline}});var require_readable=__commonJS({"node_modules/readable-stream/readable.js"(exports2,module2){var Stream=require("stream");process.env.READABLE_STREAM==="disable"&&Stream?(module2.exports=Stream.Readable,Object.assign(module2.exports,Stream),module2.exports.Stream=Stream):(exports2=module2.exports=require_stream_readable(),exports2.Stream=Stream||exports2,exports2.Readable=exports2,exports2.Writable=require_stream_writable(),exports2.Duplex=require_stream_duplex(),exports2.Transform=require_stream_transform(),exports2.PassThrough=require_stream_passthrough(),exports2.finished=require_end_of_stream(),exports2.pipeline=require_pipeline())}});var require_buffer_from=__commonJS({"node_modules/buffer-from/index.js"(exports2,module2){var toString=Object.prototype.toString,isModern=typeof Buffer<"u"&&typeof Buffer.alloc=="function"&&typeof Buffer.allocUnsafe=="function"&&typeof Buffer.from=="function";function isArrayBuffer(input){return toString.call(input).slice(8,-1)==="ArrayBuffer"}function fromArrayBuffer(obj,byteOffset,length){byteOffset>>>=0;var maxLength=obj.byteLength-byteOffset;if(maxLength<0)throw new RangeError("'offset' is out of bounds");if(length===void 0)length=maxLength;else if(length>>>=0,length>maxLength)throw new RangeError("'length' is out of bounds");return isModern?Buffer.from(obj.slice(byteOffset,byteOffset+length)):new Buffer(new Uint8Array(obj.slice(byteOffset,byteOffset+length)))}function fromString(string,encoding){if((typeof encoding!="string"||encoding==="")&&(encoding="utf8"),!Buffer.isEncoding(encoding))throw new TypeError('"encoding" must be a valid string encoding');return isModern?Buffer.from(string,encoding):new Buffer(string,encoding)}function bufferFrom(value,encodingOrOffset,length){if(typeof value=="number")throw new TypeError('"value" argument must not be a number');return isArrayBuffer(value)?fromArrayBuffer(value,encodingOrOffset,length):typeof value=="string"?fromString(value,encodingOrOffset):isModern?Buffer.from(value):new Buffer(value)}module2.exports=bufferFrom}});var require_typedarray=__commonJS({"node_modules/typedarray/index.js"(exports2){var undefined2=void 0,MAX_ARRAY_LENGTH=1e5,ECMAScript=(function(){var opts=Object.prototype.toString,ophop=Object.prototype.hasOwnProperty;return{Class:function(v){return opts.call(v).replace(/^\[object *|\]$/g,"")},HasProperty:function(o,p){return p in o},HasOwnProperty:function(o,p){return ophop.call(o,p)},IsCallable:function(o){return typeof o=="function"},ToInt32:function(v){return v>>0},ToUint32:function(v){return v>>>0}}})(),LN2=Math.LN2,abs=Math.abs,floor=Math.floor,log=Math.log,min=Math.min,pow=Math.pow,round=Math.round;function configureProperties(obj){if(getOwnPropNames&&defineProp){var props=getOwnPropNames(obj),i;for(i=0;i<props.length;i+=1)defineProp(obj,props[i],{value:obj[props[i]],writable:!1,enumerable:!1,configurable:!1})}}var defineProp;Object.defineProperty&&(function(){try{return Object.defineProperty({},"x",{}),!0}catch{return!1}})()?defineProp=Object.defineProperty:defineProp=function(o,p,desc){if(!o===Object(o))throw new TypeError("Object.defineProperty called on non-object");return ECMAScript.HasProperty(desc,"get")&&Object.prototype.__defineGetter__&&Object.prototype.__defineGetter__.call(o,p,desc.get),ECMAScript.HasProperty(desc,"set")&&Object.prototype.__defineSetter__&&Object.prototype.__defineSetter__.call(o,p,desc.set),ECMAScript.HasProperty(desc,"value")&&(o[p]=desc.value),o};var getOwnPropNames=Object.getOwnPropertyNames||function(o){if(o!==Object(o))throw new TypeError("Object.getOwnPropertyNames called on non-object");var props=[],p;for(p in o)ECMAScript.HasOwnProperty(o,p)&&props.push(p);return props};function makeArrayAccessors(obj){if(!defineProp)return;if(obj.length>MAX_ARRAY_LENGTH)throw new RangeError("Array too large for polyfill");function makeArrayAccessor(index){defineProp(obj,index,{get:function(){return obj._getter(index)},set:function(v){obj._setter(index,v)},enumerable:!0,configurable:!1})}var i;for(i=0;i<obj.length;i+=1)makeArrayAccessor(i)}function as_signed(value,bits){var s=32-bits;return value<<s>>s}function as_unsigned(value,bits){var s=32-bits;return value<<s>>>s}function packI8(n){return[n&255]}function unpackI8(bytes){return as_signed(bytes[0],8)}function packU8(n){return[n&255]}function unpackU8(bytes){return as_unsigned(bytes[0],8)}function packU8Clamped(n){return n=round(Number(n)),[n<0?0:n>255?255:n&255]}function packI16(n){return[n>>8&255,n&255]}function unpackI16(bytes){return as_signed(bytes[0]<<8|bytes[1],16)}function packU16(n){return[n>>8&255,n&255]}function unpackU16(bytes){return as_unsigned(bytes[0]<<8|bytes[1],16)}function packI32(n){return[n>>24&255,n>>16&255,n>>8&255,n&255]}function unpackI32(bytes){return as_signed(bytes[0]<<24|bytes[1]<<16|bytes[2]<<8|bytes[3],32)}function packU32(n){return[n>>24&255,n>>16&255,n>>8&255,n&255]}function unpackU32(bytes){return as_unsigned(bytes[0]<<24|bytes[1]<<16|bytes[2]<<8|bytes[3],32)}function packIEEE754(v,ebits,fbits){var bias=(1<<ebits-1)-1,s,e,f,ln,i,bits,str,bytes;function roundToEven(n){var w=floor(n),f2=n-w;return f2<.5?w:f2>.5||w%2?w+1:w}for(v!==v?(e=(1<<ebits)-1,f=pow(2,fbits-1),s=0):v===1/0||v===-1/0?(e=(1<<ebits)-1,f=0,s=v<0?1:0):v===0?(e=0,f=0,s=1/v===-1/0?1:0):(s=v<0,v=abs(v),v>=pow(2,1-bias)?(e=min(floor(log(v)/LN2),1023),f=roundToEven(v/pow(2,e)*pow(2,fbits)),f/pow(2,fbits)>=2&&(e=e+1,f=1),e>bias?(e=(1<<ebits)-1,f=0):(e=e+bias,f=f-pow(2,fbits))):(e=0,f=roundToEven(v/pow(2,1-bias-fbits)))),bits=[],i=fbits;i;i-=1)bits.push(f%2?1:0),f=floor(f/2);for(i=ebits;i;i-=1)bits.push(e%2?1:0),e=floor(e/2);for(bits.push(s?1:0),bits.reverse(),str=bits.join(""),bytes=[];str.length;)bytes.push(parseInt(str.substring(0,8),2)),str=str.substring(8);return bytes}function unpackIEEE754(bytes,ebits,fbits){var bits=[],i,j,b,str,bias,s,e,f;for(i=bytes.length;i;i-=1)for(b=bytes[i-1],j=8;j;j-=1)bits.push(b%2?1:0),b=b>>1;return bits.reverse(),str=bits.join(""),bias=(1<<ebits-1)-1,s=parseInt(str.substring(0,1),2)?-1:1,e=parseInt(str.substring(1,1+ebits),2),f=parseInt(str.substring(1+ebits),2),e===(1<<ebits)-1?f!==0?NaN:s*(1/0):e>0?s*pow(2,e-bias)*(1+f/pow(2,fbits)):f!==0?s*pow(2,-(bias-1))*(f/pow(2,fbits)):s<0?-0:0}function unpackF64(b){return unpackIEEE754(b,11,52)}function packF64(v){return packIEEE754(v,11,52)}function unpackF32(b){return unpackIEEE754(b,8,23)}function packF32(v){return packIEEE754(v,8,23)}(function(){var ArrayBuffer2=function(length){if(length=ECMAScript.ToInt32(length),length<0)throw new RangeError("ArrayBuffer size is not a small enough positive integer");this.byteLength=length,this._bytes=[],this._bytes.length=length;var i;for(i=0;i<this.byteLength;i+=1)this._bytes[i]=0;configureProperties(this)};exports2.ArrayBuffer=exports2.ArrayBuffer||ArrayBuffer2;var ArrayBufferView=function(){};function makeConstructor(bytesPerElement,pack,unpack){var ctor;return ctor=function(buffer,byteOffset,length){var array,sequence,i,s;if(!arguments.length||typeof arguments[0]=="number"){if(this.length=ECMAScript.ToInt32(arguments[0]),length<0)throw new RangeError("ArrayBufferView size is not a small enough positive integer");this.byteLength=this.length*this.BYTES_PER_ELEMENT,this.buffer=new ArrayBuffer2(this.byteLength),this.byteOffset=0}else if(typeof arguments[0]=="object"&&arguments[0].constructor===ctor)for(array=arguments[0],this.length=array.length,this.byteLength=this.length*this.BYTES_PER_ELEMENT,this.buffer=new ArrayBuffer2(this.byteLength),this.byteOffset=0,i=0;i<this.length;i+=1)this._setter(i,array._getter(i));else if(typeof arguments[0]=="object"&&!(arguments[0]instanceof ArrayBuffer2||ECMAScript.Class(arguments[0])==="ArrayBuffer"))for(sequence=arguments[0],this.length=ECMAScript.ToUint32(sequence.length),this.byteLength=this.length*this.BYTES_PER_ELEMENT,this.buffer=new ArrayBuffer2(this.byteLength),this.byteOffset=0,i=0;i<this.length;i+=1)s=sequence[i],this._setter(i,Number(s));else if(typeof arguments[0]=="object"&&(arguments[0]instanceof ArrayBuffer2||ECMAScript.Class(arguments[0])==="ArrayBuffer")){if(this.buffer=buffer,this.byteOffset=ECMAScript.ToUint32(byteOffset),this.byteOffset>this.buffer.byteLength)throw new RangeError("byteOffset out of range");if(this.byteOffset%this.BYTES_PER_ELEMENT)throw new RangeError("ArrayBuffer length minus the byteOffset is not a multiple of the element size.");if(arguments.length<3){if(this.byteLength=this.buffer.byteLength-this.byteOffset,this.byteLength%this.BYTES_PER_ELEMENT)throw new RangeError("length of buffer minus byteOffset not a multiple of the element size");this.length=this.byteLength/this.BYTES_PER_ELEMENT}else this.length=ECMAScript.ToUint32(length),this.byteLength=this.length*this.BYTES_PER_ELEMENT;if(this.byteOffset+this.byteLength>this.buffer.byteLength)throw new RangeError("byteOffset and length reference an area beyond the end of the buffer")}else throw new TypeError("Unexpected argument type(s)");this.constructor=ctor,configureProperties(this),makeArrayAccessors(this)},ctor.prototype=new ArrayBufferView,ctor.prototype.BYTES_PER_ELEMENT=bytesPerElement,ctor.prototype._pack=pack,ctor.prototype._unpack=unpack,ctor.BYTES_PER_ELEMENT=bytesPerElement,ctor.prototype._getter=function(index){if(arguments.length<1)throw new SyntaxError("Not enough arguments");if(index=ECMAScript.ToUint32(index),index>=this.length)return undefined2;var bytes=[],i,o;for(i=0,o=this.byteOffset+index*this.BYTES_PER_ELEMENT;i<this.BYTES_PER_ELEMENT;i+=1,o+=1)bytes.push(this.buffer._bytes[o]);return this._unpack(bytes)},ctor.prototype.get=ctor.prototype._getter,ctor.prototype._setter=function(index,value){if(arguments.length<2)throw new SyntaxError("Not enough arguments");if(index=ECMAScript.ToUint32(index),index>=this.length)return undefined2;var bytes=this._pack(value),i,o;for(i=0,o=this.byteOffset+index*this.BYTES_PER_ELEMENT;i<this.BYTES_PER_ELEMENT;i+=1,o+=1)this.buffer._bytes[o]=bytes[i]},ctor.prototype.set=function(index,value){if(arguments.length<1)throw new SyntaxError("Not enough arguments");var array,sequence,offset,len,i,s,d,byteOffset,byteLength,tmp;if(typeof arguments[0]=="object"&&arguments[0].constructor===this.constructor){if(array=arguments[0],offset=ECMAScript.ToUint32(arguments[1]),offset+array.length>this.length)throw new RangeError("Offset plus length of array is out of range");if(byteOffset=this.byteOffset+offset*this.BYTES_PER_ELEMENT,byteLength=array.length*this.BYTES_PER_ELEMENT,array.buffer===this.buffer){for(tmp=[],i=0,s=array.byteOffset;i<byteLength;i+=1,s+=1)tmp[i]=array.buffer._bytes[s];for(i=0,d=byteOffset;i<byteLength;i+=1,d+=1)this.buffer._bytes[d]=tmp[i]}else for(i=0,s=array.byteOffset,d=byteOffset;i<byteLength;i+=1,s+=1,d+=1)this.buffer._bytes[d]=array.buffer._bytes[s]}else if(typeof arguments[0]=="object"&&typeof arguments[0].length<"u"){if(sequence=arguments[0],len=ECMAScript.ToUint32(sequence.length),offset=ECMAScript.ToUint32(arguments[1]),offset+len>this.length)throw new RangeError("Offset plus length of array is out of range");for(i=0;i<len;i+=1)s=sequence[i],this._setter(offset+i,Number(s))}else throw new TypeError("Unexpected argument type(s)")},ctor.prototype.subarray=function(start,end){function clamp(v,min2,max){return v<min2?min2:v>max?max:v}start=ECMAScript.ToInt32(start),end=ECMAScript.ToInt32(end),arguments.length<1&&(start=0),arguments.length<2&&(end=this.length),start<0&&(start=this.length+start),end<0&&(end=this.length+end),start=clamp(start,0,this.length),end=clamp(end,0,this.length);var len=end-start;return len<0&&(len=0),new this.constructor(this.buffer,this.byteOffset+start*this.BYTES_PER_ELEMENT,len)},ctor}var Int8Array2=makeConstructor(1,packI8,unpackI8),Uint8Array2=makeConstructor(1,packU8,unpackU8),Uint8ClampedArray2=makeConstructor(1,packU8Clamped,unpackU8),Int16Array2=makeConstructor(2,packI16,unpackI16),Uint16Array2=makeConstructor(2,packU16,unpackU16),Int32Array2=makeConstructor(4,packI32,unpackI32),Uint32Array2=makeConstructor(4,packU32,unpackU32),Float32Array2=makeConstructor(4,packF32,unpackF32),Float64Array2=makeConstructor(8,packF64,unpackF64);exports2.Int8Array=exports2.Int8Array||Int8Array2,exports2.Uint8Array=exports2.Uint8Array||Uint8Array2,exports2.Uint8ClampedArray=exports2.Uint8ClampedArray||Uint8ClampedArray2,exports2.Int16Array=exports2.Int16Array||Int16Array2,exports2.Uint16Array=exports2.Uint16Array||Uint16Array2,exports2.Int32Array=exports2.Int32Array||Int32Array2,exports2.Uint32Array=exports2.Uint32Array||Uint32Array2,exports2.Float32Array=exports2.Float32Array||Float32Array2,exports2.Float64Array=exports2.Float64Array||Float64Array2})();(function(){function r(array,index){return ECMAScript.IsCallable(array.get)?array.get(index):array[index]}var IS_BIG_ENDIAN=(function(){var u16array=new exports2.Uint16Array([4660]),u8array=new exports2.Uint8Array(u16array.buffer);return r(u8array,0)===18})(),DataView2=function(buffer,byteOffset,byteLength){if(arguments.length===0)buffer=new exports2.ArrayBuffer(0);else if(!(buffer instanceof exports2.ArrayBuffer||ECMAScript.Class(buffer)==="ArrayBuffer"))throw new TypeError("TypeError");if(this.buffer=buffer||new exports2.ArrayBuffer(0),this.byteOffset=ECMAScript.ToUint32(byteOffset),this.byteOffset>this.buffer.byteLength)throw new RangeError("byteOffset out of range");if(arguments.length<3?this.byteLength=this.buffer.byteLength-this.byteOffset:this.byteLength=ECMAScript.ToUint32(byteLength),this.byteOffset+this.byteLength>this.buffer.byteLength)throw new RangeError("byteOffset and length reference an area beyond the end of the buffer");configureProperties(this)};function makeGetter(arrayType){return function(byteOffset,littleEndian){if(byteOffset=ECMAScript.ToUint32(byteOffset),byteOffset+arrayType.BYTES_PER_ELEMENT>this.byteLength)throw new RangeError("Array index out of range");byteOffset+=this.byteOffset;var uint8Array=new exports2.Uint8Array(this.buffer,byteOffset,arrayType.BYTES_PER_ELEMENT),bytes=[],i;for(i=0;i<arrayType.BYTES_PER_ELEMENT;i+=1)bytes.push(r(uint8Array,i));return!!littleEndian==!!IS_BIG_ENDIAN&&bytes.reverse(),r(new arrayType(new exports2.Uint8Array(bytes).buffer),0)}}DataView2.prototype.getUint8=makeGetter(exports2.Uint8Array),DataView2.prototype.getInt8=makeGetter(exports2.Int8Array),DataView2.prototype.getUint16=makeGetter(exports2.Uint16Array),DataView2.prototype.getInt16=makeGetter(exports2.Int16Array),DataView2.prototype.getUint32=makeGetter(exports2.Uint32Array),DataView2.prototype.getInt32=makeGetter(exports2.Int32Array),DataView2.prototype.getFloat32=makeGetter(exports2.Float32Array),DataView2.prototype.getFloat64=makeGetter(exports2.Float64Array);function makeSetter(arrayType){return function(byteOffset,value,littleEndian){if(byteOffset=ECMAScript.ToUint32(byteOffset),byteOffset+arrayType.BYTES_PER_ELEMENT>this.byteLength)throw new RangeError("Array index out of range");var typeArray=new arrayType([value]),byteArray=new exports2.Uint8Array(typeArray.buffer),bytes=[],i,byteView;for(i=0;i<arrayType.BYTES_PER_ELEMENT;i+=1)bytes.push(r(byteArray,i));!!littleEndian==!!IS_BIG_ENDIAN&&bytes.reverse(),byteView=new exports2.Uint8Array(this.buffer,byteOffset,arrayType.BYTES_PER_ELEMENT),byteView.set(bytes)}}DataView2.prototype.setUint8=makeSetter(exports2.Uint8Array),DataView2.prototype.setInt8=makeSetter(exports2.Int8Array),DataView2.prototype.setUint16=makeSetter(exports2.Uint16Array),DataView2.prototype.setInt16=makeSetter(exports2.Int16Array),DataView2.prototype.setUint32=makeSetter(exports2.Uint32Array),DataView2.prototype.setInt32=makeSetter(exports2.Int32Array),DataView2.prototype.setFloat32=makeSetter(exports2.Float32Array),DataView2.prototype.setFloat64=makeSetter(exports2.Float64Array),exports2.DataView=exports2.DataView||DataView2})()}});var require_concat_stream=__commonJS({"node_modules/multer/node_modules/concat-stream/index.js"(exports2,module2){var Writable=require_readable().Writable,inherits=require_inherits(),bufferFrom=require_buffer_from();typeof Uint8Array>"u"?U8=require_typedarray().Uint8Array:U8=Uint8Array;var U8;function ConcatStream(opts,cb){if(!(this instanceof ConcatStream))return new ConcatStream(opts,cb);typeof opts=="function"&&(cb=opts,opts={}),opts||(opts={});var encoding=opts.encoding,shouldInferEncoding=!1;encoding?(encoding=String(encoding).toLowerCase(),(encoding==="u8"||encoding==="uint8")&&(encoding="uint8array")):shouldInferEncoding=!0,Writable.call(this,{objectMode:!0}),this.encoding=encoding,this.shouldInferEncoding=shouldInferEncoding,cb&&this.on("finish",function(){cb(this.getBody())}),this.body=[]}module2.exports=ConcatStream;inherits(ConcatStream,Writable);ConcatStream.prototype._write=function(chunk,enc,next){this.body.push(chunk),next()};ConcatStream.prototype.inferEncoding=function(buff){var firstBuffer=buff===void 0?this.body[0]:buff;return Buffer.isBuffer(firstBuffer)?"buffer":typeof Uint8Array<"u"&&firstBuffer instanceof Uint8Array?"uint8array":Array.isArray(firstBuffer)?"array":typeof firstBuffer=="string"?"string":Object.prototype.toString.call(firstBuffer)==="[object Object]"?"object":"buffer"};ConcatStream.prototype.getBody=function(){return!this.encoding&&this.body.length===0?[]:(this.shouldInferEncoding&&(this.encoding=this.inferEncoding()),this.encoding==="array"?arrayConcat(this.body):this.encoding==="string"?stringConcat(this.body):this.encoding==="buffer"?bufferConcat(this.body):this.encoding==="uint8array"?u8Concat(this.body):this.body)};function isArrayish(arr){return/Array\]$/.test(Object.prototype.toString.call(arr))}function isBufferish(p){return typeof p=="string"||isArrayish(p)||p&&typeof p.subarray=="function"}function stringConcat(parts){for(var strings=[],needsToString=!1,i=0;i<parts.length;i++){var p=parts[i];typeof p=="string"||Buffer.isBuffer(p)?strings.push(p):isBufferish(p)?strings.push(bufferFrom(p)):strings.push(bufferFrom(String(p)))}return Buffer.isBuffer(parts[0])?(strings=Buffer.concat(strings),strings=strings.toString("utf8")):strings=strings.join(""),strings}function bufferConcat(parts){for(var bufs=[],i=0;i<parts.length;i++){var p=parts[i];Buffer.isBuffer(p)?bufs.push(p):isBufferish(p)?bufs.push(bufferFrom(p)):bufs.push(bufferFrom(String(p)))}return Buffer.concat(bufs)}function arrayConcat(parts){for(var res=[],i=0;i<parts.length;i++)res.push.apply(res,parts[i]);return res}function u8Concat(parts){for(var len=0,i=0;i<parts.length;i++)typeof parts[i]=="string"&&(parts[i]=bufferFrom(parts[i])),len+=parts[i].length;for(var u8=new U8(len),i=0,offset=0;i<parts.length;i++)for(var part=parts[i],j=0;j<part.length;j++)u8[offset++]=part[j];return u8}}});var require_memory=__commonJS({"node_modules/multer/storage/memory.js"(exports2,module2){var concat=require_concat_stream();function MemoryStorage(opts){}MemoryStorage.prototype._handleFile=function(req,file,cb){file.stream.pipe(concat({encoding:"buffer"},function(data){cb(null,{buffer:data,size:data.length})}))};MemoryStorage.prototype._removeFile=function(req,file,cb){delete file.buffer,cb(null)};module2.exports=function(opts){return new MemoryStorage(opts)}}});var require_multer=__commonJS({"node_modules/multer/index.js"(exports2,module2){var makeMiddleware=require_make_middleware(),diskStorage=require_disk(),memoryStorage=require_memory(),MulterError=require_multer_error();function allowAll(req,file,cb){cb(null,!0)}function Multer(options){options.storage?this.storage=options.storage:options.dest?this.storage=diskStorage({destination:options.dest}):this.storage=memoryStorage(),this.limits=options.limits,this.preservePath=options.preservePath,this.defParamCharset=options.defParamCharset||"latin1",this.fileFilter=options.fileFilter||allowAll}Multer.prototype._makeMiddleware=function(fields,fileStrategy){function setup(){var fileFilter=this.fileFilter,filesLeft=Object.create(null);fields.forEach(function(field){typeof field.maxCount=="number"?filesLeft[field.name]=field.maxCount:filesLeft[field.name]=1/0});function wrappedFileFilter(req,file,cb){if((filesLeft[file.fieldname]||0)<=0)return cb(new MulterError("LIMIT_UNEXPECTED_FILE",file.fieldname));filesLeft[file.fieldname]-=1,fileFilter(req,file,cb)}return{limits:this.limits,preservePath:this.preservePath,defParamCharset:this.defParamCharset,storage:this.storage,fileFilter:wrappedFileFilter,fileStrategy}}return makeMiddleware(setup.bind(this))};Multer.prototype.single=function(name){return this._makeMiddleware([{name,maxCount:1}],"VALUE")};Multer.prototype.array=function(name,maxCount){return this._makeMiddleware([{name,maxCount}],"ARRAY")};Multer.prototype.fields=function(fields){return this._makeMiddleware(fields,"OBJECT")};Multer.prototype.none=function(){return this._makeMiddleware([],"NONE")};Multer.prototype.any=function(){function setup(){return{limits:this.limits,preservePath:this.preservePath,defParamCharset:this.defParamCharset,storage:this.storage,fileFilter:this.fileFilter,fileStrategy:"ARRAY"}}return makeMiddleware(setup.bind(this))};function multer(options){if(options===void 0)return new Multer({});if(typeof options=="object"&&options!==null)return new Multer(options);throw new TypeError("Expected object for argument options")}module2.exports=multer;module2.exports.diskStorage=diskStorage;module2.exports.memoryStorage=memoryStorage;module2.exports.MulterError=MulterError}});var require_ua_parser=__commonJS({"node_modules/ua-parser-js/src/main/ua-parser.js"(exports2,module2){(function(window2,undefined2){"use strict";var LIBVERSION="2.0.10",UA_MAX_LENGTH=500,USER_AGENT="user-agent",EMPTY="",UNKNOWN="?",TYPEOF={FUNCTION:"function",OBJECT:"object",STRING:"string",UNDEFINED:"undefined"},BROWSER="browser",CPU="cpu",DEVICE="device",ENGINE="engine",OS="os",RESULT="result",NAME="name",TYPE="type",VENDOR="vendor",VERSION="version",ARCHITECTURE="architecture",MAJOR="major",MODEL="model",CONSOLE="console",MOBILE="mobile",TABLET="tablet",SMARTTV="smarttv",WEARABLE="wearable",XR="xr",EMBEDDED="embedded",FETCHER="fetcher",INAPP="inapp",BRANDS="brands",FORMFACTORS="formFactors",FULLVERLIST="fullVersionList",PLATFORM="platform",PLATFORMVER="platformVersion",BITNESS="bitness",CH="sec-ch-ua",CH_FULL_VER_LIST=CH+"-full-version-list",CH_ARCH=CH+"-arch",CH_BITNESS=CH+"-"+BITNESS,CH_FORM_FACTORS=CH+"-form-factors",CH_MOBILE=CH+"-"+MOBILE,CH_MODEL=CH+"-"+MODEL,CH_PLATFORM=CH+"-"+PLATFORM,CH_PLATFORM_VER=CH_PLATFORM+"-version",CH_ALL_VALUES=[BRANDS,FULLVERLIST,MOBILE,MODEL,PLATFORM,PLATFORMVER,ARCHITECTURE,FORMFACTORS,BITNESS],AMAZON="Amazon",APPLE="Apple",ASUS="ASUS",BLACKBERRY="BlackBerry",GOOGLE="Google",HUAWEI="Huawei",LENOVO="Lenovo",HONOR="Honor",LG="LG",MICROSOFT="Microsoft",MOTOROLA="Motorola",NVIDIA="Nvidia",ONEPLUS="OnePlus",OPPO="OPPO",SAMSUNG="Samsung",SHARP="Sharp",SONY="Sony",XIAOMI="Xiaomi",ZEBRA="Zebra",CHROME="Chrome",CHROMIUM="Chromium",CHROMECAST="Chromecast",EDGE="Edge",FIREFOX="Firefox",OPERA="Opera",FACEBOOK="Facebook",SOGOU="Sogou",PREFIX_MOBILE="Mobile ",SUFFIX_BROWSER=" Browser",WINDOWS="Windows",isWindow=typeof window2!==TYPEOF.UNDEFINED,NAVIGATOR=isWindow&&window2.navigator?window2.navigator:undefined2,NAVIGATOR_UADATA=NAVIGATOR&&NAVIGATOR.userAgentData?NAVIGATOR.userAgentData:undefined2,extend=function(defaultRgx,extensions){var mergedRgx={},extraRgx=extensions;if(!isExtensions(extensions)){extraRgx={};for(var i in extensions)for(var j in extensions[i])extraRgx[j]=extensions[i][j].concat(extraRgx[j]?extraRgx[j]:[])}for(var k in defaultRgx)mergedRgx[k]=extraRgx[k]&&extraRgx[k].length%2===0?extraRgx[k].concat(defaultRgx[k]):defaultRgx[k];return mergedRgx},enumerize=function(arr){for(var enums={},i=0;i<arr.length;i++)enums[arr[i].toUpperCase()]=arr[i];return enums},has=function(str1,str2){if(typeof str1===TYPEOF.OBJECT&&str1.length>0){for(var i in str1)if(lowerize(str2)==lowerize(str1[i]))return!0;return!1}return isString(str1)?lowerize(str2)==lowerize(str1):!1},isExtensions=function(obj,deep){for(var prop in obj)return/^(browser|cpu|device|engine|os)$/.test(prop)||(deep?isExtensions(obj[prop]):!1)},isString=function(val){return typeof val===TYPEOF.STRING},itemListToArray=function(header){if(!header)return undefined2;for(var arr=[],tokens=normalizeHeaderValue(header).split(","),i=0;i<tokens.length;i++)if(tokens[i].indexOf(";")>-1){var token=trim(tokens[i]).split(";v=");arr[i]={brand:token[0],version:token[1]}}else arr[i]=trim(tokens[i]);return arr},lowerize=function(str){return isString(str)?str.toLowerCase():str},majorize=function(version){return isString(version)?strip(/[^\d\.]/g,version).split(".")[0]:undefined2},normalizeHeaderValue=function(str){return isString(str)?trim(strip(/\\?\"/g,str),UA_MAX_LENGTH):undefined2},setProps=function(arr){for(var i in arr)if(arr.hasOwnProperty(i)){var propName=arr[i];typeof propName==TYPEOF.OBJECT&&propName.length==2?this[propName[0]]=propName[1]:this[propName]=undefined2}return this},strip=function(pattern,str){return isString(str)?str.replace(pattern,EMPTY):str},trim=function(str,len){return str=strip(/^\s\s*/,String(str)),typeof len===TYPEOF.UNDEFINED?str:str.substring(0,len)},rgxMapper=function(ua,arrays){if(!(!ua||!arrays))for(var i=0,j,k,p,q,matches,match;i<arrays.length&&!matches;){var regex=arrays[i],props=arrays[i+1];for(j=k=0;j<regex.length&&!matches&®ex[j];)if(matches=regex[j++].exec(ua),matches)for(p=0;p<props.length;p++)match=matches[++k],q=props[p],typeof q===TYPEOF.OBJECT&&q.length>0?q.length===2?typeof q[1]==TYPEOF.FUNCTION?this[q[0]]=q[1].call(this,match):this[q[0]]=q[1]:q.length>=3&&(typeof q[1]===TYPEOF.FUNCTION&&!(q[1].exec&&q[1].test)?q.length>3?this[q[0]]=match?q[1].apply(this,q.slice(2)):undefined2:this[q[0]]=match?q[1].call(this,match,q[2]):undefined2:q.length==3?this[q[0]]=match?match.replace(q[1],q[2]):undefined2:q.length==4?this[q[0]]=match?q[3].call(this,match.replace(q[1],q[2])):undefined2:q.length>4&&(this[q[0]]=match?q[3].apply(this,[match.replace(q[1],q[2])].concat(q.slice(4))):undefined2)):this[q]=match||undefined2;i+=2}},strTest=function(str,map){return map.test.test(str)?map.ifTrue:map.ifFalse},strMapper=function(str,map){for(var i in map)if(typeof map[i]===TYPEOF.OBJECT&&map[i].length>0){for(var j=0;j<map[i].length;j++)if(has(map[i][j],str))return i===UNKNOWN?undefined2:i}else if(has(map[i],str))return i===UNKNOWN?undefined2:i;return map.hasOwnProperty("*")?map["*"]:str},windowsVersionMap={ME:"4.90","NT 3.51":"3.51","NT 4.0":"4.0",2e3:["5.0","5.01"],XP:["5.1","5.2"],Vista:"6.0",7:"6.1",8:"6.2","8.1":"6.3",10:["6.4","10.0"],NT:""},formFactorsMap={embedded:"Automotive",mobile:"Mobile",tablet:["Tablet","EInk"],smarttv:"TV",wearable:"Watch",xr:["VR","XR"],"?":["Desktop","Unknown"],"*":undefined2},browserHintsMap={Chrome:"Google Chrome",Edge:"Microsoft Edge","Edge WebView2":"Microsoft Edge WebView2","Chrome WebView":"Android WebView","Chrome Headless":"HeadlessChrome","Huawei Browser":"HuaweiBrowser","MIUI Browser":"Miui Browser","Opera Mobi":"OperaMobile",Yandex:"YaBrowser"},defaultRegexes={browser:[[/\b(?:crmo|crios)\/([\w\.]+)/i],[VERSION,[NAME,PREFIX_MOBILE+"Chrome"]],[/webview.+edge\/([\w\.]+)/i],[VERSION,[NAME,EDGE+" WebView"],[TYPE,INAPP]],[/edg(?:e|ios|a)?\/([\w\.]+)/i],[VERSION,[NAME,"Edge"]],[/(opera mini)\/([-\w\.]+)/i,/(opera [mobiletab]{3,6})\b.+version\/([-\w\.]+)/i,/(opera)(?:.+version\/|[\/ ]+)([\w\.]+)/i],[NAME,VERSION],[/opios[\/ ]+([\w\.]+)/i],[VERSION,[NAME,OPERA+" Mini"]],[/\bop(?:rg)?x\/([\w\.]+)/i],[VERSION,[NAME,OPERA+" GX"]],[/\bopr\/([\w\.]+)/i],[VERSION,[NAME,OPERA]],[/\bb[ai]*d(?:uhd|[ub]*[aekoprswx]{5,6})[\/ ]?([\w\.]+)/i],[VERSION,[NAME,"Baidu"]],[/\b(?:mxbrowser|mxios|myie2)\/?([-\w\.]*)\b/i],[VERSION,[NAME,"Maxthon"]],[/(kindle)\/([\w\.]+)/i,/(lunascape|maxthon|netfront|jasmine|blazer|sleipnir)[\/ ]?([\w\.]*)/i,/(avant|iemobile|slim(?:browser|boat|jet))[\/ ]?([\d\.]*)/i,/(?:ms|\()(ie) ([\w\.]+)/i,/(atlas|flock|rockmelt|midori|epiphany|silk|skyfire|bolt|iron|vivaldi|iridium|phantomjs|bowser|qupzilla|falkon|rekonq|puffin|whale(?!.+naver)|qqbrowserlite|duckduckgo|klar|helio|(?=comodo_)?dragon|otter|dooble|(?:hi|lg |ovi|qute)browser|palemoon)\/v?([-\w\.]+)/i,/(brave)(?: chrome)?\/([\d\.]+)/i,/(aloha|heytap|ovi|115|surf|qwant)browser\/([\d\.]+)/i,/(qwant)(?:ios|mobile)\/([\d\.]+)/i,/(ecosia|weibo)(?:__| \w+@)([\d\.]+)/i],[NAME,VERSION],[/quark(?:pc)?\/([-\w\.]+)/i],[VERSION,[NAME,"Quark"]],[/\bddg\/([\w\.]+)/i],[VERSION,[NAME,"DuckDuckGo"]],[/(?:\buc? ?browser|(?:juc.+)ucweb| ucpc)[\/ ]?([\w\.]+)/i],[VERSION,[NAME,"UCBrowser"]],[/microm.+\bqbcore\/([\w\.]+)/i,/\bqbcore\/([\w\.]+).+microm/i,/micromessenger\/([\w\.]+)/i],[VERSION,[NAME,"WeChat"]],[/konqueror\/([\w\.]+)/i],[VERSION,[NAME,"Konqueror"]],[/trident.+rv[: ]([\w\.]{1,9})\b.+like gecko/i],[VERSION,[NAME,"IE"]],[/ya(?:search)?browser\/([\w\.]+)/i],[VERSION,[NAME,"Yandex"]],[/slbrowser\/([\w\.]+)/i],[VERSION,[NAME,"Smart "+LENOVO+SUFFIX_BROWSER]],[/(av(?:ast|g|ira))\/([\w\.]+)/i],[[NAME,/(.+)/,"$1 Secure"+SUFFIX_BROWSER],VERSION],[/norton\/([\w\.]+)/i],[VERSION,[NAME,"Norton Private"+SUFFIX_BROWSER]],[/\bfocus\/([\w\.]+)/i],[VERSION,[NAME,FIREFOX+" Focus"]],[/ mms\/([\w\.]+)$/i],[VERSION,[NAME,OPERA+" Neon"]],[/ opt\/([\w\.]+)$/i],[VERSION,[NAME,OPERA+" Touch"]],[/coc_coc\w+\/([\w\.]+)/i],[VERSION,[NAME,"Coc Coc"]],[/dolfin\/([\w\.]+)/i],[VERSION,[NAME,"Dolphin"]],[/coast\/([\w\.]+)/i],[VERSION,[NAME,OPERA+" Coast"]],[/miuibrowser\/([\w\.]+)/i],[VERSION,[NAME,"MIUI"+SUFFIX_BROWSER]],[/fxios\/([\w\.-]+)/i],[VERSION,[NAME,PREFIX_MOBILE+FIREFOX]],[/\bqihoobrowser\/?([\w\.]*)/i],[VERSION,[NAME,"360"]],[/\b(qq)\/([\w\.]+)/i],[[NAME,/(.+)/,"$1Browser"],VERSION],[/(oculus|sailfish|huawei|vivo|pico)browser\/([\w\.]+)/i],[[NAME,/(.+)/,"$1"+SUFFIX_BROWSER],VERSION],[/ HBPC\/([\w\.]+)/],[VERSION,[NAME,HUAWEI+SUFFIX_BROWSER]],[/samsungbrowser\/([\w\.]+)/i],[VERSION,[NAME,SAMSUNG+" Internet"]],[/metasr[\/ ]?([\d\.]+)/i],[VERSION,[NAME,SOGOU+" Explorer"]],[/(sogou)mo\w+\/([\d\.]+)/i],[[NAME,SOGOU+" Mobile"],VERSION],[/(electron)\/([\w\.]+) safari/i,/(tesla)(?: qtcarbrowser|\/(20\d\d\.[-\w\.]+))/i,/m?(qqbrowser|2345(?=browser|chrome|explorer))\w*[\/ ]?v?([\w\.]+)/i],[NAME,VERSION],[/(lbbrowser|luakit|rekonq|steam(?= (clie|tenf|gameo)))/i],[NAME],[/ome\/([\w\.]+).+(iron(?= saf)|360(?=[es]e$))/i],[VERSION,NAME],[/((?:fban\/fbios|fb_iab\/fb4a)(?!.+fbav)|;fbav\/([\w\.]+);)/i],[[NAME,FACEBOOK],VERSION,[TYPE,INAPP]],[/(kakao(?:talk|story))[\/ ]([\w\.]+)/i,/(naver)\(.*?(\d+\.[\w\.]+).*\)/i,/(daum)apps[\/ ]([\w\.]+)/i,/safari (line)\/([\w\.]+)/i,/\b(line)\/([\w\.]+)\/iab/i,/(alipay)client\/([\w\.]+)/i,/(twitter)(?:and| f.+e\/([\w\.]+))/i,/(bing)(?:web|sapphire)\/([\w\.]+)/i,/(instagram|snapchat|klarna)[\/ ]([-\w\.]+)/i],[NAME,VERSION,[TYPE,INAPP]],[/\bgsa\/([\w\.]+) .*safari\//i],[VERSION,[NAME,"GSA"],[TYPE,INAPP]],[/(?:musical_ly|trill)(?:.+app_?version\/|_)([\w\.]+)/i],[VERSION,[NAME,"TikTok"],[TYPE,INAPP]],[/\[(linkedin)app\]/i],[NAME,[TYPE,INAPP]],[/(zalo(?:app)?)[\/\sa-z]*([\w\.-]+)/i],[[NAME,/(.+)/,"Zalo"],VERSION,[TYPE,INAPP]],[/(chromium)[\/ ]([-\w\.]+)/i],[NAME,VERSION],[/ome-(lighthouse)$/i],[NAME,[TYPE,FETCHER]],[/headlesschrome(?:\/([\w\.]+)| )/i],[VERSION,[NAME,CHROME+" Headless"]],[/wv\).+chrome\/([\w\.]+).+edgw\//i],[VERSION,[NAME,EDGE+" WebView2"],[TYPE,INAPP]],[/; wv\).+(chrome)\/([\w\.]+)/i],[[NAME,CHROME+" WebView"],VERSION,[TYPE,INAPP]],[/droid.+ version\/([\w\.]+)\b.+(?:mobile safari|safari)/i],[VERSION,[NAME,"Android"+SUFFIX_BROWSER]],[/chrome\/([\w\.]+) mobile/i],[VERSION,[NAME,PREFIX_MOBILE+"Chrome"]],[/(chrome|omniweb|arora|[tizenoka]{5} ?browser)\/v?([\w\.]+)/i],[NAME,VERSION],[/version\/([\w\.\,]+) .*mobile(?:\/\w+ | ?)safari/i],[VERSION,[NAME,PREFIX_MOBILE+"Safari"]],[/iphone .*mobile(?:\/\w+ | ?)safari/i],[[NAME,PREFIX_MOBILE+"Safari"]],[/version\/([\w\.\,]+) .*(safari)/i],[VERSION,NAME],[/webkit.+?(mobile ?safari|safari)(\/[\w\.]+)/i],[NAME,[VERSION,"1"]],[/(webkit|khtml)\/([\w\.]+)/i],[NAME,VERSION],[/(?:mobile|tablet);.*(firefox)\/([\w\.-]+)/i],[[NAME,PREFIX_MOBILE+FIREFOX],VERSION],[/(navigator|netscape\d?)\/([-\w\.]+)/i],[[NAME,"Netscape"],VERSION],[/(wolvic|librewolf)\/([\w\.]+)/i],[NAME,VERSION],[/mobile vr; rv:([\w\.]+)\).+firefox/i],[VERSION,[NAME,FIREFOX+" Reality"]],[/ekiohf.+(flow)\/([\w\.]+)/i,/(swiftfox)/i,/(icedragon|iceweasel|camino|chimera|fennec|maemo browser|minimo|conkeror)[\/ ]?([\w\.\+]+)/i,/(seamonkey|k-meleon|icecat|iceape|firebird|phoenix|basilisk|waterfox)\/([-\w\.]+)$/i,/(firefox)\/([\w\.]+)/i,/(mozilla)\/([\w\.]+(?= .+rv\:.+gecko\/\d+)|[0-4][\w\.]+(?!.+compatible))/i,/(amaya|dillo|doris|icab|ladybird|lynx|mosaic|netsurf|obigo|polaris|w3m|(?:go|ice|up)[\. ]?browser)[-\/ ]?v?([\w\.]+)/i,/\b(links) \(([\w\.]+)/i],[NAME,[VERSION,/_/g,"."]],[/(cobalt)\/([\w\.]+)/i],[NAME,[VERSION,/[^\d\.]+./,EMPTY]]],cpu:[[/\b((amd|x|x86[-_]?|wow|win)64)\b/i],[[ARCHITECTURE,"amd64"]],[/(ia32(?=;))/i,/\b((i[346]|x)86)(pc)?\b/i],[[ARCHITECTURE,"ia32"]],[/\b(aarch64|arm(v?[89]e?l?|_?64))\b/i],[[ARCHITECTURE,"arm64"]],[/\b(arm(v[67])?ht?n?[fl]p?)\b/i],[[ARCHITECTURE,"armhf"]],[/( (ce|mobile); ppc;|\/[\w\.]+arm\b)/i],[[ARCHITECTURE,"arm"]],[/ sun4\w[;\)]/i],[[ARCHITECTURE,"sparc"]],[/\b(avr32|ia64(?=;)|68k(?=\))|\barm(?=v([1-7]|[5-7]1)l?|;|eabi)|(irix|mips|sparc)(64)?\b|pa-risc)/i,/((ppc|powerpc)(64)?)( mac|;|\))/i,/(?:osf1|[freopnt]{3,4}bsd) (alpha)/i],[[ARCHITECTURE,/ower/,EMPTY,lowerize]],[/mc680.0/i],[[ARCHITECTURE,"68k"]],[/winnt.+\[axp/i],[[ARCHITECTURE,"alpha"]]],device:[[/\b(sch-i[89]0\d|shw-m380s|sm-[ptx]\w{2,4}|gt-[pn]\d{2,4}|sgh-t8[56]9|nexus 10)/i],[MODEL,[VENDOR,SAMSUNG],[TYPE,TABLET]],[/\b((?:s[cgp]h|gt|sm)-(?![lr])\w+|sc[g-]?[\d]+a?|galaxy nexus)/i,/samsung[- ]((?!sm-[lr]|browser)[-\w]+)/i,/sec-(sgh\w+)/i],[MODEL,[VENDOR,SAMSUNG],[TYPE,MOBILE]],[/(?:\/|\()(ip(?:hone|od)[\w, ]*)[\/\);]/i],[MODEL,[VENDOR,APPLE],[TYPE,MOBILE]],[/\b(?:ios|apple\w+)\/.+[\(\/](ipad)/i,/\b(ipad)[\d,]*[;\] ].+(mac |i(pad)?)os/i],[MODEL,[VENDOR,APPLE],[TYPE,TABLET]],[/(macintosh);/i],[MODEL,[VENDOR,APPLE]],[/\b(sh-?[altvz]?\d\d[a-ekm]?)/i],[MODEL,[VENDOR,SHARP],[TYPE,MOBILE]],[/\b((?:brt|eln|hey2?|gdi|jdn)-a?[lnw]09|(?:ag[rm]3?|jdn2|kob2)-a?[lw]0[09]hn)(?: bui|\)|;)/i],[MODEL,[VENDOR,HONOR],[TYPE,TABLET]],[/honor([-\w ]+)[;\)]/i],[MODEL,[VENDOR,HONOR],[TYPE,MOBILE]],[/\b((?:ag[rs][2356]?k?|bah[234]?|bg[2o]|bt[kv]|cmr|cpn|db[ry]2?|jdn2|got|kob2?k?|mon|pce|scm|sht?|[tw]gr|vrd)-[ad]?[lw][0125][09]b?|605hw|bg2-u03|(?:gem|fdr|m2|ple|t1)-[7a]0[1-4][lu]|t1-a2[13][lw]|mediapad[\w\. ]*(?= bui|\)))\b(?!.+d\/s)/i],[MODEL,[VENDOR,HUAWEI],[TYPE,TABLET]],[/(?:huawei) ?([-\w ]+)[;\)]/i,/\b(nexus 6p|\w{2,4}e?-[atu]?[ln][\dx][\dc][adnt]?)\b(?!.+d\/s)/i],[MODEL,[VENDOR,HUAWEI],[TYPE,MOBILE]],[/oid[^\)]+; (2[\dbc]{4}(182|283|rp\w{2})[cgl]|m2105k81a?c)(?: bui|\))/i,/\b(?:xiao)?((?:red)?mi[-_ ]?pad[\w- ]*)(?: bui|\))/i],[[MODEL,/_/g," "],[VENDOR,XIAOMI],[TYPE,TABLET]],[/\b; (\w+) build\/hm\1/i,/\b(hm[-_ ]?note?[_ ]?(?:\d\w)?) bui/i,/oid[^\)]+; (redmi[\-_ ]?(?:note|k)?[\w_ ]+|m?[12]\d[01]\d\w{3,6}|poco[\w ]+|(shark )?\w{3}-[ah]0|qin ?[1-3](s\+|ultra| pro)?)( bui|; wv|\))/i,/\b(mi[-_ ]?(?:a\d|one|one[_ ]plus|note|max|cc)?[_ ]?(?:\d{0,2}\w?)[_ ]?(?:plus|se|lite|pro)?( 5g|lte)?)(?: bui|\))/i,/; ([\w ]+) miui\/v?\d/i],[[MODEL,/_/g," "],[VENDOR,XIAOMI],[TYPE,MOBILE]],[/droid.+; (cph2[3-6]\d[13579]|((gm|hd)19|(ac|be|in|kb)20|(d[en]|eb|le|mt)21|ne22)[0-2]\d|p[g-l]\w[1m]10)\b/i,/(?:one)?(?:plus)? (a\d0\d\d)(?: b|\))/i],[MODEL,[VENDOR,ONEPLUS],[TYPE,MOBILE]],[/; (\w+) bui.+ oppo/i,/\b(cph[12]\d{3}|p(?:af|c[al]|d\w|e[ar])[mt]\d0|x9007|a101op)\b/i],[MODEL,[VENDOR,OPPO],[TYPE,MOBILE]],[/\b(opd2(\d{3}a?))(?: bui|\))/i],[MODEL,[VENDOR,strMapper,{OnePlus:["203","304","403","404","413","415"],"*":OPPO}],[TYPE,TABLET]],[/(vivo (5r?|6|8l?|go|one|s|x[il]?[2-4]?)[\w\+ ]*)(?: bui|\))/i],[MODEL,[VENDOR,"BLU"],[TYPE,MOBILE]],[/; vivo (\w+)(?: bui|\))/i,/\b(v[12]\d{3}\w?[at])(?: bui|;)/i],[MODEL,[VENDOR,"Vivo"],[TYPE,MOBILE]],[/\b(rmx[1-3]\d{3})(?: bui|;|\))/i],[MODEL,[VENDOR,"Realme"],[TYPE,MOBILE]],[/(ideatab[-\w ]+|602lv|d-42a|a101lv|a2109a|a3500-hv|s[56]000|pb-6505[my]|tb-?x?\d{3,4}(?:f[cu]|xu|[av])|yt\d?-[jx]?\d+[lfmx])( bui|;|\)|\/)/i,/lenovo ?(b[68]0[08]0-?[hf]?|tab(?:[\w- ]+?)|tb[\w-]{6,7})( bui|;|\)|\/)/i],[MODEL,[VENDOR,LENOVO],[TYPE,TABLET]],[/lenovo[-_ ]?([-\w ]+?)(?: bui|\)|\/)/i],[MODEL,[VENDOR,LENOVO],[TYPE,MOBILE]],[/\b(milestone|droid(?:[2-4x]| (?:bionic|x2|pro|razr))?:?( 4g)?)\b[\w ]+build\//i,/\bmot(?:orola)?[- ]([\w\s]+)(\)| bui)/i,/((?:moto(?! 360)[-\w\(\) ]+|xt\d{3,4}[cgkosw\+]?[-\d]*|nexus 6)(?= bui|\)))/i],[MODEL,[VENDOR,MOTOROLA],[TYPE,MOBILE]],[/\b(mz60\d|xoom[2 ]{0,2}) build\//i],[MODEL,[VENDOR,MOTOROLA],[TYPE,TABLET]],[/\b(?:lg)?([vl]k\-?\d{3}) bui| 3\.[-\w; ]{10}lg?-([06cv9]{3,4})/i],[MODEL,[VENDOR,LG],[TYPE,TABLET]],[/(lm(?:-?f100[nv]?|-[\w\.]+)(?= bui|\))|nexus [45])/i,/\blg[-e;\/ ]+(?!.*(?:browser|netcast|android tv|watch|webos))(\w+)/i,/\blg-?([\d\w]+) bui/i],[MODEL,[VENDOR,LG],[TYPE,MOBILE]],[/(nokia) (t[12][01])/i],[VENDOR,MODEL,[TYPE,TABLET]],[/(?:maemo|nokia).*(n900|lumia \d+|rm-\d+)/i,/nokia[-_ ]?(([-\w\. ]*?))( bui|\)|;|\/)/i],[[MODEL,/_/g," "],[TYPE,MOBILE],[VENDOR,"Nokia"]],[/(pixel (c|tablet))\b/i],[MODEL,[VENDOR,GOOGLE],[TYPE,TABLET]],[/droid.+;(?: google)? (g(01[13]a|020[aem]|025[jn]|1b60|1f8f|2ybb|4s1m|576d|5nz6|8hhn|8vou|a02099|c15s|d1yq|e2ae|ec77|gh2x|kv4x|p4bc|pj41|r83y|tt9q|ur25|wvk6)|pixel[\d ]*a?( pro)?( xl)?( fold)?( \(5g\))?)( bui|\))/i],[MODEL,[VENDOR,GOOGLE],[TYPE,MOBILE]],[/(google) (pixelbook( go)?)/i],[VENDOR,MODEL],[/droid.+; (a?\d[0-2]{2}so|[c-g]\d{4}|so[-gl]\w+|xq-\w\w\d\d)(?= bui|\).+chrome\/(?![1-6]{0,1}\d\.))/i],[MODEL,[VENDOR,SONY],[TYPE,MOBILE]],[/sony tablet [ps]/i,/\b(?:sony)?sgp\w+(?: bui|\))/i],[[MODEL,"Xperia Tablet"],[VENDOR,SONY],[TYPE,TABLET]],[/(alexa)webm/i,/(kf[a-z]{2}wi|aeo(?!bc)\w\w)( bui|\))/i,/(kf[a-z]+)( bui|\)).+silk\//i],[MODEL,[VENDOR,AMAZON],[TYPE,TABLET]],[/((?:sd|kf)[0349hijorstuw]+)( bui|\)).+silk\//i],[[MODEL,/(.+)/g,"Fire Phone $1"],[VENDOR,AMAZON],[TYPE,MOBILE]],[/(playbook);[-\w\),; ]+(rim)/i],[MODEL,VENDOR,[TYPE,TABLET]],[/\b((?:bb[a-f]|st[hv])100-\d)/i,/(?:blackberry|\(bb10;) (\w+)/i],[MODEL,[VENDOR,BLACKBERRY],[TYPE,MOBILE]],[/(?:\b|asus_)(transfo[prime ]{4,10} \w+|eeepc|slider \w+|nexus 7|padfone|p00[cj])/i],[MODEL,[VENDOR,ASUS],[TYPE,TABLET]],[/ (z[bes]6[027][012][km][ls]|zenfone \d\w?)\b/i],[MODEL,[VENDOR,ASUS],[TYPE,MOBILE]],[/(nexus 9)/i],[MODEL,[VENDOR,"HTC"],[TYPE,TABLET]],[/(htc)[-;_ ]{1,2}([\w ]+(?=\)| bui)|\w+)/i,/(zte)[- ]([\w ]+?)(?: bui|\/|\))/i,/(alcatel|geeksphone|nexian|panasonic(?!(?:;|\.))|sony(?!-bra))[-_ ]?([-\w]*)/i],[VENDOR,[MODEL,/_/g," "],[TYPE,MOBILE]],[/tcl (xess p17aa)/i,/droid [\w\.]+; ((?:8[14]9[16]|9(?:0(?:48|60|8[01])|1(?:3[27]|66)|2(?:6[69]|9[56])|466))[gqswx])(_\w(\w|\w\w))?(\)| bui)/i],[MODEL,[VENDOR,"TCL"],[TYPE,TABLET]],[/droid [\w\.]+; (418(?:7d|8v)|5087z|5102l|61(?:02[dh]|25[adfh]|27[ai]|56[dh]|59k|65[ah])|a509dl|t(?:43(?:0w|1[adepqu])|50(?:6d|7[adju])|6(?:09dl|10k|12b|71[efho]|76[hjk])|7(?:66[ahju]|67[hw]|7[045][bh]|71[hk]|73o|76[ho]|79w|81[hks]?|82h|90[bhsy]|99b)|810[hs]))(_\w(\w|\w\w))?(\)| bui)/i],[MODEL,[VENDOR,"TCL"],[TYPE,MOBILE]],[/(itel) ((\w+))/i],[[VENDOR,lowerize],MODEL,[TYPE,strMapper,{tablet:["p10001l","w7001"],"*":"mobile"}]],[/droid.+; ([ab][1-7]-?[0178a]\d\d?)/i],[MODEL,[VENDOR,"Acer"],[TYPE,TABLET]],[/droid.+; (m[1-5] note) bui/i,/\bmz-([-\w]{2,})/i],[MODEL,[VENDOR,"Meizu"],[TYPE,MOBILE]],[/; ((?:power )?armor(?:[\w ]{0,8}))(?: bui|\))/i],[MODEL,[VENDOR,"Ulefone"],[TYPE,MOBILE]],[/; (energy ?\w+)(?: bui|\))/i,/; energizer ([\w ]+)(?: bui|\))/i],[MODEL,[VENDOR,"Energizer"],[TYPE,MOBILE]],[/; cat (b35);/i,/; (b15q?|s22 flip|s48c|s62 pro)(?: bui|\))/i],[MODEL,[VENDOR,"Cat"],[TYPE,MOBILE]],[/((?:new )?andromax[\w- ]+)(?: bui|\))/i],[MODEL,[VENDOR,"Smartfren"],[TYPE,MOBILE]],[/droid.+; (a(in)?(0(15|59|6[35])|142)p?)/i],[MODEL,[VENDOR,"Nothing"],[TYPE,MOBILE]],[/; (x67 5g|tikeasy \w+|ac[1789]\d\w+)( b|\))/i,/archos ?(5|gamepad2?|([\w ]*[t1789]|hello) ?\d+[\w ]*)( b|\))/i],[MODEL,[VENDOR,"Archos"],[TYPE,TABLET]],[/archos ([\w ]+)( b|\))/i,/; (ac[3-6]\d\w{2,8})( b|\))/i],[MODEL,[VENDOR,"Archos"],[TYPE,MOBILE]],[/blackview ([-\w ]+)( b|\))/i,/; (bv\d{4}[-\w ]*)( b|\))/i],[MODEL,[VENDOR,"Blackview"],[TYPE,MOBILE]],[/; (n159v)/i],[MODEL,[VENDOR,"HMD"],[TYPE,MOBILE]],[/((revvl[ \w\+]+|tm(?:rv|af)\w*[45]g(?:tb)?))( b|\))/i],[MODEL,[TYPE,strTest,{test:/ta?b/i,ifTrue:TABLET,ifFalse:MOBILE}],[VENDOR,"T-Mobile"]],[/(imo) (tab \w+)/i,/(infinix|tecno) (x1101b?|p904|dp(7c|8d|10a)( pro)?|p70[1-3]a?|p904|t1101)/i],[VENDOR,MODEL,[TYPE,TABLET]],[/(blackberry|benq|palm(?=\-)|sonyericsson|acer|asus(?! zenw)|dell|jolla|meizu|motorola|polytron|tecno|micromax|advan)[-_ ]?([-\w]*)/i,/; (blu|coolpad|cubot|hmd|imo|infinix|lava|oneplus|tcl|wiko)[_ ]([-\w\+ ]+?)(?: bui|\)|; r)/i,/(hp) ([\w ]+\w)/i,/(microsoft); (lumia[\w ]+)/i,/(oppo) ?([\w ]+) bui/i,/(hisense) ([ehv][\w ]+)\)/i,/droid[^;]+; (philips)[_ ]([sv-x][\d]{3,4}[xz]?)/i],[VENDOR,MODEL,[TYPE,MOBILE]],[/(kobo)\s(ereader|touch)/i,/(hp).+(touchpad(?!.+tablet)|tablet)/i,/(kindle)\/([\w\.]+)/i],[VENDOR,MODEL,[TYPE,TABLET]],[/(surface duo)/i],[MODEL,[VENDOR,MICROSOFT],[TYPE,TABLET]],[/droid [\d\.]+; (fp\du?)(?: b|\))/i],[MODEL,[VENDOR,"Fairphone"],[TYPE,MOBILE]],[/((?:tegranote|shield t(?!.+d tv))[\w- ]*?)(?: b|\))/i],[MODEL,[VENDOR,NVIDIA],[TYPE,TABLET]],[/(sprint) (\w+)/i],[VENDOR,MODEL,[TYPE,MOBILE]],[/(kin\.[onetw]{3})/i],[[MODEL,/\./g," "],[VENDOR,MICROSOFT],[TYPE,MOBILE]],[/droid.+; ([c6]+|et5[16]|mc[239][23]x?|vc8[03]x?)\)/i],[MODEL,[VENDOR,ZEBRA],[TYPE,TABLET]],[/droid.+; (ec30|ps20|tc[2-8]\d[kx])\)/i],[MODEL,[VENDOR,ZEBRA],[TYPE,MOBILE]],[/(philips)[\w ]+tv/i,/smart-tv.+(samsung)/i],[VENDOR,[TYPE,SMARTTV]],[/hbbtv.+maple;(\d+)/i],[[MODEL,/^/,"SmartTV"],[VENDOR,SAMSUNG],[TYPE,SMARTTV]],[/(vizio)(?: |.+model\/)(\w+-\w+)/i,/tcast.+(lg)e?. ([-\w]+)/i],[VENDOR,MODEL,[TYPE,SMARTTV]],[/(nux; netcast.+smarttv|lg (netcast\.tv-201\d|android tv))/i],[[VENDOR,LG],[TYPE,SMARTTV]],[/(apple) ?tv/i],[VENDOR,[MODEL,APPLE+" TV"],[TYPE,SMARTTV]],[/crkey.*devicetype\/chromecast/i],[[MODEL,CHROMECAST+" Third Generation"],[VENDOR,GOOGLE],[TYPE,SMARTTV]],[/crkey.*devicetype\/([^/]*)/i],[[MODEL,/^/,"Chromecast "],[VENDOR,GOOGLE],[TYPE,SMARTTV]],[/fuchsia.*crkey/i],[[MODEL,CHROMECAST+" Nest Hub"],[VENDOR,GOOGLE],[TYPE,SMARTTV]],[/crkey/i],[[MODEL,CHROMECAST],[VENDOR,GOOGLE],[TYPE,SMARTTV]],[/(portaltv)/i],[MODEL,[VENDOR,FACEBOOK],[TYPE,SMARTTV]],[/droid.+aft(\w+)( bui|\))/i],[MODEL,[VENDOR,AMAZON],[TYPE,SMARTTV]],[/(shield \w+ tv)/i],[MODEL,[VENDOR,NVIDIA],[TYPE,SMARTTV]],[/\(dtv[\);].+(aquos)/i,/(aquos-tv[\w ]+)\)/i],[MODEL,[VENDOR,SHARP],[TYPE,SMARTTV]],[/(bravia[\w ]+)( bui|\))/i],[MODEL,[VENDOR,SONY],[TYPE,SMARTTV]],[/(mi(tv|box)-?\w+) bui/i],[MODEL,[VENDOR,XIAOMI],[TYPE,SMARTTV]],[/Hbbtv.*(technisat) (.*);/i],[VENDOR,MODEL,[TYPE,SMARTTV]],[/\b(roku)[\dx]*[\)\/]((?:dvp-)?[\d\.]*)/i,/hbbtv\/\d+\.\d+\.\d+ +\([\w\+ ]*; *([\w\d][^;]*);([^;]*)/i],[[VENDOR,/.+\/(\w+)/,"$1",strMapper,{LG:"lge"}],[MODEL,trim],[TYPE,SMARTTV]],[/(playstation \w+)/i],[MODEL,[VENDOR,SONY],[TYPE,CONSOLE]],[/\b(xbox(?: one)?(?!; xbox))[\); ]/i],[MODEL,[VENDOR,MICROSOFT],[TYPE,CONSOLE]],[/(ouya)/i,/(nintendo) (\w+)/i,/(retroid) (pocket ([^\)]+))/i,/(valve).+(steam deck)/i,/droid.+; ((shield|rgcube|gr0006))( bui|\))/i],[[VENDOR,strMapper,{Nvidia:"Shield",Anbernic:"RGCUBE",Logitech:"GR0006"}],MODEL,[TYPE,CONSOLE]],[/\b(sm-[lr]\d\d[0156][fnuw]?s?|gear live)\b/i],[MODEL,[VENDOR,SAMSUNG],[TYPE,WEARABLE]],[/((pebble))app/i,/(asus|google|lg|oppo|xiaomi) ((pixel |zen)?watch[\w ]*)( bui|\))/i],[VENDOR,MODEL,[TYPE,WEARABLE]],[/(ow(?:19|20)?we?[1-3]{1,3})/i],[MODEL,[VENDOR,OPPO],[TYPE,WEARABLE]],[/(watch)(?: ?os[,\/]|\d,\d\/)[\d\.]+/i],[MODEL,[VENDOR,APPLE],[TYPE,WEARABLE]],[/(opwwe\d{3})/i],[MODEL,[VENDOR,ONEPLUS],[TYPE,WEARABLE]],[/(moto 360)/i],[MODEL,[VENDOR,MOTOROLA],[TYPE,WEARABLE]],[/(smartwatch 3)/i],[MODEL,[VENDOR,SONY],[TYPE,WEARABLE]],[/(g watch r)/i],[MODEL,[VENDOR,LG],[TYPE,WEARABLE]],[/droid.+; (wt63?0{2,3})\)/i],[MODEL,[VENDOR,ZEBRA],[TYPE,WEARABLE]],[/droid.+; (glass) \d/i],[MODEL,[VENDOR,GOOGLE],[TYPE,XR]],[/(pico) ([\w ]+) os\d/i],[VENDOR,MODEL,[TYPE,XR]],[/(quest( \d| pro)?s?).+vr/i],[MODEL,[VENDOR,FACEBOOK],[TYPE,XR]],[/mobile vr; rv.+firefox/i],[[TYPE,XR]],[/(tesla)(?: qtcarbrowser|\/[-\w\.]+)/i],[VENDOR,[TYPE,EMBEDDED]],[/(aeobc)\b/i],[MODEL,[VENDOR,AMAZON],[TYPE,EMBEDDED]],[/(homepod).+mac os/i],[MODEL,[VENDOR,APPLE],[TYPE,EMBEDDED]],[/windows iot/i],[[TYPE,EMBEDDED]],[/droid.+; ([\w- ]+) (4k|android|smart|google)[- ]?tv/i],[MODEL,[TYPE,SMARTTV]],[/\b((4k|android|smart|opera)[- ]?tv|tv; rv:|large screen[\w ]+safari)\b/i],[[TYPE,SMARTTV]],[/droid .+?; ([^;]+?)(?: bui|; wv\)|\) applew|; hmsc).+?(mobile|vr|\d) safari/i],[MODEL,[TYPE,strMapper,{mobile:"Mobile",xr:"VR","*":TABLET}]],[/\b((tablet|tab)[;\/]|focus\/\d(?!.+mobile))/i],[[TYPE,TABLET]],[/(phone|mobile(?:[;\/]| [ \w\/\.]*safari)|pda(?=.+windows ce))/i],[[TYPE,MOBILE]],[/droid .+?; ([\w\. -]+)( bui|\))/i],[MODEL,[VENDOR,"Generic"]]],engine:[[/windows.+ edge\/([\w\.]+)/i],[VERSION,[NAME,EDGE+"HTML"]],[/(arkweb)\/([\w\.]+)/i],[NAME,VERSION],[/webkit\/537\.36.+chrome\/(?!27)([\w\.]+)/i],[VERSION,[NAME,"Blink"]],[/(presto)\/([\w\.]+)/i,/(webkit|trident|netfront|netsurf|amaya|lynx|w3m|goanna|servo)\/([\w\.]+)/i,/ekioh(flow)\/([\w\.]+)/i,/(khtml|tasman|links|dillo)[\/ ]\(?([\w\.]+)/i,/(icab)[\/ ]([23]\.[\d\.]+)/i,/\b(libweb)/i],[NAME,VERSION],[/ladybird\//i],[[NAME,"LibWeb"]],[/rv\:([\w\.]{1,9})\b.+(gecko)/i],[VERSION,NAME]],os:[[/(windows nt) (6\.[23]); arm/i],[[NAME,/N/,"R"],[VERSION,strMapper,windowsVersionMap]],[/(windows (?:phone|mobile|iot))(?: os)?[\/ ]?([\d\.]*( se)?)/i,/(windows)[\/ ](1[01]|2000|3\.1|7|8(\.1)?|9[58]|me|server 20\d\d( r2)?|vista|xp)/i],[NAME,VERSION],[/windows nt ?([\d\.\)]*)(?!.+xbox)/i,/\bwin(?=3| ?9|n)(?:nt| 9x )?([\d\.;]*)/i],[[VERSION,/(;|\))/g,"",strMapper,windowsVersionMap],[NAME,WINDOWS]],[/(windows ce)\/?([\d\.]*)/i],[NAME,VERSION],[/[adehimnop]{4,7}\b(?:.*os ([\w]+) like mac|; opera)/i,/(?:ios;fbsv|ios(?=.+ip(?:ad|hone)|.+apple ?tv)|ip(?:ad|hone)(?: |.+i(?:pad)?)os|apple ?tv.+ios)[\/ ]([\w\.]+)/i,/\btvos ?([\w\.]+)/i,/cfnetwork\/.+darwin/i],[[VERSION,/_/g,"."],[NAME,"iOS"]],[/(mac os x) ?([\w\. ]*)/i,/(macintosh|mac_powerpc\b)(?!.+(haiku|morphos))/i],[[NAME,"macOS"],[VERSION,/_/g,"."]],[/android ([\d\.]+).*crkey/i],[VERSION,[NAME,CHROMECAST+" Android"]],[/fuchsia.*crkey\/([\d\.]+)/i],[VERSION,[NAME,CHROMECAST+" Fuchsia"]],[/crkey\/([\d\.]+).*devicetype\/smartspeaker/i],[VERSION,[NAME,CHROMECAST+" SmartSpeaker"]],[/linux.*crkey\/([\d\.]+)/i],[VERSION,[NAME,CHROMECAST+" Linux"]],[/crkey\/([\d\.]+)/i],[VERSION,[NAME,CHROMECAST]],[/droid ([\w\.]+)\b.+(android[- ]x86)/i],[VERSION,NAME],[/(ubuntu) ([\w\.]+) like android/i],[[NAME,/(.+)/,"$1 Touch"],VERSION],[/(harmonyos)[\/ ]?([\d\.]*)/i,/(android|bada|blackberry|kaios|maemo|meego|openharmony|qnx|rim tablet os|sailfish|series40|symbian|tizen)\w*[-\/\.; ]?([\d\.]*)/i],[NAME,VERSION],[/\(bb(10);/i],[VERSION,[NAME,BLACKBERRY]],[/(?:symbian ?os|symbos|s60(?=;)|series ?60)[-\/ ]?([\w\.]*)/i],[VERSION,[NAME,"Symbian"]],[/mozilla\/[\d\.]+ \((?:mobile[;\w ]*|tablet|tv|[^\)]*(?:viera|lg(?:l25|-d300)|alcatel ?o.+|y300-f1)); rv:([\w\.]+)\).+gecko\//i],[VERSION,[NAME,FIREFOX+" OS"]],[/\b(?:hp)?wos(?:browser)?\/([\w\.]+)/i,/webos(?:[ \/]?|\.tv-20(?=2[2-9]))(\d[\d\.]*)/i],[VERSION,[NAME,"webOS"]],[/web0s;.+?(?:chr[o0]me|safari)\/(\d+)/i],[[VERSION,strMapper,{25:"120",24:"108",23:"94",22:"87",6:"79",5:"68",4:"53",3:"38",2:"538",1:"537","*":"TV"}],[NAME,"webOS"]],[/watch(?: ?os[,\/ ]|\d,\d\/)([\d\.]+)/i],[VERSION,[NAME,"watchOS"]],[/cros [\w]+(?:\)| ([\w\.]+)\b)/i],[VERSION,[NAME,"Chrome OS"]],[/kepler ([\w\.]+); (aft|aeo)/i],[VERSION,[NAME,"Vega OS"]],[/(netrange)mmh/i,/(nettv)\/(\d+\.[\w\.]+)/i,/(nintendo|playstation) (\w+)/i,/(xbox); +xbox ([^\);]+)/i,/(pico) .+os([\w\.]+)/i,/\b(joli|palm)\b ?(?:os)?\/?([\w\.]*)/i,/linux.+(mint)[\/\(\) ]?([\w\.]*)/i,/(mageia|vectorlinux|fuchsia|arcaos|arch(?= ?linux))[;l ]([\d\.]*)/i,/([kxln]?ubuntu|debian|suse|opensuse|gentoo|slackware|fedora|mandriva|centos|pclinuxos|red ?hat|zenwalk|linpus|raspbian|plan 9|minix|risc os|contiki|deepin|manjaro|elementary os|sabayon|linspire|knoppix)(?: gnu[\/ ]linux)?(?: enterprise)?(?:[- ]linux)?(?:-gnu)?[-\/ ]?(?!chrom|package)([-\w\.]*)/i,/((?:open)?solaris)[-\/ ]?([\w\.]*)/i,/\b(aix)[; ]([1-9\.]{0,4})/i,/(hurd|linux|morphos)(?: (?:arm|x86|ppc)\w*| ?)([\w\.]*)/i,/(gnu) ?([\w\.]*)/i,/\b([-frentopcghs]{0,5}bsd|dragonfly)[\/ ]?(?!amd|[ix346]{1,2}86)([\w\.]*)/i,/(haiku) ?(r\d)?/i],[NAME,VERSION],[/(sunos) ?([\d\.]*)/i],[[NAME,"Solaris"],VERSION],[/\b(beos|os\/2|amigaos|openvms|hp-ux|serenityos)/i,/(unix) ?([\w\.]*)/i],[NAME,VERSION]]},defaultProps=(function(){var props={init:{},isIgnore:{},isIgnoreRgx:{},toString:{}};return setProps.call(props.init,[[BROWSER,[NAME,VERSION,MAJOR,TYPE]],[CPU,[ARCHITECTURE]],[DEVICE,[TYPE,MODEL,VENDOR]],[ENGINE,[NAME,VERSION]],[OS,[NAME,VERSION]]]),setProps.call(props.isIgnore,[[BROWSER,[VERSION,MAJOR]],[ENGINE,[VERSION]],[OS,[VERSION]]]),setProps.call(props.isIgnoreRgx,[[BROWSER,/ ?browser$/i],[OS,/ ?os$/i]]),setProps.call(props.toString,[[BROWSER,[NAME,VERSION]],[CPU,[ARCHITECTURE]],[DEVICE,[VENDOR,MODEL]],[ENGINE,[NAME,VERSION]],[OS,[NAME,VERSION]]]),props})(),createIData=function(item,itemType){var init_props=defaultProps.init[itemType],is_ignoreProps=defaultProps.isIgnore[itemType]||0,is_ignoreRgx=defaultProps.isIgnoreRgx[itemType]||0,toString_props=defaultProps.toString[itemType]||0;function IData(){setProps.call(this,init_props)}return IData.prototype.getItem=function(){return item},IData.prototype.withClientHints=function(){return NAVIGATOR_UADATA?NAVIGATOR_UADATA.getHighEntropyValues(CH_ALL_VALUES).then(function(res){return item.setCH(new UACHData(res,!1)).parseCH().get()}):item.parseCH().get()},IData.prototype.withFeatureCheck=function(){return item.detectFeature().get()},itemType!=RESULT&&(IData.prototype.is=function(strToCheck){var is=!1;for(var i in this)if(this.hasOwnProperty(i)&&!has(is_ignoreProps,i)&&lowerize(is_ignoreRgx?strip(is_ignoreRgx,this[i]):this[i])==lowerize(is_ignoreRgx?strip(is_ignoreRgx,strToCheck):strToCheck)){if(is=!0,strToCheck!=TYPEOF.UNDEFINED)break}else if(strToCheck==TYPEOF.UNDEFINED&&is){is=!is;break}return is},IData.prototype.toString=function(){var str=EMPTY;for(var i in toString_props)typeof this[toString_props[i]]!==TYPEOF.UNDEFINED&&(str+=(str?" ":EMPTY)+this[toString_props[i]]);return str||TYPEOF.UNDEFINED}),IData.prototype.then=function(cb){var that=this,IDataResolve=function(){for(var prop in that)that.hasOwnProperty(prop)&&(this[prop]=that[prop])};IDataResolve.prototype={is:IData.prototype.is,toString:IData.prototype.toString,withClientHints:IData.prototype.withClientHints,withFeatureCheck:IData.prototype.withFeatureCheck};var resolveData=new IDataResolve;return cb(resolveData),resolveData},new IData};function UACHData(uach,isHttpUACH){if(uach=uach||{},setProps.call(this,CH_ALL_VALUES),isHttpUACH)setProps.call(this,[[BRANDS,itemListToArray(uach[CH])],[FULLVERLIST,itemListToArray(uach[CH_FULL_VER_LIST])],[MOBILE,/\?1/.test(uach[CH_MOBILE])],[MODEL,normalizeHeaderValue(uach[CH_MODEL])],[PLATFORM,normalizeHeaderValue(uach[CH_PLATFORM])],[PLATFORMVER,normalizeHeaderValue(uach[CH_PLATFORM_VER])],[ARCHITECTURE,normalizeHeaderValue(uach[CH_ARCH])],[FORMFACTORS,itemListToArray(uach[CH_FORM_FACTORS])],[BITNESS,normalizeHeaderValue(uach[CH_BITNESS])]]);else for(var prop in uach)this.hasOwnProperty(prop)&&typeof uach[prop]!==TYPEOF.UNDEFINED&&(this[prop]=uach[prop])}function UAItem(itemType,ua,rgxMap,uaCH){return setProps.call(this,[["itemType",itemType],["ua",ua],["uaCH",uaCH],["rgxMap",rgxMap],["data",createIData(this,itemType)]]),this}UAItem.prototype.get=function(prop){return prop?this.data.hasOwnProperty(prop)?this.data[prop]:undefined2:this.data},UAItem.prototype.set=function(prop,val){return this.data[prop]=val,this},UAItem.prototype.setCH=function(ch){return this.uaCH=ch,this},UAItem.prototype.detectFeature=function(){if(NAVIGATOR&&NAVIGATOR.userAgent==this.ua)switch(this.itemType){case BROWSER:NAVIGATOR.brave&&typeof NAVIGATOR.brave.isBrave==TYPEOF.FUNCTION&&this.set(NAME,"Brave");break;case DEVICE:!this.get(TYPE)&&NAVIGATOR_UADATA&&NAVIGATOR_UADATA[MOBILE]&&this.set(TYPE,MOBILE),this.get(MODEL)=="Macintosh"&&NAVIGATOR&&typeof NAVIGATOR.standalone!==TYPEOF.UNDEFINED&&NAVIGATOR.maxTouchPoints&&NAVIGATOR.maxTouchPoints>2&&this.set(MODEL,"iPad").set(TYPE,TABLET);break;case OS:!this.get(NAME)&&NAVIGATOR_UADATA&&NAVIGATOR_UADATA[PLATFORM]&&this.set(NAME,NAVIGATOR_UADATA[PLATFORM]);break;case RESULT:var data=this.data,detect=function(itemType){return data[itemType].getItem().detectFeature().get()};this.set(BROWSER,detect(BROWSER)).set(CPU,detect(CPU)).set(DEVICE,detect(DEVICE)).set(ENGINE,detect(ENGINE)).set(OS,detect(OS))}return this},UAItem.prototype.parseUA=function(){switch(this.itemType!=RESULT&&rgxMapper.call(this.data,this.ua,this.rgxMap),this.itemType){case BROWSER:this.set(MAJOR,majorize(this.get(VERSION)));break;case OS:if(this.get(NAME)=="iOS"&&this.get(VERSION)&&/^1[89][^\d]/.exec(this.get(VERSION))){var realVersion=/\) Version\/((\d+)[\d\.]*)/.exec(this.ua);realVersion&&parseInt(realVersion[2],10)>=26&&this.set(VERSION,realVersion[1])}break}return this},UAItem.prototype.parseCH=function(){var uaCH=this.uaCH,rgxMap=this.rgxMap;switch(this.itemType){case BROWSER:case ENGINE:var brands=uaCH[FULLVERLIST]||uaCH[BRANDS],prevName;if(brands)for(var i=0;i<brands.length;i++){var brandName=brands[i].brand||brands[i],brandVersion=brands[i].version;this.itemType==BROWSER&&!/not.a.brand/i.test(brandName)&&(!prevName||/Chrom/.test(prevName)&&brandName!=CHROMIUM||prevName==EDGE&&/WebView2/.test(brandName))&&(brandName=strMapper(brandName,browserHintsMap),prevName=this.get(NAME),prevName&&!/Chrom/.test(prevName)&&/Chrom/.test(brandName)||this.set(NAME,brandName).set(VERSION,brandVersion).set(MAJOR,majorize(brandVersion)),prevName=brandName),this.itemType==ENGINE&&brandName==CHROMIUM&&this.set(VERSION,brandVersion)}break;case CPU:var archName=uaCH[ARCHITECTURE];archName&&(archName&&uaCH[BITNESS]=="64"&&(archName+="64"),rgxMapper.call(this.data,archName+";",rgxMap));break;case DEVICE:if(uaCH[MOBILE]&&this.set(TYPE,MOBILE),uaCH[MODEL]&&(this.set(MODEL,uaCH[MODEL]),!this.get(TYPE)||!this.get(VENDOR))){var reParse={};rgxMapper.call(reParse,"droid 9; "+uaCH[MODEL]+")",rgxMap),!this.get(TYPE)&&reParse.type&&this.set(TYPE,reParse.type),!this.get(VENDOR)&&reParse.vendor&&this.set(VENDOR,reParse.vendor)}if(uaCH[FORMFACTORS]){var ff;if(typeof uaCH[FORMFACTORS]!="string")for(var idx=0;!ff&&idx<uaCH[FORMFACTORS].length;)ff=strMapper(uaCH[FORMFACTORS][idx++],formFactorsMap);else ff=strMapper(uaCH[FORMFACTORS],formFactorsMap);this.set(TYPE,ff)}break;case OS:var osName=uaCH[PLATFORM];if(osName){var osVersion=uaCH[PLATFORMVER];osName==WINDOWS&&(osVersion=parseInt(majorize(osVersion),10)>=13?"11":"10"),this.set(NAME,osName).set(VERSION,osVersion)}this.get(NAME)==WINDOWS&&uaCH[MODEL]=="Xbox"&&this.set(NAME,"Xbox").set(VERSION,undefined2);break;case RESULT:var data=this.data,parse=function(itemType){return data[itemType].getItem().setCH(uaCH).parseCH().get()};this.set(BROWSER,parse(BROWSER)).set(CPU,parse(CPU)).set(DEVICE,parse(DEVICE)).set(ENGINE,parse(ENGINE)).set(OS,parse(OS))}return this};function UAParser(ua,extensions,headers){if(typeof ua===TYPEOF.OBJECT?(isExtensions(ua,!0)?(typeof extensions===TYPEOF.OBJECT&&(headers=extensions),extensions=ua):(headers=ua,extensions=undefined2),ua=undefined2):typeof ua===TYPEOF.STRING&&!isExtensions(extensions,!0)&&(headers=extensions,extensions=undefined2),headers)if(typeof headers.append===TYPEOF.FUNCTION){var kv={};headers.forEach(function(v,k){kv[String(k).toLowerCase()]=v}),headers=kv}else{var normalized={};for(var header in headers)headers.hasOwnProperty(header)&&(normalized[String(header).toLowerCase()]=headers[header]);headers=normalized}if(!(this instanceof UAParser))return new UAParser(ua,extensions,headers).getResult();var userAgent=typeof ua===TYPEOF.STRING?ua:headers&&headers[USER_AGENT]?headers[USER_AGENT]:NAVIGATOR&&NAVIGATOR.userAgent?NAVIGATOR.userAgent:EMPTY,httpUACH=new UACHData(headers,!0),regexMap=defaultRegexes,createItemFunc=function(itemType){return itemType==RESULT?function(){return new UAItem(itemType,userAgent,regexMap,httpUACH).set("ua",userAgent).set(BROWSER,this.getBrowser()).set(CPU,this.getCPU()).set(DEVICE,this.getDevice()).set(ENGINE,this.getEngine()).set(OS,this.getOS()).get()}:function(){return new UAItem(itemType,userAgent,regexMap[itemType],httpUACH).parseUA().get()}};return setProps.call(this,[["getBrowser",createItemFunc(BROWSER)],["getCPU",createItemFunc(CPU)],["getDevice",createItemFunc(DEVICE)],["getEngine",createItemFunc(ENGINE)],["getOS",createItemFunc(OS)],["getResult",createItemFunc(RESULT)],["getUA",function(){return userAgent}],["setUA",function(ua2){return isString(ua2)&&(userAgent=trim(ua2,UA_MAX_LENGTH)),this}],["useExtension",function(exts){return exts&&(regexMap=extend(regexMap,exts)),this}]]).setUA(userAgent).useExtension(extensions),this}UAParser.VERSION=LIBVERSION,UAParser.BROWSER=enumerize([NAME,VERSION,MAJOR,TYPE]),UAParser.CPU=enumerize([ARCHITECTURE]),UAParser.DEVICE=enumerize([MODEL,VENDOR,TYPE,CONSOLE,MOBILE,SMARTTV,TABLET,WEARABLE,EMBEDDED]),UAParser.ENGINE=UAParser.OS=enumerize([NAME,VERSION]),typeof exports2!==TYPEOF.UNDEFINED?(typeof module2!==TYPEOF.UNDEFINED&&module2.exports&&(exports2=module2.exports=UAParser),exports2.UAParser=UAParser):typeof define===TYPEOF.FUNCTION&&define.amd?define(function(){return UAParser}):isWindow&&(window2.UAParser=UAParser);var $=isWindow&&(window2.jQuery||window2.Zepto);if($&&!$.ua){var parser=new UAParser;$.ua=parser.getResult(),$.ua.get=function(){return parser.getUA()},$.ua.set=function(ua){parser.setUA(ua);var result=parser.getResult();for(var prop in result)$.ua[prop]=result[prop]}}})(typeof window=="object"?window:exports2)}});var require_default=__commonJS({"node_modules/events-universal/default.js"(exports2,module2){module2.exports=require("events")}});var require_fixed_size=__commonJS({"node_modules/fast-fifo/fixed-size.js"(exports2,module2){module2.exports=class{constructor(hwm){if(!(hwm>0)||(hwm-1&hwm)!==0)throw new Error("Max size for a FixedFIFO should be a power of two");this.buffer=new Array(hwm),this.mask=hwm-1,this.top=0,this.btm=0,this.next=null}clear(){this.top=this.btm=0,this.next=null,this.buffer.fill(void 0)}push(data){return this.buffer[this.top]!==void 0?!1:(this.buffer[this.top]=data,this.top=this.top+1&this.mask,!0)}shift(){let last=this.buffer[this.btm];if(last!==void 0)return this.buffer[this.btm]=void 0,this.btm=this.btm+1&this.mask,last}peek(){return this.buffer[this.btm]}isEmpty(){return this.buffer[this.btm]===void 0}}}});var require_fast_fifo=__commonJS({"node_modules/fast-fifo/index.js"(exports2,module2){var FixedFIFO=require_fixed_size();module2.exports=class{constructor(hwm){this.hwm=hwm||16,this.head=new FixedFIFO(this.hwm),this.tail=this.head,this.length=0}clear(){this.head=this.tail,this.head.clear(),this.length=0}push(val){if(this.length++,!this.head.push(val)){let prev=this.head;this.head=prev.next=new FixedFIFO(2*this.head.buffer.length),this.head.push(val)}}shift(){this.length!==0&&this.length--;let val=this.tail.shift();if(val===void 0&&this.tail.next){let next=this.tail.next;return this.tail.next=null,this.tail=next,this.tail.shift()}return val}peek(){let val=this.tail.peek();return val===void 0&&this.tail.next?this.tail.next.peek():val}isEmpty(){return this.length===0}}}});var require_b4a=__commonJS({"node_modules/b4a/index.js"(exports2,module2){function isBuffer(value){return Buffer.isBuffer(value)||value instanceof Uint8Array}function isEncoding(encoding){return Buffer.isEncoding(encoding)}function alloc(size,fill2,encoding){return Buffer.alloc(size,fill2,encoding)}function allocUnsafe(size){return Buffer.allocUnsafe(size)}function allocUnsafeSlow(size){return Buffer.allocUnsafeSlow(size)}function byteLength(string,encoding){return Buffer.byteLength(string,encoding)}function compare(a,b){return Buffer.compare(a,b)}function concat(buffers,totalLength){return Buffer.concat(buffers,totalLength)}function copy(source,target,targetStart,start,end){return toBuffer(source).copy(target,targetStart,start,end)}function equals(a,b){return toBuffer(a).equals(b)}function fill(buffer,value,offset,end,encoding){return toBuffer(buffer).fill(value,offset,end,encoding)}function from(value,encodingOrOffset,length){return Buffer.from(value,encodingOrOffset,length)}function includes(buffer,value,byteOffset,encoding){return toBuffer(buffer).includes(value,byteOffset,encoding)}function indexOf(buffer,value,byfeOffset,encoding){return toBuffer(buffer).indexOf(value,byfeOffset,encoding)}function lastIndexOf(buffer,value,byteOffset,encoding){return toBuffer(buffer).lastIndexOf(value,byteOffset,encoding)}function swap16(buffer){return toBuffer(buffer).swap16()}function swap32(buffer){return toBuffer(buffer).swap32()}function swap64(buffer){return toBuffer(buffer).swap64()}function toBuffer(buffer){return Buffer.isBuffer(buffer)?buffer:Buffer.from(buffer.buffer,buffer.byteOffset,buffer.byteLength)}function toString(buffer,encoding,start,end){return toBuffer(buffer).toString(encoding,start,end)}function write(buffer,string,offset,length,encoding){return toBuffer(buffer).write(string,offset,length,encoding)}function readDoubleBE(buffer,offset){return toBuffer(buffer).readDoubleBE(offset)}function readDoubleLE(buffer,offset){return toBuffer(buffer).readDoubleLE(offset)}function readFloatBE(buffer,offset){return toBuffer(buffer).readFloatBE(offset)}function readFloatLE(buffer,offset){return toBuffer(buffer).readFloatLE(offset)}function readInt32BE(buffer,offset){return toBuffer(buffer).readInt32BE(offset)}function readInt32LE(buffer,offset){return toBuffer(buffer).readInt32LE(offset)}function readUInt32BE(buffer,offset){return toBuffer(buffer).readUInt32BE(offset)}function readUInt32LE(buffer,offset){return toBuffer(buffer).readUInt32LE(offset)}function writeDoubleBE(buffer,value,offset){return toBuffer(buffer).writeDoubleBE(value,offset)}function writeDoubleLE(buffer,value,offset){return toBuffer(buffer).writeDoubleLE(value,offset)}function writeFloatBE(buffer,value,offset){return toBuffer(buffer).writeFloatBE(value,offset)}function writeFloatLE(buffer,value,offset){return toBuffer(buffer).writeFloatLE(value,offset)}function writeInt32BE(buffer,value,offset){return toBuffer(buffer).writeInt32BE(value,offset)}function writeInt32LE(buffer,value,offset){return toBuffer(buffer).writeInt32LE(value,offset)}function writeUInt32BE(buffer,value,offset){return toBuffer(buffer).writeUInt32BE(value,offset)}function writeUInt32LE(buffer,value,offset){return toBuffer(buffer).writeUInt32LE(value,offset)}module2.exports={isBuffer,isEncoding,alloc,allocUnsafe,allocUnsafeSlow,byteLength,compare,concat,copy,equals,fill,from,includes,indexOf,lastIndexOf,swap16,swap32,swap64,toBuffer,toString,write,readDoubleBE,readDoubleLE,readFloatBE,readFloatLE,readInt32BE,readInt32LE,readUInt32BE,readUInt32LE,writeDoubleBE,writeDoubleLE,writeFloatBE,writeFloatLE,writeInt32BE,writeInt32LE,writeUInt32BE,writeUInt32LE}}});var require_pass_through_decoder=__commonJS({"node_modules/text-decoder/lib/pass-through-decoder.js"(exports2,module2){var b4a=require_b4a();module2.exports=class{constructor(encoding){this.encoding=encoding}get remaining(){return 0}decode(data){return b4a.toString(data,this.encoding)}flush(){return""}}}});var require_utf8_decoder=__commonJS({"node_modules/text-decoder/lib/utf8-decoder.js"(exports2,module2){var b4a=require_b4a();module2.exports=class{constructor(){this._reset()}get remaining(){return this.bytesSeen}decode(data){if(data.byteLength===0)return"";if(this.bytesNeeded===0&&trailingIncomplete(data,0)===0)return this.bytesSeen=trailingBytesSeen(data),b4a.toString(data,"utf8");let result="",start=0;if(this.bytesNeeded>0){for(;start<data.byteLength;){let byte=data[start];if(byte<this.lowerBoundary||byte>this.upperBoundary){result+="\uFFFD",this._reset();break}if(this.lowerBoundary=128,this.upperBoundary=191,this.codePoint=this.codePoint<<6|byte&63,this.bytesSeen++,start++,this.bytesSeen===this.bytesNeeded){result+=String.fromCodePoint(this.codePoint),this._reset();break}}if(this.bytesNeeded>0)return result}let trailing=trailingIncomplete(data,start),end=data.byteLength-trailing;end>start&&(result+=b4a.toString(data,"utf8",start,end));for(let i=end;i<data.byteLength;i++){let byte=data[i];if(this.bytesNeeded===0){byte<=127?(this.bytesSeen=0,result+=String.fromCharCode(byte)):byte>=194&&byte<=223?(this.bytesNeeded=2,this.bytesSeen=1,this.codePoint=byte&31):byte>=224&&byte<=239?(byte===224?this.lowerBoundary=160:byte===237&&(this.upperBoundary=159),this.bytesNeeded=3,this.bytesSeen=1,this.codePoint=byte&15):byte>=240&&byte<=244?(byte===240?this.lowerBoundary=144:byte===244&&(this.upperBoundary=143),this.bytesNeeded=4,this.bytesSeen=1,this.codePoint=byte&7):(this.bytesSeen=1,result+="\uFFFD");continue}if(byte<this.lowerBoundary||byte>this.upperBoundary){result+="\uFFFD",i--,this._reset();continue}this.lowerBoundary=128,this.upperBoundary=191,this.codePoint=this.codePoint<<6|byte&63,this.bytesSeen++,this.bytesSeen===this.bytesNeeded&&(result+=String.fromCodePoint(this.codePoint),this._reset())}return result}flush(){let result=this.bytesNeeded>0?"\uFFFD":"";return this._reset(),result}_reset(){this.codePoint=0,this.bytesNeeded=0,this.bytesSeen=0,this.lowerBoundary=128,this.upperBoundary=191}};function trailingIncomplete(data,start){let len=data.byteLength;if(len<=start)return 0;let limit=Math.max(start,len-4),i=len-1;for(;i>limit&&(data[i]&192)===128;)i--;if(i<start)return 0;let byte=data[i],needed;if(byte<=127)return 0;if(byte>=194&&byte<=223)needed=2;else if(byte>=224&&byte<=239)needed=3;else if(byte>=240&&byte<=244)needed=4;else return 0;let available=len-i;return available<needed?available:0}function trailingBytesSeen(data){let len=data.byteLength;if(len===0)return 0;let last=data[len-1];if(last<=127)return 0;if((last&192)!==128)return 1;let limit=Math.max(0,len-4),i=len-2;for(;i>=limit&&(data[i]&192)===128;)i--;if(i<0)return 1;let first=data[i],needed;if(first>=194&&first<=223)needed=2;else if(first>=224&&first<=239)needed=3;else if(first>=240&&first<=244)needed=4;else return 1;if(len-i!==needed)return 1;if(needed>=3){let second=data[i+1];if(first===224&&second<160||first===237&&second>159||first===240&&second<144||first===244&&second>143)return 1}return 0}}});var require_text_decoder=__commonJS({"node_modules/text-decoder/index.js"(exports2,module2){var PassThroughDecoder=require_pass_through_decoder(),UTF8Decoder=require_utf8_decoder();module2.exports=class{constructor(encoding="utf8"){switch(this.encoding=normalizeEncoding(encoding),this.encoding){case"utf8":this.decoder=new UTF8Decoder;break;case"utf16le":case"base64":throw new Error("Unsupported encoding: "+this.encoding);default:this.decoder=new PassThroughDecoder(this.encoding)}}get remaining(){return this.decoder.remaining}push(data){return typeof data=="string"?data:this.decoder.decode(data)}write(data){return this.push(data)}end(data){let result="";return data&&(result=this.push(data)),result+=this.decoder.flush(),result}};function normalizeEncoding(encoding){switch(encoding=encoding.toLowerCase(),encoding){case"utf8":case"utf-8":return"utf8";case"ucs2":case"ucs-2":case"utf16le":case"utf-16le":return"utf16le";case"latin1":case"binary":return"latin1";case"base64":case"ascii":case"hex":return encoding;default:throw new Error("Unknown encoding: "+encoding)}}}});var require_errors4=__commonJS({"node_modules/streamx/lib/errors.js"(exports2,module2){module2.exports=class StreamError extends Error{constructor(msg,code,fn=StreamError){super(msg),this.code=code,Error.captureStackTrace&&Error.captureStackTrace(this,fn)}static isStreamDestroyed(err){return err&&err.code==="STREAM_DESTROYED"}static isPrematureClose(err){return err&&err.code==="PREMATURE_CLOSE"}static isAborted(err){return err&&err.code==="ABORTED"}static isBadArgument(err){return err&&err.code==="BAD_ARGUMENT"}get name(){return"StreamError"}static STREAM_DESTROYED(){return new StreamError("Stream was destroyed","STREAM_DESTROYED",StreamError.STREAM_DESTROYED)}static PREMATURE_CLOSE(msg="Premature close"){return new StreamError(msg,"PREMATURE_CLOSE",StreamError.PREMATURE_CLOSE)}static ABORTED(){return new StreamError("Stream aborted","ABORTED",StreamError.ABORTED)}static BAD_ARGUMENT(msg="Bad argument"){return new StreamError(msg,"BAD_ARGUMENT",StreamError.BAD_ARGUMENT)}}}});var require_streamx=__commonJS({"node_modules/streamx/index.js"(exports2,module2){var{EventEmitter}=require_default(),FIFO=require_fast_fifo(),TextDecoder2=require_text_decoder(),StreamError=require_errors4(),qmt=typeof queueMicrotask>"u"?fn=>global.process.nextTick(fn):queueMicrotask,MAX=(1<<29)-1,OPENING=1,PREDESTROYING=2,DESTROYING=4,DESTROYED=8,NOT_OPENING=MAX^OPENING,NOT_PREDESTROYING=MAX^PREDESTROYING,READ_ACTIVE=16,READ_UPDATING=32,READ_PRIMARY=64,READ_QUEUED=128,READ_RESUMED=256,READ_PIPE_DRAINED=512,READ_ENDING=1024,READ_EMIT_DATA=2048,READ_EMIT_READABLE=4096,READ_EMITTED_READABLE=8192,READ_DONE=16384,READ_NEXT_TICK=32768,READ_NEEDS_PUSH=65536,READ_READ_AHEAD=131072,READ_FLOWING=READ_RESUMED|READ_PIPE_DRAINED,READ_ACTIVE_AND_NEEDS_PUSH=READ_ACTIVE|READ_NEEDS_PUSH,READ_PRIMARY_AND_ACTIVE=READ_PRIMARY|READ_ACTIVE,READ_EMIT_READABLE_AND_QUEUED=READ_EMIT_READABLE|READ_QUEUED,READ_RESUMED_READ_AHEAD=READ_RESUMED|READ_READ_AHEAD,READ_NOT_ACTIVE=MAX^READ_ACTIVE,READ_NON_PRIMARY=MAX^READ_PRIMARY,READ_NON_PRIMARY_AND_PUSHED=MAX^(READ_PRIMARY|READ_NEEDS_PUSH),READ_PUSHED=MAX^READ_NEEDS_PUSH,READ_PAUSED=MAX^READ_RESUMED,READ_NOT_QUEUED=MAX^(READ_QUEUED|READ_EMITTED_READABLE),READ_NOT_ENDING=MAX^READ_ENDING,READ_PIPE_NOT_DRAINED=MAX^READ_FLOWING,READ_NOT_NEXT_TICK=MAX^READ_NEXT_TICK,READ_NOT_UPDATING=MAX^READ_UPDATING,READ_NO_READ_AHEAD=MAX^READ_READ_AHEAD,READ_PAUSED_NO_READ_AHEAD=MAX^READ_RESUMED_READ_AHEAD,WRITE_ACTIVE=1<<18,WRITE_UPDATING=2<<18,WRITE_PRIMARY=4<<18,WRITE_QUEUED=8<<18,WRITE_UNDRAINED=16<<18,WRITE_DONE=32<<18,WRITE_EMIT_DRAIN=64<<18,WRITE_NEXT_TICK=128<<18,WRITE_WRITING=256<<18,WRITE_FINISHING=512<<18,WRITE_CORKED=1024<<18,WRITE_NOT_ACTIVE=MAX^(WRITE_ACTIVE|WRITE_WRITING),WRITE_NON_PRIMARY=MAX^WRITE_PRIMARY,WRITE_NOT_FINISHING=MAX^(WRITE_ACTIVE|WRITE_FINISHING),WRITE_DRAINED=MAX^WRITE_UNDRAINED,WRITE_NOT_QUEUED=MAX^WRITE_QUEUED,WRITE_NOT_NEXT_TICK=MAX^WRITE_NEXT_TICK,WRITE_NOT_UPDATING=MAX^WRITE_UPDATING,WRITE_NOT_CORKED=MAX^WRITE_CORKED,ACTIVE=READ_ACTIVE|WRITE_ACTIVE,NOT_ACTIVE=MAX^ACTIVE,DONE=READ_DONE|WRITE_DONE,DESTROY_STATUS=DESTROYING|DESTROYED|PREDESTROYING,OPEN_STATUS=DESTROY_STATUS|OPENING,AUTO_DESTROY=DESTROY_STATUS|DONE,NON_PRIMARY=WRITE_NON_PRIMARY&READ_NON_PRIMARY,ACTIVE_OR_TICKING=WRITE_NEXT_TICK|READ_NEXT_TICK,TICKING=ACTIVE_OR_TICKING&NOT_ACTIVE,IS_OPENING=OPEN_STATUS|TICKING,READ_PRIMARY_STATUS=OPEN_STATUS|READ_ENDING|READ_DONE,READ_STATUS=OPEN_STATUS|READ_DONE|READ_QUEUED,READ_ENDING_STATUS=OPEN_STATUS|READ_ENDING|READ_QUEUED,READ_READABLE_STATUS=OPEN_STATUS|READ_EMIT_READABLE|READ_QUEUED|READ_EMITTED_READABLE,SHOULD_NOT_READ=OPEN_STATUS|READ_ACTIVE|READ_ENDING|READ_DONE|READ_NEEDS_PUSH|READ_READ_AHEAD,READ_BACKPRESSURE_STATUS=DESTROY_STATUS|READ_ENDING|READ_DONE,READ_UPDATE_SYNC_STATUS=READ_UPDATING|OPEN_STATUS|READ_NEXT_TICK|READ_PRIMARY,READ_NEXT_TICK_OR_OPENING=READ_NEXT_TICK|OPENING,WRITE_PRIMARY_STATUS=OPEN_STATUS|WRITE_FINISHING|WRITE_DONE,WRITE_QUEUED_AND_UNDRAINED=WRITE_QUEUED|WRITE_UNDRAINED,WRITE_QUEUED_AND_ACTIVE=WRITE_QUEUED|WRITE_ACTIVE,WRITE_DRAIN_STATUS=WRITE_QUEUED|WRITE_UNDRAINED|OPEN_STATUS|WRITE_ACTIVE,WRITE_STATUS=OPEN_STATUS|WRITE_ACTIVE|WRITE_QUEUED|WRITE_CORKED,WRITE_PRIMARY_AND_ACTIVE=WRITE_PRIMARY|WRITE_ACTIVE,WRITE_ACTIVE_AND_WRITING=WRITE_ACTIVE|WRITE_WRITING,WRITE_FINISHING_STATUS=OPEN_STATUS|WRITE_FINISHING|WRITE_QUEUED_AND_ACTIVE|WRITE_DONE,WRITE_BACKPRESSURE_STATUS=WRITE_UNDRAINED|DESTROY_STATUS|WRITE_FINISHING|WRITE_DONE,WRITE_UPDATE_SYNC_STATUS=WRITE_UPDATING|OPEN_STATUS|WRITE_NEXT_TICK|WRITE_PRIMARY,WRITE_DROP_DATA=WRITE_FINISHING|WRITE_DONE|DESTROY_STATUS,asyncIterator=Symbol.asyncIterator||Symbol("asyncIterator"),WritableState=class{constructor(stream,{highWaterMark=16384,map=null,mapWritable,byteLength,byteLengthWritable}={}){this.stream=stream,this.queue=new FIFO,this.highWaterMark=highWaterMark,this.buffered=0,this.error=null,this.pipeline=null,this.drains=null,this.byteLength=byteLengthWritable||byteLength||defaultByteLength,this.map=mapWritable||map,this.afterWrite=afterWrite.bind(this),this.afterUpdateNextTick=updateWriteNT.bind(this)}get ending(){return(this.stream._duplexState&WRITE_FINISHING)!==0}get ended(){return(this.stream._duplexState&WRITE_DONE)!==0}push(data){return(this.stream._duplexState&WRITE_DROP_DATA)!==0?!1:(this.map!==null&&(data=this.map(data)),this.buffered+=this.byteLength(data),this.queue.push(data),this.buffered<this.highWaterMark?(this.stream._duplexState|=WRITE_QUEUED,!0):(this.stream._duplexState|=WRITE_QUEUED_AND_UNDRAINED,!1))}shift(){let data=this.queue.shift();return this.buffered-=this.byteLength(data),this.buffered===0&&(this.stream._duplexState&=WRITE_NOT_QUEUED),data}end(data){typeof data=="function"?this.stream.once("finish",data):data!=null&&this.push(data),this.stream._duplexState=(this.stream._duplexState|WRITE_FINISHING)&WRITE_NON_PRIMARY}autoBatch(data,cb){let buffer=[],stream=this.stream;for(buffer.push(data);(stream._duplexState&WRITE_STATUS)===WRITE_QUEUED_AND_ACTIVE;)buffer.push(stream._writableState.shift());if((stream._duplexState&OPEN_STATUS)!==0)return cb(null);stream._writev(buffer,cb)}update(){let stream=this.stream;stream._duplexState|=WRITE_UPDATING;do{for(;(stream._duplexState&WRITE_STATUS)===WRITE_QUEUED;){let data=this.shift();stream._duplexState|=WRITE_ACTIVE_AND_WRITING,stream._write(data,this.afterWrite)}(stream._duplexState&WRITE_PRIMARY_AND_ACTIVE)===0&&this.updateNonPrimary()}while(this.continueUpdate()===!0);stream._duplexState&=WRITE_NOT_UPDATING}updateNonPrimary(){let stream=this.stream;if((stream._duplexState&WRITE_FINISHING_STATUS)===WRITE_FINISHING){stream._duplexState=stream._duplexState|WRITE_ACTIVE,stream._final(afterFinal.bind(this));return}if((stream._duplexState&DESTROY_STATUS)===DESTROYING){(stream._duplexState&ACTIVE_OR_TICKING)===0&&(stream._duplexState|=ACTIVE,stream._destroy(afterDestroy.bind(this)));return}(stream._duplexState&IS_OPENING)===OPENING&&(stream._duplexState=(stream._duplexState|ACTIVE)&NOT_OPENING,stream._open(afterOpen.bind(this)))}continueUpdate(){return(this.stream._duplexState&WRITE_NEXT_TICK)===0?!1:(this.stream._duplexState&=WRITE_NOT_NEXT_TICK,!0)}updateCallback(){(this.stream._duplexState&WRITE_UPDATE_SYNC_STATUS)===WRITE_PRIMARY?this.update():this.updateNextTick()}updateNextTick(){(this.stream._duplexState&WRITE_NEXT_TICK)===0&&(this.stream._duplexState|=WRITE_NEXT_TICK,(this.stream._duplexState&WRITE_UPDATING)===0&&qmt(this.afterUpdateNextTick))}},ReadableState=class{constructor(stream,{highWaterMark=16384,map=null,mapReadable,byteLength,byteLengthReadable}={}){this.stream=stream,this.queue=new FIFO,this.highWaterMark=highWaterMark===0?1:highWaterMark,this.buffered=0,this.readAhead=highWaterMark>0,this.error=null,this.pipeline=null,this.byteLength=byteLengthReadable||byteLength||defaultByteLength,this.map=mapReadable||map,this.pipeTo=null,this.afterRead=afterRead.bind(this),this.afterUpdateNextTick=updateReadNT.bind(this)}get ending(){return(this.stream._duplexState&READ_ENDING)!==0}get ended(){return(this.stream._duplexState&READ_DONE)!==0}pipe(pipeTo,cb){if(this.pipeTo!==null)throw StreamError.BAD_ARGUMENT("Can only pipe to one destination");if(typeof cb!="function"&&(cb=null),this.stream._duplexState|=READ_PIPE_DRAINED,this.pipeTo=pipeTo,this.pipeline=new Pipeline(this.stream,pipeTo,cb),cb&&this.stream.on("error",noop),isStreamx(pipeTo))pipeTo._writableState.pipeline=this.pipeline,cb&&pipeTo.on("error",noop),pipeTo.on("finish",this.pipeline.finished.bind(this.pipeline));else{let onerror=this.pipeline.done.bind(this.pipeline,pipeTo),onclose=this.pipeline.done.bind(this.pipeline,pipeTo,null);pipeTo.on("error",onerror),pipeTo.on("close",onclose),pipeTo.on("finish",this.pipeline.finished.bind(this.pipeline))}pipeTo.on("drain",afterDrain.bind(this)),this.stream.emit("piping",pipeTo),pipeTo.emit("pipe",this.stream)}push(data){let stream=this.stream;return data===null?(this.highWaterMark=0,stream._duplexState=(stream._duplexState|READ_ENDING)&READ_NON_PRIMARY_AND_PUSHED,!1):this.map!==null&&(data=this.map(data),data===null)?(stream._duplexState&=READ_PUSHED,this.buffered<this.highWaterMark):(this.buffered+=this.byteLength(data),this.queue.push(data),stream._duplexState=(stream._duplexState|READ_QUEUED)&READ_PUSHED,this.buffered<this.highWaterMark)}shift(){let data=this.queue.shift();return this.buffered-=this.byteLength(data),this.buffered===0&&(this.stream._duplexState&=READ_NOT_QUEUED),data}unshift(data){let pending=[this.map!==null?this.map(data):data];for(;this.buffered>0;)pending.push(this.shift());for(let i=0;i<pending.length-1;i++){let data2=pending[i];this.buffered+=this.byteLength(data2),this.queue.push(data2)}this.push(pending[pending.length-1])}read(){let stream=this.stream;if((stream._duplexState&READ_STATUS)===READ_QUEUED){let data=this.shift();return this.pipeTo!==null&&this.pipeTo.write(data)===!1&&(stream._duplexState&=READ_PIPE_NOT_DRAINED),(stream._duplexState&READ_EMIT_DATA)!==0&&stream.emit("data",data),data}return this.readAhead===!1&&(stream._duplexState|=READ_READ_AHEAD,this.updateNextTick()),null}drain(){let stream=this.stream;for(;(stream._duplexState&READ_STATUS)===READ_QUEUED&&(stream._duplexState&READ_FLOWING)!==0;){let data=this.shift();this.pipeTo!==null&&this.pipeTo.write(data)===!1&&(stream._duplexState&=READ_PIPE_NOT_DRAINED),(stream._duplexState&READ_EMIT_DATA)!==0&&stream.emit("data",data)}}update(){let stream=this.stream;stream._duplexState|=READ_UPDATING;do{for(this.drain();this.buffered<this.highWaterMark&&(stream._duplexState&SHOULD_NOT_READ)===READ_READ_AHEAD;)stream._duplexState|=READ_ACTIVE_AND_NEEDS_PUSH,stream._read(this.afterRead),this.drain();(stream._duplexState&READ_READABLE_STATUS)===READ_EMIT_READABLE_AND_QUEUED&&(stream._duplexState|=READ_EMITTED_READABLE,stream.emit("readable")),(stream._duplexState&READ_PRIMARY_AND_ACTIVE)===0&&this.updateNonPrimary()}while(this.continueUpdate()===!0);stream._duplexState&=READ_NOT_UPDATING}updateNonPrimary(){let stream=this.stream;if((stream._duplexState&READ_ENDING_STATUS)===READ_ENDING&&(stream._duplexState=(stream._duplexState|READ_DONE)&READ_NOT_ENDING,stream.emit("end"),(stream._duplexState&AUTO_DESTROY)===DONE&&(stream._duplexState|=DESTROYING),this.pipeTo!==null&&this.pipeTo.end()),(stream._duplexState&DESTROY_STATUS)===DESTROYING){(stream._duplexState&ACTIVE_OR_TICKING)===0&&(stream._duplexState|=ACTIVE,stream._destroy(afterDestroy.bind(this)));return}(stream._duplexState&IS_OPENING)===OPENING&&(stream._duplexState=(stream._duplexState|ACTIVE)&NOT_OPENING,stream._open(afterOpen.bind(this)))}continueUpdate(){return(this.stream._duplexState&READ_NEXT_TICK)===0?!1:(this.stream._duplexState&=READ_NOT_NEXT_TICK,!0)}updateCallback(){(this.stream._duplexState&READ_UPDATE_SYNC_STATUS)===READ_PRIMARY?this.update():this.updateNextTick()}updateNextTickIfOpen(){(this.stream._duplexState&READ_NEXT_TICK_OR_OPENING)===0&&(this.stream._duplexState|=READ_NEXT_TICK,(this.stream._duplexState&READ_UPDATING)===0&&qmt(this.afterUpdateNextTick))}updateNextTick(){(this.stream._duplexState&READ_NEXT_TICK)===0&&(this.stream._duplexState|=READ_NEXT_TICK,(this.stream._duplexState&READ_UPDATING)===0&&qmt(this.afterUpdateNextTick))}},TransformState=class{constructor(stream){this.data=null,this.afterTransform=afterTransform.bind(stream),this.afterFinal=null}},Pipeline=class{constructor(src,dst,cb){this.from=src,this.to=dst,this.afterPipe=cb,this.error=null,this.pipeToFinished=!1}finished(){this.pipeToFinished=!0}done(stream,err){if(err&&(this.error=err),stream===this.to&&(this.to=null,this.from!==null)){((this.from._duplexState&READ_DONE)===0||!this.pipeToFinished)&&this.from.destroy(this.error||StreamError.PREMATURE_CLOSE("Writable stream closed"));return}if(stream===this.from&&(this.from=null,this.to!==null)){(stream._duplexState&READ_DONE)===0&&this.to.destroy(this.error||StreamError.PREMATURE_CLOSE("Readable stream closed"));return}this.afterPipe!==null&&this.afterPipe(this.error),this.to=this.from=this.afterPipe=null}};function afterDrain(){this.stream._duplexState|=READ_PIPE_DRAINED,this.updateCallback()}function afterFinal(err){let stream=this.stream;err&&stream.destroy(err),(stream._duplexState&DESTROY_STATUS)===0&&(stream._duplexState|=WRITE_DONE,stream.emit("finish")),(stream._duplexState&AUTO_DESTROY)===DONE&&(stream._duplexState|=DESTROYING),stream._duplexState&=WRITE_NOT_FINISHING,(stream._duplexState&WRITE_UPDATING)===0?this.update():this.updateNextTick()}function afterDestroy(err){let stream=this.stream;!err&&!StreamError.isStreamDestroyed(this.error)&&(err=this.error),err&&stream.emit("error",err),stream._duplexState|=DESTROYED,stream.emit("close");let rs=stream._readableState,ws=stream._writableState;if(rs!==null&&rs.pipeline!==null&&rs.pipeline.done(stream,err),ws!==null){for(;ws.drains!==null&&ws.drains.length>0;)ws.drains.shift().resolve(!1);ws.pipeline!==null&&ws.pipeline.done(stream,err)}}function afterWrite(err){let stream=this.stream;err&&stream.destroy(err),stream._duplexState&=WRITE_NOT_ACTIVE,this.drains!==null&&tickDrains(this.drains),(stream._duplexState&WRITE_DRAIN_STATUS)===WRITE_UNDRAINED&&(stream._duplexState&=WRITE_DRAINED,(stream._duplexState&WRITE_EMIT_DRAIN)===WRITE_EMIT_DRAIN&&stream.emit("drain")),this.updateCallback()}function afterRead(err){err&&this.stream.destroy(err),this.stream._duplexState&=READ_NOT_ACTIVE,this.readAhead===!1&&(this.stream._duplexState&READ_RESUMED)===0&&(this.stream._duplexState&=READ_NO_READ_AHEAD),this.updateCallback()}function updateReadNT(){(this.stream._duplexState&READ_UPDATING)===0&&(this.stream._duplexState&=READ_NOT_NEXT_TICK,this.update())}function updateWriteNT(){(this.stream._duplexState&WRITE_UPDATING)===0&&(this.stream._duplexState&=WRITE_NOT_NEXT_TICK,this.update())}function tickDrains(drains){for(let i=0;i<drains.length;i++)--drains[i].writes===0&&(drains.shift().resolve(!0),i--)}function afterOpen(err){let stream=this.stream;err&&stream.destroy(err),(stream._duplexState&DESTROYING)===0&&((stream._duplexState&READ_PRIMARY_STATUS)===0&&(stream._duplexState|=READ_PRIMARY),(stream._duplexState&WRITE_PRIMARY_STATUS)===0&&(stream._duplexState|=WRITE_PRIMARY),stream.emit("open")),stream._duplexState&=NOT_ACTIVE,stream._writableState!==null&&stream._writableState.updateCallback(),stream._readableState!==null&&stream._readableState.updateCallback()}function afterTransform(err,data){data!=null&&this.push(data),this._writableState.afterWrite(err)}function newListener(name){this._readableState!==null&&(name==="data"&&(this._duplexState|=READ_EMIT_DATA|READ_RESUMED_READ_AHEAD,this._readableState.updateNextTick()),name==="readable"&&(this._duplexState|=READ_EMIT_READABLE,this._readableState.updateNextTick())),this._writableState!==null&&name==="drain"&&(this._duplexState|=WRITE_EMIT_DRAIN,this._writableState.updateNextTick())}var Stream=class extends EventEmitter{constructor(opts){super(),this._duplexState=0,this._readableState=null,this._writableState=null,opts&&(opts.open&&(this._open=opts.open),opts.destroy&&(this._destroy=opts.destroy),opts.predestroy&&(this._predestroy=opts.predestroy),opts.signal&&opts.signal.addEventListener("abort",abort.bind(this))),this.on("newListener",newListener)}_open(cb){cb(null)}_destroy(cb){cb(null)}_predestroy(){}get readable(){return this._readableState!==null?!0:void 0}get writable(){return this._writableState!==null?!0:void 0}get destroyed(){return(this._duplexState&DESTROYED)!==0}get destroying(){return(this._duplexState&DESTROY_STATUS)!==0}destroy(err){(this._duplexState&DESTROY_STATUS)===0&&(err||(err=StreamError.STREAM_DESTROYED()),this._duplexState=(this._duplexState|DESTROYING)&NON_PRIMARY,this._readableState!==null&&(this._readableState.highWaterMark=0,this._readableState.error=err),this._writableState!==null&&(this._writableState.highWaterMark=0,this._writableState.error=err),this._duplexState|=PREDESTROYING,this._predestroy(),this._duplexState&=NOT_PREDESTROYING,this._readableState!==null&&this._readableState.updateNextTick(),this._writableState!==null&&this._writableState.updateNextTick())}},Readable=class _Readable extends Stream{constructor(opts){super(opts),this._duplexState|=OPENING|WRITE_DONE|READ_READ_AHEAD,this._readableState=new ReadableState(this,opts),opts&&(this._readableState.readAhead===!1&&(this._duplexState&=READ_NO_READ_AHEAD),opts.read&&(this._read=opts.read),opts.eagerOpen&&this._readableState.updateNextTick(),opts.encoding&&this.setEncoding(opts.encoding))}static deferred(fn,opts){let out=new PassThrough(opts);return fn().then(src=>{if(src===null)return out.end();out.destroying||pipeline(src,out,noop)}).catch(err=>out.destroy(err)),out}setEncoding(encoding){let dec=new TextDecoder2(encoding),map=this._readableState.map||echo;return this._readableState.map=mapOrSkip,this;function mapOrSkip(data){let next=dec.push(data);return next===""&&(data.byteLength!==0||dec.remaining>0)?null:map(next)}}_read(cb){cb(null)}pipe(dest,cb){return this._readableState.updateNextTick(),this._readableState.pipe(dest,cb),dest}read(){return this._readableState.updateNextTick(),this._readableState.read()}push(data){return this._readableState.updateNextTickIfOpen(),this._readableState.push(data)}unshift(data){return this._readableState.updateNextTickIfOpen(),this._readableState.unshift(data)}resume(){return this._duplexState|=READ_RESUMED_READ_AHEAD,this._readableState.updateNextTick(),this}pause(){return this._duplexState&=this._readableState.readAhead===!1?READ_PAUSED_NO_READ_AHEAD:READ_PAUSED,this}static _fromAsyncIterator(ite,opts){let destroy,rs=new _Readable({...opts,read(cb){ite.next().then(push).then(cb.bind(null,null)).catch(cb)},predestroy(){destroy=ite.return()},destroy(cb){if(!destroy)return cb(null);destroy.then(cb.bind(null,null)).catch(cb)}});return rs;function push(data){data.done?rs.push(null):rs.push(data.value)}}static from(data,opts){if(isReadStreamx(data))return data;if(data[asyncIterator])return this._fromAsyncIterator(data[asyncIterator](),opts);Array.isArray(data)||(data=data===void 0?[]:[data]);let i=0;return new _Readable({...opts,read(cb){this.push(i===data.length?null:data[i++]),cb(null)}})}static isBackpressured(rs){return(rs._duplexState&READ_BACKPRESSURE_STATUS)!==0||rs._readableState.buffered>=rs._readableState.highWaterMark}static isPaused(rs){return(rs._duplexState&READ_RESUMED)===0}[asyncIterator](){let stream=this,error=null,promiseResolve=null,promiseReject=null;return this.on("error",err=>{error=err}),this.on("readable",onreadable),this.on("close",onclose),{[asyncIterator](){return this},next(){return new Promise(function(resolve,reject){promiseResolve=resolve,promiseReject=reject;let data=stream.read();data!==null?ondata(data):(stream._duplexState&DESTROYED)!==0&&ondata(null)})},return(){return destroy(null)},throw(err){return destroy(err)}};function onreadable(){promiseResolve!==null&&ondata(stream.read())}function onclose(){promiseResolve!==null&&ondata(null)}function ondata(data){promiseReject!==null&&(error?promiseReject(error):data===null&&(stream._duplexState&READ_DONE)===0?promiseReject(StreamError.STREAM_DESTROYED()):promiseResolve({value:data,done:data===null}),promiseReject=promiseResolve=null)}function destroy(err){return stream.destroy(err),new Promise((resolve,reject)=>{if(stream._duplexState&DESTROYED)return resolve({value:void 0,done:!0});stream.once("close",function(){err?reject(err):resolve({value:void 0,done:!0})})})}}},Writable=class extends Stream{constructor(opts){super(opts),this._duplexState|=OPENING|READ_DONE,this._writableState=new WritableState(this,opts),opts&&(opts.writev&&(this._writev=opts.writev),opts.write&&(this._write=opts.write),opts.final&&(this._final=opts.final),opts.eagerOpen&&this._writableState.updateNextTick())}cork(){this._duplexState|=WRITE_CORKED}uncork(){this._duplexState&=WRITE_NOT_CORKED,this._writableState.updateNextTick()}_writev(batch,cb){cb(null)}_write(data,cb){this._writableState.autoBatch(data,cb)}_final(cb){cb(null)}static isBackpressured(ws){return(ws._duplexState&WRITE_BACKPRESSURE_STATUS)!==0}static drained(ws){if(ws.destroyed)return Promise.resolve(!1);let state=ws._writableState,writes=(isWritev(ws)?Math.min(1,state.queue.length):state.queue.length)+(ws._duplexState&WRITE_WRITING?1:0);return writes===0?Promise.resolve(!0):(state.drains===null&&(state.drains=[]),new Promise(resolve=>{state.drains.push({writes,resolve})}))}write(data){return this._writableState.updateNextTick(),this._writableState.push(data)}end(data){return this._writableState.updateNextTick(),this._writableState.end(data),this}},Duplex=class extends Readable{constructor(opts){super(opts),this._duplexState=OPENING|this._duplexState&READ_READ_AHEAD,this._writableState=new WritableState(this,opts),opts&&(opts.writev&&(this._writev=opts.writev),opts.write&&(this._write=opts.write),opts.final&&(this._final=opts.final))}cork(){this._duplexState|=WRITE_CORKED}uncork(){this._duplexState&=WRITE_NOT_CORKED,this._writableState.updateNextTick()}_writev(batch,cb){cb(null)}_write(data,cb){this._writableState.autoBatch(data,cb)}_final(cb){cb(null)}write(data){return this._writableState.updateNextTick(),this._writableState.push(data)}end(data){return this._writableState.updateNextTick(),this._writableState.end(data),this}},Transform=class extends Duplex{constructor(opts){super(opts),this._transformState=new TransformState(this),opts&&(opts.transform&&(this._transform=opts.transform),opts.flush&&(this._flush=opts.flush))}_write(data,cb){this._readableState.buffered>=this._readableState.highWaterMark?this._transformState.data=data:this._transform(data,this._transformState.afterTransform)}_read(cb){if(this._transformState.data!==null){let data=this._transformState.data;this._transformState.data=null,cb(null),this._transform(data,this._transformState.afterTransform)}else cb(null)}destroy(err){super.destroy(err),this._transformState.data!==null&&(this._transformState.data=null,this._transformState.afterTransform())}_transform(data,cb){cb(null,data)}_flush(cb){cb(null)}_final(cb){this._transformState.afterFinal=cb,this._flush(transformAfterFlush.bind(this))}},PassThrough=class extends Transform{};function transformAfterFlush(err,data){let cb=this._transformState.afterFinal;if(err)return cb(err);data!=null&&this.push(data),this.push(null),cb(null)}function pipelinePromise(...streams){return new Promise((resolve,reject)=>pipeline(...streams,err=>{if(err)return reject(err);resolve()}))}function pipeline(stream,...streams){let all=Array.isArray(stream)?[...stream,...streams]:[stream,...streams],done=all.length&&typeof all[all.length-1]=="function"?all.pop():null;if(all.length<2)throw StreamError.BAD_ARGUMENT("Pipeline requires at least 2 streams");let src=all[0],dest=null,error=null;for(let i=1;i<all.length;i++)dest=all[i],isStreamx(src)?src.pipe(dest,onerror):(errorHandle(src,!0,i>1,onerror),src.pipe(dest)),src=dest;if(done){let fin=!1,autoDestroy=isStreamx(dest)||!!(dest._writableState&&dest._writableState.autoDestroy);dest.on("error",err=>{error===null&&(error=err)}),dest.on("finish",()=>{fin=!0,autoDestroy||done(error)}),autoDestroy&&dest.on("close",()=>done(error||(fin?null:StreamError.PREMATURE_CLOSE())))}return dest;function errorHandle(s,rd,wr,onerror2){s.on("error",onerror2),s.on("close",onclose);function onclose(){if(rd&&s._readableState&&!s._readableState.ended||wr&&s._writableState&&!s._writableState.ended)return onerror2(StreamError.PREMATURE_CLOSE())}}function onerror(err){if(!(!err||error)){error=err;for(let s of all)s.destroy(err)}}}function echo(s){return s}function isStream(stream){return!!stream._readableState||!!stream._writableState}function isStreamx(stream){return typeof stream._duplexState=="number"&&isStream(stream)}function isEnding(stream){return!!stream._readableState&&stream._readableState.ending}function isEnded(stream){return!!stream._readableState&&stream._readableState.ended}function isFinishing(stream){return!!stream._writableState&&stream._writableState.ending}function isFinished(stream){return!!stream._writableState&&stream._writableState.ended}function getStreamError(stream,opts={}){let err=stream._readableState&&stream._readableState.error||stream._writableState&&stream._writableState.error;return!opts.all&&StreamError.isStreamDestroyed(err)?null:err}function isReadStreamx(stream){return isStreamx(stream)&&stream.readable}function isDisturbed(stream){return(stream._duplexState&OPENING)!==OPENING||(stream._duplexState&DESTROYING)===DESTROYING||(stream._duplexState&ACTIVE_OR_TICKING)!==0}function isTypedArray(data){return typeof data=="object"&&data!==null&&typeof data.byteLength=="number"}function defaultByteLength(data){return isTypedArray(data)?data.byteLength:1024}function noop(){}function abort(){this.destroy(StreamError.ABORTED())}function isWritev(s){return s._writev!==Writable.prototype._writev&&s._writev!==Duplex.prototype._writev}module2.exports={pipeline,pipelinePromise,isStream,isStreamx,isEnding,isEnded,isFinishing,isFinished,isDisturbed,getStreamError,Stream,Writable,Readable,Duplex,Transform,PassThrough}}});var require_headers=__commonJS({"node_modules/tar-stream/headers.js"(exports2){var b4a=require_b4a(),ZEROS="0000000000000000000",SEVENS="7777777777777777777",ZERO_OFFSET=48,USTAR_MAGIC=b4a.from([117,115,116,97,114,0]),USTAR_VER=b4a.from([ZERO_OFFSET,ZERO_OFFSET]),GNU_MAGIC=b4a.from([117,115,116,97,114,32]),GNU_VER=b4a.from([32,0]),MASK=4095,MAGIC_OFFSET=257,VERSION_OFFSET=263;exports2.decodeLongPath=function(buf,encoding){return decodeStr(buf,0,buf.length,encoding)};exports2.encodePax=function(opts){let result="";opts.name&&(result+=addLength(" path="+opts.name+`
|
|
306
|
-
`)),opts.linkname&&(result+=addLength(" linkpath="+opts.linkname+`
|
|
307
|
-
`));let pax=opts.pax;if(pax)for(let key in pax)result+=addLength(" "+key+"="+pax[key]+`
|
|
308
|
-
`);return b4a.from(result)};exports2.decodePax=function(buf){let result={};for(;buf.length;){let i=0;for(;i<buf.length&&buf[i]!==32;)i++;let len=parseInt(b4a.toString(buf.subarray(0,i)),10);if(!len)return result;let b=b4a.toString(buf.subarray(i+1,len-1)),keyIndex=b.indexOf("=");if(keyIndex===-1)return result;result[b.slice(0,keyIndex)]=b.slice(keyIndex+1),buf=buf.subarray(len)}return result};exports2.encode=function(opts){let buf=b4a.alloc(512),name=opts.name,prefix="";if(opts.typeflag===5&&name[name.length-1]!=="/"&&(name+="/"),b4a.byteLength(name)!==name.length)return null;for(;b4a.byteLength(name)>100;){let i=name.indexOf("/");if(i===-1)return null;prefix+=prefix?"/"+name.slice(0,i):name.slice(0,i),name=name.slice(i+1)}return b4a.byteLength(name)>100||b4a.byteLength(prefix)>155||opts.linkname&&b4a.byteLength(opts.linkname)>100?null:(b4a.write(buf,name),b4a.write(buf,encodeOct(opts.mode&MASK,6),100),b4a.write(buf,encodeOct(opts.uid,6),108),b4a.write(buf,encodeOct(opts.gid,6),116),encodeSize(opts.size,buf,124),b4a.write(buf,encodeOct(opts.mtime.getTime()/1e3|0,11),136),buf[156]=ZERO_OFFSET+toTypeflag(opts.type),opts.linkname&&b4a.write(buf,opts.linkname,157),b4a.copy(USTAR_MAGIC,buf,MAGIC_OFFSET),b4a.copy(USTAR_VER,buf,VERSION_OFFSET),opts.uname&&b4a.write(buf,opts.uname,265),opts.gname&&b4a.write(buf,opts.gname,297),b4a.write(buf,encodeOct(opts.devmajor||0,6),329),b4a.write(buf,encodeOct(opts.devminor||0,6),337),prefix&&b4a.write(buf,prefix,345),b4a.write(buf,encodeOct(cksum(buf),6),148),buf)};exports2.decode=function(buf,filenameEncoding,allowUnknownFormat){let typeflag=buf[156]===0?0:buf[156]-ZERO_OFFSET,name=decodeStr(buf,0,100,filenameEncoding),mode=decodeOct(buf,100,8),uid=decodeOct(buf,108,8),gid=decodeOct(buf,116,8),size=decodeOct(buf,124,12),mtime=decodeOct(buf,136,12),type=toType(typeflag),linkname=buf[157]===0?null:decodeStr(buf,157,100,filenameEncoding),uname=decodeStr(buf,265,32),gname=decodeStr(buf,297,32),devmajor=decodeOct(buf,329,8),devminor=decodeOct(buf,337,8),c=cksum(buf);if(c===256)return null;if(c!==decodeOct(buf,148,8))throw new Error("Invalid tar header. Maybe the tar is corrupted or it needs to be gunzipped?");if(isUSTAR(buf))buf[345]&&(name=decodeStr(buf,345,155,filenameEncoding)+"/"+name);else if(!isGNU(buf)){if(!allowUnknownFormat)throw new Error("Invalid tar header: unknown format.")}return typeflag===0&&name&&name[name.length-1]==="/"&&(typeflag=5),{name,mode,uid,gid,size,byteOffset:0,mtime:new Date(1e3*mtime),type,linkname,uname,gname,devmajor,devminor,pax:null}};function isUSTAR(buf){return b4a.equals(USTAR_MAGIC,buf.subarray(MAGIC_OFFSET,MAGIC_OFFSET+6))}function isGNU(buf){return b4a.equals(GNU_MAGIC,buf.subarray(MAGIC_OFFSET,MAGIC_OFFSET+6))&&b4a.equals(GNU_VER,buf.subarray(VERSION_OFFSET,VERSION_OFFSET+2))}function clamp(index,len,defaultValue){return typeof index!="number"?defaultValue:(index=~~index,index>=len?len:index>=0||(index+=len,index>=0)?index:0)}function toType(flag){switch(flag){case 0:return"file";case 1:return"link";case 2:return"symlink";case 3:return"character-device";case 4:return"block-device";case 5:return"directory";case 6:return"fifo";case 7:return"contiguous-file";case 72:return"pax-header";case 55:return"pax-global-header";case 27:return"gnu-long-link-path";case 28:case 30:return"gnu-long-path"}return null}function toTypeflag(flag){switch(flag){case"file":return 0;case"link":return 1;case"symlink":return 2;case"character-device":return 3;case"block-device":return 4;case"directory":return 5;case"fifo":return 6;case"contiguous-file":return 7;case"pax-header":return 72}return 0}function indexOf(block,num,offset,end){for(;offset<end;offset++)if(block[offset]===num)return offset;return end}function cksum(block){let sum=256;for(let i=0;i<148;i++)sum+=block[i];for(let j=156;j<512;j++)sum+=block[j];return sum}function encodeOct(val,n){return val=val.toString(8),val.length>n?SEVENS.slice(0,n)+" ":ZEROS.slice(0,n-val.length)+val+" "}function encodeSizeBin(num,buf,off){buf[off]=128;for(let i=11;i>0;i--)buf[off+i]=num&255,num=Math.floor(num/256)}function encodeSize(num,buf,off){num.toString(8).length>11?encodeSizeBin(num,buf,off):b4a.write(buf,encodeOct(num,11),off)}function parse256(buf){let positive;if(buf[0]===128)positive=!0;else if(buf[0]===255)positive=!1;else return null;let tuple=[],i;for(i=buf.length-1;i>0;i--){let byte=buf[i];positive?tuple.push(byte):tuple.push(255-byte)}let sum=0,l=tuple.length;for(i=0;i<l;i++)sum+=tuple[i]*Math.pow(256,i);return positive?sum:-1*sum}function decodeOct(val,offset,length){if(val=val.subarray(offset,offset+length),offset=0,val[offset]&128)return parse256(val);{for(;offset<val.length&&val[offset]===32;)offset++;let end=clamp(indexOf(val,32,offset,val.length),val.length,val.length);for(;offset<end&&val[offset]===0;)offset++;return end===offset?0:parseInt(b4a.toString(val.subarray(offset,end)),8)}}function decodeStr(val,offset,length,encoding){return b4a.toString(val.subarray(offset,indexOf(val,0,offset,offset+length)),encoding)}function addLength(str){let len=b4a.byteLength(str),digits=Math.floor(Math.log(len)/Math.log(10))+1;return len+digits>=Math.pow(10,digits)&&digits++,len+digits+str}}});var require_extract=__commonJS({"node_modules/tar-stream/extract.js"(exports2,module2){var{Writable,Readable,getStreamError}=require_streamx(),FIFO=require_fast_fifo(),b4a=require_b4a(),headers=require_headers(),EMPTY=b4a.alloc(0),MAX_HEADER_SIZE=4*1024*1024,BufferList=class{constructor(){this.buffered=0,this.shifted=0,this.queue=new FIFO,this._offset=0}push(buffer){this.buffered+=buffer.byteLength,this.queue.push(buffer)}shiftFirst(size){return this.buffered===0?null:this._next(size)}shift(size){if(size>this.buffered)return null;if(size===0)return EMPTY;let chunk=this._next(size);if(size===chunk.byteLength)return chunk;let chunks=[chunk];for(;(size-=chunk.byteLength)>0;)chunk=this._next(size),chunks.push(chunk);return b4a.concat(chunks)}_next(size){let buf=this.queue.peek(),rem=buf.byteLength-this._offset;if(size>=rem){let sub=this._offset?buf.subarray(this._offset,buf.byteLength):buf;return this.queue.shift(),this._offset=0,this.buffered-=rem,this.shifted+=rem,sub}return this.buffered-=size,this.shifted+=size,buf.subarray(this._offset,this._offset+=size)}},Source=class extends Readable{constructor(self2,header,offset){super(),this.header=header,this.offset=offset,this._parent=self2}_read(cb){this.header.size===0&&this.push(null),this._parent._stream===this&&this._parent._update(),cb(null)}_predestroy(){this._parent.destroy(getStreamError(this))}_detach(){this._parent._stream===this&&(this._parent._stream=null,this._parent._missing=overflow(this.header.size),this._parent._update())}_destroy(cb){this._detach(),cb(null)}},Extract=class extends Writable{constructor(opts){super(opts),opts||(opts={}),this._buffer=new BufferList,this._offset=0,this._header=null,this._stream=null,this._missing=0,this._longHeader=!1,this._callback=noop,this._locked=!1,this._finished=!1,this._pax=null,this._paxGlobal=null,this._gnuLongPath=null,this._gnuLongLinkPath=null,this._filenameEncoding=opts.filenameEncoding||"utf-8",this._allowUnknownFormat=!!opts.allowUnknownFormat,this._unlockBound=this._unlock.bind(this)}_unlock(err){if(this._locked=!1,err){this.destroy(err),this._continueWrite(err);return}this._update()}_consumeHeader(){if(this._locked)return!1;this._offset=this._buffer.shifted;try{this._header=headers.decode(this._buffer.shift(512),this._filenameEncoding,this._allowUnknownFormat)}catch(err){return this._continueWrite(err),!1}if(!this._header)return!0;switch(this._header.byteOffset=this._buffer.shifted,this._header.type){case"gnu-long-path":case"gnu-long-link-path":case"pax-global-header":case"pax-header":return this._longHeader=!0,this._missing=this._header.size,this._missing>MAX_HEADER_SIZE?(this._continueWrite(new Error("Header exceeds max size")),!1):!0}return this._locked=!0,this._applyLongHeaders(),this._header.size>=0?this._header.size===0||this._header.type==="directory"?(this.emit("entry",this._header,this._createStream(),this._unlockBound),!0):(this._stream=this._createStream(),this._missing=this._header.size,this.emit("entry",this._header,this._stream,this._unlockBound),!0):(this._continueWrite(new Error("Invalid header")),!1)}_applyLongHeaders(){this._gnuLongPath&&(this._header.name=this._gnuLongPath,this._gnuLongPath=null),this._gnuLongLinkPath&&(this._header.linkname=this._gnuLongLinkPath,this._gnuLongLinkPath=null),this._pax&&(this._pax.path&&(this._header.name=this._pax.path),this._pax.linkpath&&(this._header.linkname=this._pax.linkpath),this._pax.size&&(this._header.size=parseInt(this._pax.size,10)),this._header.pax=this._pax,this._pax=null)}_decodeLongHeader(buf){switch(this._header.type){case"gnu-long-path":this._gnuLongPath=headers.decodeLongPath(buf,this._filenameEncoding);break;case"gnu-long-link-path":this._gnuLongLinkPath=headers.decodeLongPath(buf,this._filenameEncoding);break;case"pax-global-header":this._paxGlobal=headers.decodePax(buf);break;case"pax-header":this._pax=this._paxGlobal===null?headers.decodePax(buf):Object.assign({},this._paxGlobal,headers.decodePax(buf));break}}_consumeLongHeader(){this._longHeader=!1,this._missing=overflow(this._header.size);let buf=this._buffer.shift(this._header.size);try{this._decodeLongHeader(buf)}catch(err){return this._continueWrite(err),!1}return!0}_consumeStream(){let buf=this._buffer.shiftFirst(this._missing);if(buf===null)return!1;this._missing-=buf.byteLength;let drained=this._stream.push(buf);return this._missing===0?(this._stream.push(null),drained&&this._stream._detach(),drained&&this._locked===!1):drained}_createStream(){return new Source(this,this._header,this._offset)}_update(){for(;this._buffer.buffered>0&&!this.destroying;){if(this._missing>0){if(this._stream!==null){if(this._consumeStream()===!1)return;continue}if(this._longHeader===!0){if(this._missing>this._buffer.buffered)break;if(this._consumeLongHeader()===!1)return!1;continue}let ignore=this._buffer.shiftFirst(this._missing);ignore!==null&&(this._missing-=ignore.byteLength);continue}if(this._buffer.buffered<512)break;if(this._stream!==null||this._consumeHeader()===!1)return}this._continueWrite(null)}_continueWrite(err){let cb=this._callback;this._callback=noop,cb(err)}_write(data,cb){this._callback=cb,this._buffer.push(data),this._update()}_final(cb){this._finished=this._missing===0&&this._buffer.buffered===0,cb(this._finished?null:new Error("Unexpected end of data"))}_predestroy(){this._continueWrite(null)}_destroy(cb){this._stream&&this._stream.destroy(getStreamError(this)),cb(null)}[Symbol.asyncIterator](){let error=null,promiseResolve=null,promiseReject=null,entryStream=null,entryCallback=null,extract=this;return this.on("entry",onentry),this.on("error",err=>{error=err}),this.on("close",onclose),{[Symbol.asyncIterator](){return this},next(){return new Promise(onnext)},return(){return destroy(null)},throw(err){return destroy(err)}};function consumeCallback(err){if(!entryCallback)return;let cb=entryCallback;entryCallback=null,cb(err)}function onnext(resolve,reject){if(error)return reject(error);if(entryStream){resolve({value:entryStream,done:!1}),entryStream=null;return}promiseResolve=resolve,promiseReject=reject,consumeCallback(null),extract._finished&&promiseResolve&&(promiseResolve({value:void 0,done:!0}),promiseResolve=promiseReject=null)}function onentry(header,stream,callback){entryCallback=callback,stream.on("error",noop),promiseResolve?(promiseResolve({value:stream,done:!1}),promiseResolve=promiseReject=null):entryStream=stream}function onclose(){consumeCallback(error),promiseResolve&&(error?promiseReject(error):promiseResolve({value:void 0,done:!0}),promiseResolve=promiseReject=null)}function destroy(err){return extract.destroy(err),consumeCallback(err),new Promise((resolve,reject)=>{if(extract.destroyed)return resolve({value:void 0,done:!0});extract.once("close",function(){err?reject(err):resolve({value:void 0,done:!0})})})}}};module2.exports=function(opts){return new Extract(opts)};function noop(){}function overflow(size){return size&=511,size&&512-size}}});var require_constants6=__commonJS({"node_modules/tar-stream/constants.js"(exports2,module2){var constants={S_IFMT:61440,S_IFDIR:16384,S_IFCHR:8192,S_IFBLK:24576,S_IFIFO:4096,S_IFLNK:40960};try{module2.exports=require("fs").constants||constants}catch{module2.exports=constants}}});var require_pack=__commonJS({"node_modules/tar-stream/pack.js"(exports2,module2){var{Readable,Writable,getStreamError}=require_streamx(),b4a=require_b4a(),constants=require_constants6(),headers=require_headers(),DMODE=493,FMODE=420,END_OF_TAR=b4a.alloc(1024),Sink=class extends Writable{constructor(pack,header,callback){super({mapWritable,eagerOpen:!0}),this.written=0,this.header=header,this._callback=callback,this._linkname=null,this._isLinkname=header.type==="symlink"&&!header.linkname,this._isVoid=header.type!=="file"&&header.type!=="contiguous-file",this._finished=!1,this._pack=pack,this._openCallback=null,this._pack._stream===null?this._pack._stream=this:this._pack._pending.push(this)}_open(cb){this._openCallback=cb,this._pack._stream===this&&this._continueOpen()}_continuePack(err){if(this._callback===null)return;let callback=this._callback;this._callback=null,callback(err)}_continueOpen(){this._pack._stream===null&&(this._pack._stream=this);let cb=this._openCallback;if(this._openCallback=null,cb!==null){if(this._pack.destroying)return cb(new Error("pack stream destroyed"));if(this._pack._finalized)return cb(new Error("pack stream is already finalized"));this._pack._stream=this,this._isLinkname||this._pack._encode(this.header),this._isVoid&&(this._finish(),this._continuePack(null)),cb(null)}}_write(data,cb){if(this._isLinkname)return this._linkname=this._linkname?b4a.concat([this._linkname,data]):data,cb(null);if(this._isVoid)return data.byteLength>0?cb(new Error("No body allowed for this entry")):cb();if(this.written+=data.byteLength,this._pack.push(data))return cb();this._pack._drain=cb}_finish(){this._finished||(this._finished=!0,this._isLinkname&&(this.header.linkname=this._linkname?b4a.toString(this._linkname,"utf-8"):"",this._pack._encode(this.header)),overflow(this._pack,this.header.size),this._pack._done(this))}_final(cb){if(this.written!==this.header.size)return cb(new Error("Size mismatch"));this._finish(),cb(null)}_getError(){return getStreamError(this)||new Error("tar entry destroyed")}_predestroy(){this._pack.destroy(this._getError())}_destroy(cb){this._pack._done(this),this._continuePack(this._finished?null:this._getError()),cb()}},Pack=class extends Readable{constructor(opts){super(opts),this._drain=noop,this._finalized=!1,this._finalizing=!1,this._pending=[],this._stream=null}entry(header,buffer,callback){if(this._finalized||this.destroying)throw new Error("already finalized or destroyed");typeof buffer=="function"&&(callback=buffer,buffer=null),callback||(callback=noop),(!header.size||header.type==="symlink")&&(header.size=0),header.type||(header.type=modeToType(header.mode)),header.mode||(header.mode=header.type==="directory"?DMODE:FMODE),header.uid||(header.uid=0),header.gid||(header.gid=0),header.mtime||(header.mtime=new Date),typeof buffer=="string"&&(buffer=b4a.from(buffer));let sink=new Sink(this,header,callback);return b4a.isBuffer(buffer)?(header.size=buffer.byteLength,sink.write(buffer),sink.end(),sink):(sink._isVoid,sink)}finalize(){if(this._stream||this._pending.length>0){this._finalizing=!0;return}this._finalized||(this._finalized=!0,this.push(END_OF_TAR),this.push(null))}_done(stream){stream===this._stream&&(this._stream=null,this._finalizing&&this.finalize(),this._pending.length&&this._pending.shift()._continueOpen())}_encode(header){if(!header.pax){let buf=headers.encode(header);if(buf){this.push(buf);return}}this._encodePax(header)}_encodePax(header){let paxHeader=headers.encodePax({name:header.name,linkname:header.linkname,pax:header.pax}),newHeader={name:"PaxHeader",mode:header.mode,uid:header.uid,gid:header.gid,size:paxHeader.byteLength,mtime:header.mtime,type:"pax-header",linkname:header.linkname&&"PaxHeader",uname:header.uname,gname:header.gname,devmajor:header.devmajor,devminor:header.devminor};this.push(headers.encode(newHeader)),this.push(paxHeader),overflow(this,paxHeader.byteLength),newHeader.size=header.size,newHeader.type=header.type,this.push(headers.encode(newHeader))}_doDrain(){let drain=this._drain;this._drain=noop,drain()}_predestroy(){let err=getStreamError(this);for(this._stream&&this._stream.destroy(err);this._pending.length;){let stream=this._pending.shift();stream.destroy(err),stream._continueOpen()}this._doDrain()}_read(cb){this._doDrain(),cb()}};module2.exports=function(opts){return new Pack(opts)};function modeToType(mode){switch(mode&constants.S_IFMT){case constants.S_IFBLK:return"block-device";case constants.S_IFCHR:return"character-device";case constants.S_IFDIR:return"directory";case constants.S_IFIFO:return"fifo";case constants.S_IFLNK:return"symlink"}return"file"}function noop(){}function overflow(self2,size){size&=511,size&&self2.push(END_OF_TAR.subarray(0,512-size))}function mapWritable(buf){return b4a.isBuffer(buf)?buf:b4a.from(buf)}}});var require_tar_stream=__commonJS({"node_modules/tar-stream/index.js"(exports2){exports2.extract=require_extract();exports2.pack=require_pack()}});var require_pend=__commonJS({"node_modules/pend/index.js"(exports2,module2){module2.exports=Pend;function Pend(){this.pending=0,this.max=1/0,this.listeners=[],this.waiting=[],this.error=null}Pend.prototype.go=function(fn){this.pending<this.max?pendGo(this,fn):this.waiting.push(fn)};Pend.prototype.wait=function(cb){this.pending===0?cb(this.error):this.listeners.push(cb)};Pend.prototype.hold=function(){return pendHold(this)};function pendHold(self2){self2.pending+=1;var called=!1;return onCb;function onCb(err){if(called)throw new Error("callback called twice");if(called=!0,self2.error=self2.error||err,self2.pending-=1,self2.waiting.length>0&&self2.pending<self2.max)pendGo(self2,self2.waiting.shift());else if(self2.pending===0){var listeners=self2.listeners;self2.listeners=[],listeners.forEach(cbListener)}}function cbListener(listener){listener(self2.error)}}function pendGo(self2,fn){fn(pendHold(self2))}}});var require_fd_slicer=__commonJS({"node_modules/fd-slicer/index.js"(exports2){var fs=require("fs"),util=require("util"),stream=require("stream"),Readable=stream.Readable,Writable=stream.Writable,PassThrough=stream.PassThrough,Pend=require_pend(),EventEmitter=require("events").EventEmitter;exports2.createFromBuffer=createFromBuffer;exports2.createFromFd=createFromFd;exports2.BufferSlicer=BufferSlicer;exports2.FdSlicer=FdSlicer;util.inherits(FdSlicer,EventEmitter);function FdSlicer(fd,options){options=options||{},EventEmitter.call(this),this.fd=fd,this.pend=new Pend,this.pend.max=1,this.refCount=0,this.autoClose=!!options.autoClose}FdSlicer.prototype.read=function(buffer,offset,length,position,callback){var self2=this;self2.pend.go(function(cb){fs.read(self2.fd,buffer,offset,length,position,function(err,bytesRead,buffer2){cb(),callback(err,bytesRead,buffer2)})})};FdSlicer.prototype.write=function(buffer,offset,length,position,callback){var self2=this;self2.pend.go(function(cb){fs.write(self2.fd,buffer,offset,length,position,function(err,written,buffer2){cb(),callback(err,written,buffer2)})})};FdSlicer.prototype.createReadStream=function(options){return new ReadStream(this,options)};FdSlicer.prototype.createWriteStream=function(options){return new WriteStream(this,options)};FdSlicer.prototype.ref=function(){this.refCount+=1};FdSlicer.prototype.unref=function(){var self2=this;if(self2.refCount-=1,self2.refCount>0)return;if(self2.refCount<0)throw new Error("invalid unref");self2.autoClose&&fs.close(self2.fd,onCloseDone);function onCloseDone(err){err?self2.emit("error",err):self2.emit("close")}};util.inherits(ReadStream,Readable);function ReadStream(context,options){options=options||{},Readable.call(this,options),this.context=context,this.context.ref(),this.start=options.start||0,this.endOffset=options.end,this.pos=this.start,this.destroyed=!1}ReadStream.prototype._read=function(n){var self2=this;if(!self2.destroyed){var toRead=Math.min(self2._readableState.highWaterMark,n);if(self2.endOffset!=null&&(toRead=Math.min(toRead,self2.endOffset-self2.pos)),toRead<=0){self2.destroyed=!0,self2.push(null),self2.context.unref();return}self2.context.pend.go(function(cb){if(self2.destroyed)return cb();var buffer=new Buffer(toRead);fs.read(self2.context.fd,buffer,0,toRead,self2.pos,function(err,bytesRead){err?self2.destroy(err):bytesRead===0?(self2.destroyed=!0,self2.push(null),self2.context.unref()):(self2.pos+=bytesRead,self2.push(buffer.slice(0,bytesRead))),cb()})})}};ReadStream.prototype.destroy=function(err){this.destroyed||(err=err||new Error("stream destroyed"),this.destroyed=!0,this.emit("error",err),this.context.unref())};util.inherits(WriteStream,Writable);function WriteStream(context,options){options=options||{},Writable.call(this,options),this.context=context,this.context.ref(),this.start=options.start||0,this.endOffset=options.end==null?1/0:+options.end,this.bytesWritten=0,this.pos=this.start,this.destroyed=!1,this.on("finish",this.destroy.bind(this))}WriteStream.prototype._write=function(buffer,encoding,callback){var self2=this;if(!self2.destroyed){if(self2.pos+buffer.length>self2.endOffset){var err=new Error("maximum file length exceeded");err.code="ETOOBIG",self2.destroy(),callback(err);return}self2.context.pend.go(function(cb){if(self2.destroyed)return cb();fs.write(self2.context.fd,buffer,0,buffer.length,self2.pos,function(err2,bytes){err2?(self2.destroy(),cb(),callback(err2)):(self2.bytesWritten+=bytes,self2.pos+=bytes,self2.emit("progress"),cb(),callback())})})}};WriteStream.prototype.destroy=function(){this.destroyed||(this.destroyed=!0,this.context.unref())};util.inherits(BufferSlicer,EventEmitter);function BufferSlicer(buffer,options){EventEmitter.call(this),options=options||{},this.refCount=0,this.buffer=buffer,this.maxChunkSize=options.maxChunkSize||Number.MAX_SAFE_INTEGER}BufferSlicer.prototype.read=function(buffer,offset,length,position,callback){var end=position+length,delta=end-this.buffer.length,written=delta>0?delta:length;this.buffer.copy(buffer,offset,position,end),setImmediate(function(){callback(null,written)})};BufferSlicer.prototype.write=function(buffer,offset,length,position,callback){buffer.copy(this.buffer,position,offset,offset+length),setImmediate(function(){callback(null,length,buffer)})};BufferSlicer.prototype.createReadStream=function(options){options=options||{};var readStream=new PassThrough(options);readStream.destroyed=!1,readStream.start=options.start||0,readStream.endOffset=options.end,readStream.pos=readStream.endOffset||this.buffer.length;for(var entireSlice=this.buffer.slice(readStream.start,readStream.pos),offset=0;;){var nextOffset=offset+this.maxChunkSize;if(nextOffset>=entireSlice.length){offset<entireSlice.length&&readStream.write(entireSlice.slice(offset,entireSlice.length));break}readStream.write(entireSlice.slice(offset,nextOffset)),offset=nextOffset}return readStream.end(),readStream.destroy=function(){readStream.destroyed=!0},readStream};BufferSlicer.prototype.createWriteStream=function(options){var bufferSlicer=this;options=options||{};var writeStream=new Writable(options);return writeStream.start=options.start||0,writeStream.endOffset=options.end==null?this.buffer.length:+options.end,writeStream.bytesWritten=0,writeStream.pos=writeStream.start,writeStream.destroyed=!1,writeStream._write=function(buffer,encoding,callback){if(!writeStream.destroyed){var end=writeStream.pos+buffer.length;if(end>writeStream.endOffset){var err=new Error("maximum file length exceeded");err.code="ETOOBIG",writeStream.destroyed=!0,callback(err);return}buffer.copy(bufferSlicer.buffer,writeStream.pos,0,buffer.length),writeStream.bytesWritten+=buffer.length,writeStream.pos=end,writeStream.emit("progress"),callback()}},writeStream.destroy=function(){writeStream.destroyed=!0},writeStream};BufferSlicer.prototype.ref=function(){this.refCount+=1};BufferSlicer.prototype.unref=function(){if(this.refCount-=1,this.refCount<0)throw new Error("invalid unref")};function createFromBuffer(buffer,options){return new BufferSlicer(buffer,options)}function createFromFd(fd,options){return new FdSlicer(fd,options)}}});var require_buffer_crc32=__commonJS({"node_modules/yauzl/node_modules/buffer-crc32/index.js"(exports2,module2){var Buffer2=require("buffer").Buffer,CRC_TABLE=[0,1996959894,3993919788,2567524794,124634137,1886057615,3915621685,2657392035,249268274,2044508324,3772115230,2547177864,162941995,2125561021,3887607047,2428444049,498536548,1789927666,4089016648,2227061214,450548861,1843258603,4107580753,2211677639,325883990,1684777152,4251122042,2321926636,335633487,1661365465,4195302755,2366115317,997073096,1281953886,3579855332,2724688242,1006888145,1258607687,3524101629,2768942443,901097722,1119000684,3686517206,2898065728,853044451,1172266101,3705015759,2882616665,651767980,1373503546,3369554304,3218104598,565507253,1454621731,3485111705,3099436303,671266974,1594198024,3322730930,2970347812,795835527,1483230225,3244367275,3060149565,1994146192,31158534,2563907772,4023717930,1907459465,112637215,2680153253,3904427059,2013776290,251722036,2517215374,3775830040,2137656763,141376813,2439277719,3865271297,1802195444,476864866,2238001368,4066508878,1812370925,453092731,2181625025,4111451223,1706088902,314042704,2344532202,4240017532,1658658271,366619977,2362670323,4224994405,1303535960,984961486,2747007092,3569037538,1256170817,1037604311,2765210733,3554079995,1131014506,879679996,2909243462,3663771856,1141124467,855842277,2852801631,3708648649,1342533948,654459306,3188396048,3373015174,1466479909,544179635,3110523913,3462522015,1591671054,702138776,2966460450,3352799412,1504918807,783551873,3082640443,3233442989,3988292384,2596254646,62317068,1957810842,3939845945,2647816111,81470997,1943803523,3814918930,2489596804,225274430,2053790376,3826175755,2466906013,167816743,2097651377,4027552580,2265490386,503444072,1762050814,4150417245,2154129355,426522225,1852507879,4275313526,2312317920,282753626,1742555852,4189708143,2394877945,397917763,1622183637,3604390888,2714866558,953729732,1340076626,3518719985,2797360999,1068828381,1219638859,3624741850,2936675148,906185462,1090812512,3747672003,2825379669,829329135,1181335161,3412177804,3160834842,628085408,1382605366,3423369109,3138078467,570562233,1426400815,3317316542,2998733608,733239954,1555261956,3268935591,3050360625,752459403,1541320221,2607071920,3965973030,1969922972,40735498,2617837225,3943577151,1913087877,83908371,2512341634,3803740692,2075208622,213261112,2463272603,3855990285,2094854071,198958881,2262029012,4057260610,1759359992,534414190,2176718541,4139329115,1873836001,414664567,2282248934,4279200368,1711684554,285281116,2405801727,4167216745,1634467795,376229701,2685067896,3608007406,1308918612,956543938,2808555105,3495958263,1231636301,1047427035,2932959818,3654703836,1088359270,936918e3,2847714899,3736837829,1202900863,817233897,3183342108,3401237130,1404277552,615818150,3134207493,3453421203,1423857449,601450431,3009837614,3294710456,1567103746,711928724,3020668471,3272380065,1510334235,755167117];typeof Int32Array<"u"&&(CRC_TABLE=new Int32Array(CRC_TABLE));function ensureBuffer(input){if(Buffer2.isBuffer(input))return input;var hasNewBufferAPI=typeof Buffer2.alloc=="function"&&typeof Buffer2.from=="function";if(typeof input=="number")return hasNewBufferAPI?Buffer2.alloc(input):new Buffer2(input);if(typeof input=="string")return hasNewBufferAPI?Buffer2.from(input):new Buffer2(input);throw new Error("input must be buffer, number, or string, received "+typeof input)}function bufferizeInt(num){var tmp=ensureBuffer(4);return tmp.writeInt32BE(num,0),tmp}function _crc32(buf,previous){buf=ensureBuffer(buf),Buffer2.isBuffer(previous)&&(previous=previous.readUInt32BE(0));for(var crc=~~previous^-1,n=0;n<buf.length;n++)crc=CRC_TABLE[(crc^buf[n])&255]^crc>>>8;return crc^-1}function crc32(){return bufferizeInt(_crc32.apply(null,arguments))}crc32.signed=function(){return _crc32.apply(null,arguments)};crc32.unsigned=function(){return _crc32.apply(null,arguments)>>>0};module2.exports=crc32}});var require_yauzl=__commonJS({"node_modules/yauzl/index.js"(exports2){var fs=require("fs"),zlib=require("zlib"),fd_slicer=require_fd_slicer(),crc32=require_buffer_crc32(),util=require("util"),EventEmitter=require("events").EventEmitter,Transform=require("stream").Transform,PassThrough=require("stream").PassThrough,Writable=require("stream").Writable;exports2.open=open;exports2.fromFd=fromFd;exports2.fromBuffer=fromBuffer;exports2.fromRandomAccessReader=fromRandomAccessReader;exports2.dosDateTimeToDate=dosDateTimeToDate;exports2.validateFileName=validateFileName;exports2.ZipFile=ZipFile;exports2.Entry=Entry;exports2.RandomAccessReader=RandomAccessReader;function open(path,options,callback){typeof options=="function"&&(callback=options,options=null),options==null&&(options={}),options.autoClose==null&&(options.autoClose=!0),options.lazyEntries==null&&(options.lazyEntries=!1),options.decodeStrings==null&&(options.decodeStrings=!0),options.validateEntrySizes==null&&(options.validateEntrySizes=!0),options.strictFileNames==null&&(options.strictFileNames=!1),callback==null&&(callback=defaultCallback),fs.open(path,"r",function(err,fd){if(err)return callback(err);fromFd(fd,options,function(err2,zipfile){err2&&fs.close(fd,defaultCallback),callback(err2,zipfile)})})}function fromFd(fd,options,callback){typeof options=="function"&&(callback=options,options=null),options==null&&(options={}),options.autoClose==null&&(options.autoClose=!1),options.lazyEntries==null&&(options.lazyEntries=!1),options.decodeStrings==null&&(options.decodeStrings=!0),options.validateEntrySizes==null&&(options.validateEntrySizes=!0),options.strictFileNames==null&&(options.strictFileNames=!1),callback==null&&(callback=defaultCallback),fs.fstat(fd,function(err,stats){if(err)return callback(err);var reader=fd_slicer.createFromFd(fd,{autoClose:!0});fromRandomAccessReader(reader,stats.size,options,callback)})}function fromBuffer(buffer,options,callback){typeof options=="function"&&(callback=options,options=null),options==null&&(options={}),options.autoClose=!1,options.lazyEntries==null&&(options.lazyEntries=!1),options.decodeStrings==null&&(options.decodeStrings=!0),options.validateEntrySizes==null&&(options.validateEntrySizes=!0),options.strictFileNames==null&&(options.strictFileNames=!1);var reader=fd_slicer.createFromBuffer(buffer,{maxChunkSize:65536});fromRandomAccessReader(reader,buffer.length,options,callback)}function fromRandomAccessReader(reader,totalSize,options,callback){typeof options=="function"&&(callback=options,options=null),options==null&&(options={}),options.autoClose==null&&(options.autoClose=!0),options.lazyEntries==null&&(options.lazyEntries=!1),options.decodeStrings==null&&(options.decodeStrings=!0);var decodeStrings=!!options.decodeStrings;if(options.validateEntrySizes==null&&(options.validateEntrySizes=!0),options.strictFileNames==null&&(options.strictFileNames=!1),callback==null&&(callback=defaultCallback),typeof totalSize!="number")throw new Error("expected totalSize parameter to be a number");if(totalSize>Number.MAX_SAFE_INTEGER)throw new Error("zip file too large. only file sizes up to 2^52 are supported due to JavaScript's Number type being an IEEE 754 double.");reader.ref();var eocdrWithoutCommentSize=22,maxCommentSize=65535,bufferSize=Math.min(eocdrWithoutCommentSize+maxCommentSize,totalSize),buffer=newBuffer(bufferSize),bufferReadStart=totalSize-buffer.length;readAndAssertNoEof(reader,buffer,0,bufferSize,bufferReadStart,function(err){if(err)return callback(err);for(var i=bufferSize-eocdrWithoutCommentSize;i>=0;i-=1)if(buffer.readUInt32LE(i)===101010256){var eocdrBuffer=buffer.slice(i),diskNumber=eocdrBuffer.readUInt16LE(4);if(diskNumber!==0)return callback(new Error("multi-disk zip files are not supported: found disk number: "+diskNumber));var entryCount=eocdrBuffer.readUInt16LE(10),centralDirectoryOffset=eocdrBuffer.readUInt32LE(16),commentLength=eocdrBuffer.readUInt16LE(20),expectedCommentLength=eocdrBuffer.length-eocdrWithoutCommentSize;if(commentLength!==expectedCommentLength)return callback(new Error("invalid comment length. expected: "+expectedCommentLength+". found: "+commentLength));var comment=decodeStrings?decodeBuffer(eocdrBuffer,22,eocdrBuffer.length,!1):eocdrBuffer.slice(22);if(!(entryCount===65535||centralDirectoryOffset===4294967295))return callback(null,new ZipFile(reader,centralDirectoryOffset,totalSize,entryCount,comment,options.autoClose,options.lazyEntries,decodeStrings,options.validateEntrySizes,options.strictFileNames));var zip64EocdlBuffer=newBuffer(20),zip64EocdlOffset=bufferReadStart+i-zip64EocdlBuffer.length;readAndAssertNoEof(reader,zip64EocdlBuffer,0,zip64EocdlBuffer.length,zip64EocdlOffset,function(err2){if(err2)return callback(err2);if(zip64EocdlBuffer.readUInt32LE(0)!==117853008)return callback(new Error("invalid zip64 end of central directory locator signature"));var zip64EocdrOffset=readUInt64LE(zip64EocdlBuffer,8),zip64EocdrBuffer=newBuffer(56);readAndAssertNoEof(reader,zip64EocdrBuffer,0,zip64EocdrBuffer.length,zip64EocdrOffset,function(err3){return err3?callback(err3):zip64EocdrBuffer.readUInt32LE(0)!==101075792?callback(new Error("invalid zip64 end of central directory record signature")):(entryCount=readUInt64LE(zip64EocdrBuffer,32),centralDirectoryOffset=readUInt64LE(zip64EocdrBuffer,48),callback(null,new ZipFile(reader,centralDirectoryOffset,totalSize,entryCount,comment,options.autoClose,options.lazyEntries,decodeStrings,options.validateEntrySizes,options.strictFileNames)))})});return}callback(new Error("end of central directory record signature not found"))})}util.inherits(ZipFile,EventEmitter);function ZipFile(reader,centralDirectoryOffset,fileSize,entryCount,comment,autoClose,lazyEntries,decodeStrings,validateEntrySizes,strictFileNames){var self2=this;EventEmitter.call(self2),self2.reader=reader,self2.reader.on("error",function(err){emitError(self2,err)}),self2.reader.once("close",function(){self2.emit("close")}),self2.readEntryCursor=centralDirectoryOffset,self2.fileSize=fileSize,self2.entryCount=entryCount,self2.comment=comment,self2.entriesRead=0,self2.autoClose=!!autoClose,self2.lazyEntries=!!lazyEntries,self2.decodeStrings=!!decodeStrings,self2.validateEntrySizes=!!validateEntrySizes,self2.strictFileNames=!!strictFileNames,self2.isOpen=!0,self2.emittedError=!1,self2.lazyEntries||self2._readEntry()}ZipFile.prototype.close=function(){this.isOpen&&(this.isOpen=!1,this.reader.unref())};function emitErrorAndAutoClose(self2,err){self2.autoClose&&self2.close(),emitError(self2,err)}function emitError(self2,err){self2.emittedError||(self2.emittedError=!0,self2.emit("error",err))}ZipFile.prototype.readEntry=function(){if(!this.lazyEntries)throw new Error("readEntry() called without lazyEntries:true");this._readEntry()};ZipFile.prototype._readEntry=function(){var self2=this;if(self2.entryCount===self2.entriesRead){setImmediate(function(){self2.autoClose&&self2.close(),!self2.emittedError&&self2.emit("end")});return}if(!self2.emittedError){var buffer=newBuffer(46);readAndAssertNoEof(self2.reader,buffer,0,buffer.length,self2.readEntryCursor,function(err){if(err)return emitErrorAndAutoClose(self2,err);if(!self2.emittedError){var entry=new Entry,signature=buffer.readUInt32LE(0);if(signature!==33639248)return emitErrorAndAutoClose(self2,new Error("invalid central directory file header signature: 0x"+signature.toString(16)));if(entry.versionMadeBy=buffer.readUInt16LE(4),entry.versionNeededToExtract=buffer.readUInt16LE(6),entry.generalPurposeBitFlag=buffer.readUInt16LE(8),entry.compressionMethod=buffer.readUInt16LE(10),entry.lastModFileTime=buffer.readUInt16LE(12),entry.lastModFileDate=buffer.readUInt16LE(14),entry.crc32=buffer.readUInt32LE(16),entry.compressedSize=buffer.readUInt32LE(20),entry.uncompressedSize=buffer.readUInt32LE(24),entry.fileNameLength=buffer.readUInt16LE(28),entry.extraFieldLength=buffer.readUInt16LE(30),entry.fileCommentLength=buffer.readUInt16LE(32),entry.internalFileAttributes=buffer.readUInt16LE(36),entry.externalFileAttributes=buffer.readUInt32LE(38),entry.relativeOffsetOfLocalHeader=buffer.readUInt32LE(42),entry.generalPurposeBitFlag&64)return emitErrorAndAutoClose(self2,new Error("strong encryption is not supported"));self2.readEntryCursor+=46,buffer=newBuffer(entry.fileNameLength+entry.extraFieldLength+entry.fileCommentLength),readAndAssertNoEof(self2.reader,buffer,0,buffer.length,self2.readEntryCursor,function(err2){if(err2)return emitErrorAndAutoClose(self2,err2);if(!self2.emittedError){var isUtf8=(entry.generalPurposeBitFlag&2048)!==0;entry.fileName=self2.decodeStrings?decodeBuffer(buffer,0,entry.fileNameLength,isUtf8):buffer.slice(0,entry.fileNameLength);var fileCommentStart=entry.fileNameLength+entry.extraFieldLength,extraFieldBuffer=buffer.slice(entry.fileNameLength,fileCommentStart);entry.extraFields=[];for(var i=0;i<extraFieldBuffer.length-3;){var headerId=extraFieldBuffer.readUInt16LE(i+0),dataSize=extraFieldBuffer.readUInt16LE(i+2),dataStart=i+4,dataEnd=dataStart+dataSize;if(dataEnd>extraFieldBuffer.length)return emitErrorAndAutoClose(self2,new Error("extra field length exceeds extra field buffer size"));var dataBuffer=newBuffer(dataSize);extraFieldBuffer.copy(dataBuffer,0,dataStart,dataEnd),entry.extraFields.push({id:headerId,data:dataBuffer}),i=dataEnd}if(entry.fileComment=self2.decodeStrings?decodeBuffer(buffer,fileCommentStart,fileCommentStart+entry.fileCommentLength,isUtf8):buffer.slice(fileCommentStart,fileCommentStart+entry.fileCommentLength),entry.comment=entry.fileComment,self2.readEntryCursor+=buffer.length,self2.entriesRead+=1,entry.uncompressedSize===4294967295||entry.compressedSize===4294967295||entry.relativeOffsetOfLocalHeader===4294967295){for(var zip64EiefBuffer=null,i=0;i<entry.extraFields.length;i++){var extraField=entry.extraFields[i];if(extraField.id===1){zip64EiefBuffer=extraField.data;break}}if(zip64EiefBuffer==null)return emitErrorAndAutoClose(self2,new Error("expected zip64 extended information extra field"));var index=0;if(entry.uncompressedSize===4294967295){if(index+8>zip64EiefBuffer.length)return emitErrorAndAutoClose(self2,new Error("zip64 extended information extra field does not include uncompressed size"));entry.uncompressedSize=readUInt64LE(zip64EiefBuffer,index),index+=8}if(entry.compressedSize===4294967295){if(index+8>zip64EiefBuffer.length)return emitErrorAndAutoClose(self2,new Error("zip64 extended information extra field does not include compressed size"));entry.compressedSize=readUInt64LE(zip64EiefBuffer,index),index+=8}if(entry.relativeOffsetOfLocalHeader===4294967295){if(index+8>zip64EiefBuffer.length)return emitErrorAndAutoClose(self2,new Error("zip64 extended information extra field does not include relative header offset"));entry.relativeOffsetOfLocalHeader=readUInt64LE(zip64EiefBuffer,index),index+=8}}if(self2.decodeStrings)for(var i=0;i<entry.extraFields.length;i++){var extraField=entry.extraFields[i];if(extraField.id===28789){if(extraField.data.length<6||extraField.data.readUInt8(0)!==1)continue;var oldNameCrc32=extraField.data.readUInt32LE(1);if(crc32.unsigned(buffer.slice(0,entry.fileNameLength))!==oldNameCrc32)continue;entry.fileName=decodeBuffer(extraField.data,5,extraField.data.length,!0);break}}if(self2.validateEntrySizes&&entry.compressionMethod===0){var expectedCompressedSize=entry.uncompressedSize;if(entry.isEncrypted()&&(expectedCompressedSize+=12),entry.compressedSize!==expectedCompressedSize){var msg="compressed/uncompressed size mismatch for stored file: "+entry.compressedSize+" != "+entry.uncompressedSize;return emitErrorAndAutoClose(self2,new Error(msg))}}if(self2.decodeStrings){self2.strictFileNames||(entry.fileName=entry.fileName.replace(/\\/g,"/"));var errorMessage=validateFileName(entry.fileName,self2.validateFileNameOptions);if(errorMessage!=null)return emitErrorAndAutoClose(self2,new Error(errorMessage))}self2.emit("entry",entry),self2.lazyEntries||self2._readEntry()}})}})}};ZipFile.prototype.openReadStream=function(entry,options,callback){var self2=this,relativeStart=0,relativeEnd=entry.compressedSize;if(callback==null)callback=options,options={};else{if(options.decrypt!=null){if(!entry.isEncrypted())throw new Error("options.decrypt can only be specified for encrypted entries");if(options.decrypt!==!1)throw new Error("invalid options.decrypt value: "+options.decrypt);if(entry.isCompressed()&&options.decompress!==!1)throw new Error("entry is encrypted and compressed, and options.decompress !== false")}if(options.decompress!=null){if(!entry.isCompressed())throw new Error("options.decompress can only be specified for compressed entries");if(!(options.decompress===!1||options.decompress===!0))throw new Error("invalid options.decompress value: "+options.decompress)}if(options.start!=null||options.end!=null){if(entry.isCompressed()&&options.decompress!==!1)throw new Error("start/end range not allowed for compressed entry without options.decompress === false");if(entry.isEncrypted()&&options.decrypt!==!1)throw new Error("start/end range not allowed for encrypted entry without options.decrypt === false")}if(options.start!=null){if(relativeStart=options.start,relativeStart<0)throw new Error("options.start < 0");if(relativeStart>entry.compressedSize)throw new Error("options.start > entry.compressedSize")}if(options.end!=null){if(relativeEnd=options.end,relativeEnd<0)throw new Error("options.end < 0");if(relativeEnd>entry.compressedSize)throw new Error("options.end > entry.compressedSize");if(relativeEnd<relativeStart)throw new Error("options.end < options.start")}}if(!self2.isOpen)return callback(new Error("closed"));if(entry.isEncrypted()&&options.decrypt!==!1)return callback(new Error("entry is encrypted, and options.decrypt !== false"));self2.reader.ref();var buffer=newBuffer(30);readAndAssertNoEof(self2.reader,buffer,0,buffer.length,entry.relativeOffsetOfLocalHeader,function(err){try{if(err)return callback(err);var signature=buffer.readUInt32LE(0);if(signature!==67324752)return callback(new Error("invalid local file header signature: 0x"+signature.toString(16)));var fileNameLength=buffer.readUInt16LE(26),extraFieldLength=buffer.readUInt16LE(28),localFileHeaderEnd=entry.relativeOffsetOfLocalHeader+buffer.length+fileNameLength+extraFieldLength,decompress;if(entry.compressionMethod===0)decompress=!1;else if(entry.compressionMethod===8)decompress=options.decompress!=null?options.decompress:!0;else return callback(new Error("unsupported compression method: "+entry.compressionMethod));var fileDataStart=localFileHeaderEnd,fileDataEnd=fileDataStart+entry.compressedSize;if(entry.compressedSize!==0&&fileDataEnd>self2.fileSize)return callback(new Error("file data overflows file bounds: "+fileDataStart+" + "+entry.compressedSize+" > "+self2.fileSize));var readStream=self2.reader.createReadStream({start:fileDataStart+relativeStart,end:fileDataStart+relativeEnd}),endpointStream=readStream;if(decompress){var destroyed=!1,inflateFilter=zlib.createInflateRaw();readStream.on("error",function(err2){setImmediate(function(){destroyed||inflateFilter.emit("error",err2)})}),readStream.pipe(inflateFilter),self2.validateEntrySizes?(endpointStream=new AssertByteCountStream(entry.uncompressedSize),inflateFilter.on("error",function(err2){setImmediate(function(){destroyed||endpointStream.emit("error",err2)})}),inflateFilter.pipe(endpointStream)):endpointStream=inflateFilter,endpointStream.destroy=function(){destroyed=!0,inflateFilter!==endpointStream&&inflateFilter.unpipe(endpointStream),readStream.unpipe(inflateFilter),readStream.destroy()}}callback(null,endpointStream)}finally{self2.reader.unref()}})};function Entry(){}Entry.prototype.getLastModDate=function(){return dosDateTimeToDate(this.lastModFileDate,this.lastModFileTime)};Entry.prototype.isEncrypted=function(){return(this.generalPurposeBitFlag&1)!==0};Entry.prototype.isCompressed=function(){return this.compressionMethod===8};function dosDateTimeToDate(date,time){var day=date&31,month=(date>>5&15)-1,year=(date>>9&127)+1980,millisecond=0,second=(time&31)*2,minute=time>>5&63,hour=time>>11&31;return new Date(year,month,day,hour,minute,second,millisecond)}function validateFileName(fileName){return fileName.indexOf("\\")!==-1?"invalid characters in fileName: "+fileName:/^[a-zA-Z]:/.test(fileName)||/^\//.test(fileName)?"absolute path: "+fileName:fileName.split("/").indexOf("..")!==-1?"invalid relative path: "+fileName:null}function readAndAssertNoEof(reader,buffer,offset,length,position,callback){if(length===0)return setImmediate(function(){callback(null,newBuffer(0))});reader.read(buffer,offset,length,position,function(err,bytesRead){if(err)return callback(err);if(bytesRead<length)return callback(new Error("unexpected EOF"));callback()})}util.inherits(AssertByteCountStream,Transform);function AssertByteCountStream(byteCount){Transform.call(this),this.actualByteCount=0,this.expectedByteCount=byteCount}AssertByteCountStream.prototype._transform=function(chunk,encoding,cb){if(this.actualByteCount+=chunk.length,this.actualByteCount>this.expectedByteCount){var msg="too many bytes in the stream. expected "+this.expectedByteCount+". got at least "+this.actualByteCount;return cb(new Error(msg))}cb(null,chunk)};AssertByteCountStream.prototype._flush=function(cb){if(this.actualByteCount<this.expectedByteCount){var msg="not enough bytes in the stream. expected "+this.expectedByteCount+". got only "+this.actualByteCount;return cb(new Error(msg))}cb()};util.inherits(RandomAccessReader,EventEmitter);function RandomAccessReader(){EventEmitter.call(this),this.refCount=0}RandomAccessReader.prototype.ref=function(){this.refCount+=1};RandomAccessReader.prototype.unref=function(){var self2=this;if(self2.refCount-=1,self2.refCount>0)return;if(self2.refCount<0)throw new Error("invalid unref");self2.close(onCloseDone);function onCloseDone(err){if(err)return self2.emit("error",err);self2.emit("close")}};RandomAccessReader.prototype.createReadStream=function(options){var start=options.start,end=options.end;if(start===end){var emptyStream=new PassThrough;return setImmediate(function(){emptyStream.end()}),emptyStream}var stream=this._readStreamForRange(start,end),destroyed=!1,refUnrefFilter=new RefUnrefFilter(this);stream.on("error",function(err){setImmediate(function(){destroyed||refUnrefFilter.emit("error",err)})}),refUnrefFilter.destroy=function(){stream.unpipe(refUnrefFilter),refUnrefFilter.unref(),stream.destroy()};var byteCounter=new AssertByteCountStream(end-start);return refUnrefFilter.on("error",function(err){setImmediate(function(){destroyed||byteCounter.emit("error",err)})}),byteCounter.destroy=function(){destroyed=!0,refUnrefFilter.unpipe(byteCounter),refUnrefFilter.destroy()},stream.pipe(refUnrefFilter).pipe(byteCounter)};RandomAccessReader.prototype._readStreamForRange=function(start,end){throw new Error("not implemented")};RandomAccessReader.prototype.read=function(buffer,offset,length,position,callback){var readStream=this.createReadStream({start:position,end:position+length}),writeStream=new Writable,written=0;writeStream._write=function(chunk,encoding,cb){chunk.copy(buffer,offset+written,0,chunk.length),written+=chunk.length,cb()},writeStream.on("finish",callback),readStream.on("error",function(error){callback(error)}),readStream.pipe(writeStream)};RandomAccessReader.prototype.close=function(callback){setImmediate(callback)};util.inherits(RefUnrefFilter,PassThrough);function RefUnrefFilter(context){PassThrough.call(this),this.context=context,this.context.ref(),this.unreffedYet=!1}RefUnrefFilter.prototype._flush=function(cb){this.unref(),cb()};RefUnrefFilter.prototype.unref=function(cb){this.unreffedYet||(this.unreffedYet=!0,this.context.unref())};var cp437="\0\u263A\u263B\u2665\u2666\u2663\u2660\u2022\u25D8\u25CB\u25D9\u2642\u2640\u266A\u266B\u263C\u25BA\u25C4\u2195\u203C\xB6\xA7\u25AC\u21A8\u2191\u2193\u2192\u2190\u221F\u2194\u25B2\u25BC !\"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\\]^_`abcdefghijklmnopqrstuvwxyz{|}~\u2302\xC7\xFC\xE9\xE2\xE4\xE0\xE5\xE7\xEA\xEB\xE8\xEF\xEE\xEC\xC4\xC5\xC9\xE6\xC6\xF4\xF6\xF2\xFB\xF9\xFF\xD6\xDC\xA2\xA3\xA5\u20A7\u0192\xE1\xED\xF3\xFA\xF1\xD1\xAA\xBA\xBF\u2310\xAC\xBD\xBC\xA1\xAB\xBB\u2591\u2592\u2593\u2502\u2524\u2561\u2562\u2556\u2555\u2563\u2551\u2557\u255D\u255C\u255B\u2510\u2514\u2534\u252C\u251C\u2500\u253C\u255E\u255F\u255A\u2554\u2569\u2566\u2560\u2550\u256C\u2567\u2568\u2564\u2565\u2559\u2558\u2552\u2553\u256B\u256A\u2518\u250C\u2588\u2584\u258C\u2590\u2580\u03B1\xDF\u0393\u03C0\u03A3\u03C3\xB5\u03C4\u03A6\u0398\u03A9\u03B4\u221E\u03C6\u03B5\u2229\u2261\xB1\u2265\u2264\u2320\u2321\xF7\u2248\xB0\u2219\xB7\u221A\u207F\xB2\u25A0\xA0";function decodeBuffer(buffer,start,end,isUtf8){if(isUtf8)return buffer.toString("utf8",start,end);for(var result="",i=start;i<end;i++)result+=cp437[buffer[i]];return result}function readUInt64LE(buffer,offset){var lower32=buffer.readUInt32LE(offset),upper32=buffer.readUInt32LE(offset+4);return upper32*4294967296+lower32}var newBuffer;typeof Buffer.allocUnsafe=="function"?newBuffer=function(len){return Buffer.allocUnsafe(len)}:newBuffer=function(len){return new Buffer(len)};function defaultCallback(err){if(err)throw err}}});var require_archiveShared=__commonJS({"src/lib/archiveShared.js"(exports2,module2){var path=require("path");function createArchiveError(message,statusCode=400){let error=new Error(message);return error.statusCode=statusCode,error}function isSafeArchiveEntry(entryPath){let normalized=String(entryPath||"").replace(/\\/g,"/").replace(/\/+$/,"");return!normalized||normalized.startsWith("/")||/^[a-zA-Z]:/.test(normalized)?!1:normalized.split("/").every(part=>part&&part!=="."&&part!=="..")}function isInside(parentPath,candidatePath){let relative=path.relative(parentPath,candidatePath);return relative===""||!relative.startsWith("..")&&!path.isAbsolute(relative)}function hasArchiveExtension(filePath,extensions){let lower=String(filePath||"").toLowerCase();return extensions.some(extension=>lower.endsWith(extension))}module2.exports={createArchiveError,hasArchiveExtension,isInside,isSafeArchiveEntry}}});var require_light=__commonJS({"src/lib/archiveProviders/light.js"(exports2,module2){var{createReadStream,createWriteStream,mkdirSync}=require("fs"),path=require("path"),{pipeline}=require("stream/promises"),{createGunzip}=require("zlib"),tar=require_tar_stream(),yauzl=require_yauzl(),{createArchiveError,hasArchiveExtension,isSafeArchiveEntry}=require_archiveShared(),extensions=[".tar.gz",".tgz",".zip",".tar"],capabilities={edition:"light",createFormats:["zip","tar.gz"],readExtensions:extensions.map(extension=>extension.slice(1))};function isArchivePath(filePath){return hasArchiveExtension(filePath,extensions)}function isZipPath(filePath){return String(filePath).toLowerCase().endsWith(".zip")}function isCompressedTarPath(filePath){return/\.(tar\.gz|tgz)$/i.test(filePath)}function isTarMetadataEntry(header){return["pax-global-header","pax-header","gnu-long-path","gnu-long-link"].includes(header.type)}function isSafeTarEntry(header){return["file","directory"].includes(header.type)&&isSafeArchiveEntry(header.name)}function isZipDirectory(entry){return/\/$/.test(entry.fileName)}function isZipSymbolicLink(entry){let mode=Math.floor(Number(entry.externalFileAttributes||0)/65536)%65536;return Math.floor(mode/4096)%16===10}function isZipEncrypted(entry){return Number(entry.generalPurposeBitFlag||0)%2===1}function openZip(filePath){return new Promise((resolve,reject)=>{yauzl.open(filePath,{autoClose:!0,lazyEntries:!0,validateEntrySizes:!0},(error,zipFile)=>{error?reject(createArchiveError(`Unable to read ZIP archive: ${error.message}`,422)):resolve(zipFile)})})}async function listZip(filePath){let zipFile=await openZip(filePath);return new Promise((resolve,reject)=>{let entries=[],settled=!1,finish=(callback,value)=>{settled||(settled=!0,zipFile.close(),callback(value))};zipFile.on("entry",entry=>{entries.push({path:entry.fileName.replace(/\\/g,"/"),isDirectory:isZipDirectory(entry),isSymbolicLink:isZipSymbolicLink(entry),size:Number(entry.uncompressedSize||0),packedSize:Number(entry.compressedSize||0),encrypted:isZipEncrypted(entry),modified:entry.getLastModDate().toISOString(),attributes:""}),zipFile.readEntry()}),zipFile.once("end",()=>finish(resolve,entries)),zipFile.once("error",error=>finish(reject,createArchiveError(`Unable to read ZIP archive: ${error.message}`,422))),zipFile.readEntry()})}async function listTar(filePath){return new Promise((resolve,reject)=>{let entries=[],extractor=tar.extract(),input=createReadStream(filePath),streams=[input,extractor],source=input,settled=!1;if(isCompressedTarPath(filePath)){let gunzip=createGunzip();streams.push(gunzip),source=input.pipe(gunzip)}let finish=(callback,value)=>{settled||(settled=!0,callback(value))},fail=error=>{streams.forEach(stream=>stream.destroy()),finish(reject,createArchiveError(`Unable to read TAR archive: ${error.message}`,422))};streams.forEach(stream=>stream.once("error",fail)),extractor.on("entry",(header,entryStream,next)=>{isTarMetadataEntry(header)||entries.push({path:String(header.name||"").replace(/\\/g,"/"),isDirectory:header.type==="directory",isSymbolicLink:!isSafeTarEntry(header),size:Number(header.size||0),packedSize:0,encrypted:!1,modified:header.mtime?new Date(header.mtime).toISOString():null,attributes:header.type||""}),entryStream.once("error",fail),entryStream.once("end",next),entryStream.resume()}),extractor.once("finish",()=>finish(resolve,entries)),source.pipe(extractor)})}async function listEntries(filePath){return isZipPath(filePath)?listZip(filePath):listTar(filePath)}function assertZipEntrySafe(entry){if(!isSafeArchiveEntry(entry.fileName)||isZipSymbolicLink(entry))throw createArchiveError("Archive contains an unsafe entry path",422);if(isZipEncrypted(entry))throw createArchiveError("Encrypted archives are not supported",422)}async function extractZip(job,sourcePath,targetPath){let zipFile=await openZip(sourcePath);return new Promise((resolve,reject)=>{let settled=!1,finish=(callback,value)=>{settled||(settled=!0,zipFile.close(),callback(value))},next=()=>{settled||zipFile.readEntry()};zipFile.on("entry",entry=>{try{assertZipEntrySafe(entry);let outputPath=path.join(targetPath,entry.fileName);if(isZipDirectory(entry)){mkdirSync(outputPath,{recursive:!0}),job.progress.processedEntries=Math.min(job.progress.totalEntries,job.progress.processedEntries+1),next();return}mkdirSync(path.dirname(outputPath),{recursive:!0}),zipFile.openReadStream(entry,async(error,input)=>{if(error)return finish(reject,createArchiveError(`Unable to extract ZIP archive: ${error.message}`,422));try{return await pipeline(input,createWriteStream(outputPath,{flags:"wx"})),job.progress.processedEntries=Math.min(job.progress.totalEntries,job.progress.processedEntries+1),next()}catch(streamError){finish(reject,createArchiveError(`Unable to extract ZIP archive: ${streamError.message}`,422))}})}catch(error){finish(reject,error)}}),zipFile.once("end",()=>finish(resolve)),zipFile.once("error",error=>finish(reject,createArchiveError(`Unable to extract ZIP archive: ${error.message}`,422))),zipFile.readEntry()})}async function extractTar(job,sourcePath,targetPath){return new Promise((resolve,reject)=>{let extractor=tar.extract(),input=createReadStream(sourcePath),streams=[input,extractor],source=input,settled=!1;if(isCompressedTarPath(sourcePath)){let gunzip=createGunzip();streams.push(gunzip),source=input.pipe(gunzip)}let finish=(callback,value)=>{settled||(settled=!0,callback(value))},fail=error=>{streams.forEach(stream=>stream.destroy());let archiveError=error.statusCode?error:createArchiveError(`Unable to extract TAR archive: ${error.message}`,422);finish(reject,archiveError)};streams.forEach(stream=>stream.once("error",fail)),extractor.on("entry",(header,entryStream,next)=>{if(isTarMetadataEntry(header)){entryStream.once("error",fail),entryStream.once("end",next),entryStream.resume();return}if(!isSafeTarEntry(header)){fail(createArchiveError("Archive contains an unsafe entry path",422));return}let outputPath=path.join(targetPath,header.name);if(header.type==="directory"){mkdirSync(outputPath,{recursive:!0}),entryStream.once("error",fail),entryStream.once("end",()=>{job.progress.processedEntries=Math.min(job.progress.totalEntries,job.progress.processedEntries+1),next()}),entryStream.resume();return}mkdirSync(path.dirname(outputPath),{recursive:!0}),pipeline(entryStream,createWriteStream(outputPath,{flags:"wx"})).then(()=>{job.progress.processedEntries=Math.min(job.progress.totalEntries,job.progress.processedEntries+1),next()}).catch(fail)}),extractor.once("finish",()=>finish(resolve)),source.pipe(extractor)})}async function extract(job,sourcePath,targetPath){return isZipPath(sourcePath)?extractZip(job,sourcePath,targetPath):extractTar(job,sourcePath,targetPath)}module2.exports={capabilities,extract,isArchivePath,listEntries}}});var require_archiveService=__commonJS({"src/lib/archiveService.js"(exports2,module2){var{createWriteStream,existsSync,lstatSync,mkdirSync,promises:fsPromises,realpathSync,renameSync,rmSync}=require("fs"),path=require("path"),crypto=require("crypto"),archiver=require("archiver"),archiveProvider=require_light(),{createArchiveError,isInside,isSafeArchiveEntry}=require_archiveShared(),MAX_ARCHIVE_SIZE=2*1024*1024*1024,MAX_ARCHIVE_ENTRIES=1e4,MAX_COMPRESSION_RATIO=100,ArchiveService=class{constructor({rootPath,resolvePath,getChildPath}){this.rootPath=rootPath,this.resolvePath=resolvePath,this.getChildPath=getChildPath,this.jobs=new Map}resolveExistingFile(inputPath){let fullPath=this.resolvePath(inputPath);if(!existsSync(fullPath))throw createArchiveError("Path not found",404);let stats=lstatSync(fullPath);if(!stats.isFile())throw createArchiveError("Archive path must be a file");if(!archiveProvider.isArchivePath(fullPath))throw createArchiveError("Unsupported archive format");if(stats.size>MAX_ARCHIVE_SIZE)throw createArchiveError("Archive exceeds 2GB limit",413);return fullPath}async listArchive(inputPath){let fullPath=this.resolveExistingFile(inputPath),entries=await archiveProvider.listEntries(fullPath);return this.assertEntriesSafe(entries,fullPath),{path:inputPath,name:path.basename(fullPath),entries,totalEntries:entries.length,totalSize:entries.reduce((total,entry)=>total+entry.size,0),totalPackedSize:entries.reduce((total,entry)=>total+entry.packedSize,0)}}assertEntriesSafe(entries,fullPath){if(!entries.length)throw createArchiveError("Archive contains no entries",422);if(entries.length>MAX_ARCHIVE_ENTRIES)throw createArchiveError("Archive contains too many entries",413);if(entries.some(entry=>entry.encrypted))throw createArchiveError("Encrypted archives are not supported",422);if(entries.some(entry=>entry.isSymbolicLink||!isSafeArchiveEntry(entry.path)))throw createArchiveError("Archive contains an unsafe entry path",422);let totalSize=entries.reduce((total,entry)=>total+entry.size,0),packedSize=Math.max(lstatSync(fullPath).size,1);if(totalSize>MAX_ARCHIVE_SIZE)throw createArchiveError("Archive expands beyond 2GB limit",413);if(totalSize/packedSize>MAX_COMPRESSION_RATIO)throw createArchiveError("Archive compression ratio exceeds limit",413)}startJob(type,payload){let id=crypto.randomUUID(),job={id,type,status:"queued",progress:{processedEntries:0,totalEntries:0},createdAt:new Date().toISOString(),result:null,error:null,cancelled:!1,child:null,archive:null};return this.jobs.set(id,job),setImmediate(async()=>{if(!job.cancelled){job.status="running";try{job.result=type==="create"?await this.createArchive(job,payload):await this.extractArchive(job,payload),job.status=job.cancelled?"cancelled":"completed"}catch(error){job.status=job.cancelled?"cancelled":"failed",job.error=error.message}finally{job.child=null,job.archive=null,job.finishedAt=new Date().toISOString()}}}),job}getJob(id){return this.jobs.get(id)}getCapabilities(){return archiveProvider.capabilities}cancelJob(id){let job=this.getJob(id);if(!job)throw createArchiveError("Archive job not found",404);return["completed","failed","cancelled"].includes(job.status)||(job.cancelled=!0,job.status="cancelled",job.child&&job.child.kill("SIGTERM"),job.archive&&job.archive.abort()),job}async createArchive(job,payload){let format=payload.format==="tar.gz"?"tar.gz":payload.format;if(!archiveProvider.capabilities.createFormats.includes(format)){let formats=archiveProvider.capabilities.createFormats.join(" and ");throw createArchiveError(`Supported creation formats are ${formats}`)}if(!Array.isArray(payload.sources)||payload.sources.length===0)throw createArchiveError("Sources must be a non-empty array");let sourcePaths=payload.sources.map(source=>this.resolvePath(source));sourcePaths.forEach(source=>{if(!existsSync(source))throw createArchiveError("Source path not found",404);if(lstatSync(source).isSymbolicLink())throw createArchiveError("Symbolic links cannot be archived");let realPath=realpathSync(source);if(!isInside(this.rootPath,realPath))throw createArchiveError("Access denied",403)}),await Promise.all(sourcePaths.map(source=>this.assertSourceTreeSafe(source)));let destinationPath=payload.destinationPath||path.posix.dirname(payload.sources[0]),archiveName=String(payload.name||"").trim(),requiredExtension=format==="zip"?".zip":".tar.gz",safeName=archiveName.endsWith(requiredExtension)?archiveName:`${archiveName}${requiredExtension}`,outputPath=this.getChildPath(destinationPath,safeName);if(existsSync(outputPath))throw createArchiveError("Archive path already exists",409);if(job.progress.totalEntries=sourcePaths.length,await new Promise((resolve,reject)=>{let output=createWriteStream(outputPath,{flags:"wx"}),archive=format==="zip"?archiver("zip",{zlib:{level:9}}):archiver("tar",{gzip:!0,gzipOptions:{level:9}});job.archive=archive,output.on("close",resolve),output.on("error",reject),archive.on("error",reject),archive.on("progress",progress=>{job.progress.processedEntries=progress.entries.processed,job.progress.totalEntries=progress.entries.total}),archive.pipe(output),sourcePaths.forEach(source=>{lstatSync(source).isDirectory()?archive.directory(source,path.basename(source)):archive.file(source,{name:path.basename(source)})}),archive.finalize()}).catch(error=>{throw rmSync(outputPath,{force:!0}),error}),job.cancelled)throw rmSync(outputPath,{force:!0}),createArchiveError("Archive job cancelled",499);return{path:outputPath,name:path.basename(outputPath)}}async extractArchive(job,payload){let sourcePath=this.resolveExistingFile(payload.path),destinationPath=this.resolvePath(payload.destinationPath||"/");if(!existsSync(destinationPath)||!lstatSync(destinationPath).isDirectory())throw createArchiveError("Extraction destination must be an existing directory",404);let listing=await this.listArchive(payload.path);job.progress.totalEntries=listing.totalEntries;let tempRoot=await fsPromises.mkdtemp(path.join(destinationPath,".mock-service-cli-archive-")),tempOutput=path.join(tempRoot,"output");mkdirSync(tempOutput);try{if(await archiveProvider.extract(job,sourcePath,tempOutput),job.cancelled)throw createArchiveError("Archive job cancelled",499);await this.assertExtractedTreeSafe(tempOutput);let outputEntries=await fsPromises.readdir(tempOutput);if(!outputEntries.length)throw createArchiveError("Archive produced no files",422);outputEntries.forEach(name=>{if(existsSync(path.join(destinationPath,name)))throw createArchiveError(`Destination already contains ${name}`,409)});for(let name of outputEntries)renameSync(path.join(tempOutput,name),path.join(destinationPath,name));return job.progress.processedEntries=job.progress.totalEntries,{destinationPath,entries:outputEntries}}finally{rmSync(tempRoot,{recursive:!0,force:!0})}}async assertExtractedTreeSafe(root){let rootRealPath=realpathSync(root),walk=async current=>{let entries=await fsPromises.readdir(current,{withFileTypes:!0});for(let entry of entries){let child=path.join(current,entry.name),stats=await fsPromises.lstat(child);if(stats.isSymbolicLink())throw createArchiveError("Archive contains symbolic links",422);let realPath=realpathSync(child);if(!isInside(rootRealPath,realPath))throw createArchiveError("Archive extracted outside its destination",422);stats.isDirectory()&&await walk(child)}};await walk(root)}async assertSourceTreeSafe(source){let stats=await fsPromises.lstat(source);if(stats.isSymbolicLink())throw createArchiveError("Symbolic links cannot be archived");if(!stats.isDirectory())return;let entries=await fsPromises.readdir(source,{withFileTypes:!0});await Promise.all(entries.map(entry=>this.assertSourceTreeSafe(path.join(source,entry.name))))}};module2.exports={ArchiveService,isArchivePath:archiveProvider.isArchivePath}}});var require_fileExplorerServer=__commonJS({"src/lib/fileExplorerServer.js"(){var express=require_express2(),{existsSync,readFileSync,statSync,lstatSync,rmSync,mkdirSync,writeFileSync,renameSync,realpathSync,copyFileSync,unlinkSync,constants:fsConstants,promises:fsPromises}=require("fs"),path=require("path"),os=require("os"),crypto=require("crypto"),multer=require_multer(),{UAParser}=require_ua_parser(),colors=require_safe(),portfinder=require_portfinder(),{exec}=require("child_process"),{dateFormat,logger,getServerHost,getServerUrls,hostAllowlistMiddleware,getDirectoryHiddenNames,normalizeRemoteAddress,openPathInFileManager}=require_utils4(),{getPackageVersion}=require_packageInfo(),{ArchiveService}=require_archiveService(),{shouldExitImmediatelyOnShutdown}=require_processShutdown(),app=express(),log=logger(process.env.SILENT),argv=JSON.parse(process.env.ARGV),explorerRoot=path.resolve(process.env.EXPLORER_DIRECTORY||process.cwd()),explorerRootRealPath=realpathSync(explorerRoot),explorerRootId=crypto.createHash("sha256").update(explorerRootRealPath).digest("hex"),port=argv.p||argv.port,isEditMode=process.env.EXPLORER_EDIT==="true",explorerPassword=process.env.EXPLORER_AUTH||"",isAuthEnabled=!!explorerPassword,osHiddenEnabled=process.env.OS_HIDDEN_ENABLED==="true"||process.env.OS_HIDDEN_ENABLED==="1",visitorKeys=new Set,httpServer=null,shuttingDown=!1,MAX_UPLOAD_FILE_SIZE=2*1024*1024*1024,MAX_UPLOAD_TOTAL_SIZE=2*1024*1024*1024,MAX_UPLOAD_FILE_COUNT=100,MAX_MULTIPART_OVERHEAD_SIZE=2*1024*1024,upload=multer({dest:path.join(os.tmpdir(),"mock-service-cli-upload"),preservePath:!0,limits:{fileSize:MAX_UPLOAD_FILE_SIZE,files:MAX_UPLOAD_FILE_COUNT,fields:10}}),archiveService=new ArchiveService({rootPath:explorerRootRealPath,resolvePath:resolveExplorerPath,getChildPath});function isPathInsideRoot(fullPath,resolvedRoot=explorerRootRealPath){let relativePath=path.relative(resolvedRoot,fullPath);return relativePath===""||!relativePath.startsWith("..")&&!path.isAbsolute(relativePath)}function normalizeExplorerInputPath(inputPath){let decodedPath=decodeURIComponent(String(inputPath||"/")).replace(/\\/g,"/");return!decodedPath||decodedPath==="."?"/":decodedPath.startsWith("/")?decodedPath:`/${decodedPath}`}function resolveExplorerPath(inputPath){let relativePath=normalizeExplorerInputPath(inputPath).replace(/^\/+/,""),fullPath=path.resolve(explorerRoot,relativePath);if(!isPathInsideRoot(fullPath,explorerRoot)){let error=new Error("Access denied");throw error.statusCode=403,error}if(!existsSync(fullPath))return fullPath;let realPath=realpathSync(fullPath);if(!isPathInsideRoot(realPath)){let error=new Error("Access denied");throw error.statusCode=403,error}return realPath}function validateEntryName(name){if(typeof name!="string")return"Name must be a string";let normalizedName=name.trim();if(!normalizedName||normalizedName==="."||normalizedName==="..")return"Invalid name";if(/[/\\\0<>:"|?*]/.test(normalizedName))return"Name contains invalid characters";if(process.platform==="win32"){let upperName=normalizedName.replace(/[. ]+$/g,"").split(".")[0].toUpperCase();if(new Set(["CON","PRN","AUX","NUL","COM1","COM2","COM3","COM4","COM5","COM6","COM7","COM8","COM9","LPT1","LPT2","LPT3","LPT4","LPT5","LPT6","LPT7","LPT8","LPT9"]).has(upperName)||normalizedName.endsWith(" ")||normalizedName.endsWith("."))return"Name is not supported on Windows"}return null}function getChildPath(parentPath,name){let nameError=validateEntryName(name);if(nameError){let error=new Error(nameError);throw error.statusCode=400,error}let parentFullPath=resolveExplorerPath(parentPath||"/");if(!existsSync(parentFullPath)||!statSync(parentFullPath).isDirectory()){let error=new Error("Parent directory not found");throw error.statusCode=404,error}let childPath=path.resolve(parentFullPath,name.trim());if(!isPathInsideRoot(childPath)){let error=new Error("Access denied");throw error.statusCode=403,error}return childPath}function requireEditMode(req,res,next){if(!isEditMode)return res.status(403).json({error:"File explorer is read-only. Restart with --edit to modify files."});next()}function isValidExplorerPassword(value){if(!isAuthEnabled)return!0;let provided=Buffer.from(String(value||"")),expected=Buffer.from(explorerPassword);return provided.length===expected.length&&crypto.timingSafeEqual(provided,expected)}function getExplorerPassword(req){return req.get("x-file-explorer-password")||req.body&&req.body.password}function requireExplorerAuth(req,res,next){if(!isValidExplorerPassword(getExplorerPassword(req)))return res.status(401).json({error:"Authentication required"});next()}function logExplorerVisit(req){let userAgent=req.get("user-agent")||"",ip=normalizeRemoteAddress(req.socket&&req.socket.remoteAddress),visitorKey=`${ip}
|
|
309
|
-
${userAgent}`;if(visitorKeys.has(visitorKey))return;visitorKeys.add(visitorKey);let parsed=new UAParser(userAgent).getResult(),browser=[parsed.browser.name,parsed.browser.version].filter(Boolean).join(" ")||"Unknown",operatingSystem=[parsed.os.name,parsed.os.version].filter(Boolean).join(" ")||"Unknown";log.info(`File explorer visitor: ip=${ip}, os=${operatingSystem}, browser=${browser}, userAgent=${userAgent}`)}function getUploadTargetPath(parentPath,originalName){let normalizedName=String(originalName||"").replace(/\\/g,"/").replace(/^\/+/,""),parts=normalizedName.split("/").filter(Boolean);if(parts.length===0||normalizedName!==parts.join("/")){let error=new Error("Invalid upload path");throw error.statusCode=400,error}parts.forEach(part=>{let nameError=validateEntryName(part);if(nameError){let error=new Error(nameError);throw error.statusCode=400,error}});let parentFullPath=resolveExplorerPath(parentPath||"/");if(!existsSync(parentFullPath)||!statSync(parentFullPath).isDirectory()){let error=new Error("Parent directory not found");throw error.statusCode=404,error}let targetPath=path.resolve(parentFullPath,...parts);if(!isPathInsideRoot(targetPath)){let error=new Error("Access denied");throw error.statusCode=403,error}return{targetPath,parentFullPath,parts}}function ensureUploadParent(parentFullPath,parts){let current=parentFullPath;parts.slice(0,-1).forEach(part=>{if(current=path.join(current,part),existsSync(current)){let stats=lstatSync(current);if(!stats.isDirectory()||stats.isSymbolicLink()||!isPathInsideRoot(realpathSync(current))){let error=new Error("Upload path is not a safe directory");throw error.statusCode=403,error}}else mkdirSync(current)})}function moveUploadedFile(sourcePath,targetPath){copyFileSync(sourcePath,targetPath,fsConstants.COPYFILE_EXCL),unlinkSync(sourcePath)}function cleanupUploadedTempFiles(files=[]){files.forEach(file=>{file&&file.path&&existsSync(file.path)&&rmSync(file.path,{force:!0})})}function enforceUploadRequestSize(req,res,next){let contentLength=Number(req.get("content-length"));if(Number.isFinite(contentLength)&&contentLength>MAX_UPLOAD_TOTAL_SIZE+MAX_MULTIPART_OVERHEAD_SIZE)return res.status(413).json({error:"Total upload size exceeds 2GB limit"});next()}function deleteExplorerPath(targetPath){let fullPath=resolveExplorerPath(targetPath);if(path.resolve(fullPath)===explorerRootRealPath){let error=new Error("Cannot delete explorer root");throw error.statusCode=400,error}if(!existsSync(fullPath)){let error=new Error("Path not found");throw error.statusCode=404,error}rmSync(fullPath,{recursive:!0,force:!1})}process.env.PORT?init():(portfinder.basePort=port||8090,portfinder.getPort(function(err,foundPort){if(err)throw err;process.env.PORT=foundPort,init()}));function init(){app.use(hostAllowlistMiddleware()),app.use(express.json());let faviconInstanceId=crypto.randomUUID(),explorerFaviconUrl=`/favicon-file-explorer.svg?instance=${faviconInstanceId}`,loginFaviconUrl=`/favicon-file-explorer-login.svg?instance=${faviconInstanceId}`,sendFavicon=(filename,res)=>{res.type("image/svg+xml").set("Cache-Control","no-store").sendFile(path.resolve(__dirname,filename))},sendExplorerPage=(filename,faviconUrl,res)=>{let htmlPath=path.resolve(__dirname,filename);if(!existsSync(htmlPath))return res.status(404).send("File explorer page not found");res.type("html").send(readFileSync(htmlPath,"utf8").replace("__FILE_EXPLORER_FAVICON_URL__",faviconUrl))};app.get("/favicon-file-explorer.svg",(req,res)=>sendFavicon("./favicon-file-explorer.svg",res)),app.get("/favicon-file-explorer-login.svg",(req,res)=>sendFavicon("./favicon-file-explorer-login.svg",res)),app.get("/",(req,res)=>sendExplorerPage("./file-explorer.html",explorerFaviconUrl,res)),app.get("/__login",(req,res)=>sendExplorerPage("./file-explorer-login.html",loginFaviconUrl,res)),app.post("/__api/auth/verify",(req,res)=>{if(!isValidExplorerPassword(getExplorerPassword(req)))return res.status(401).json({error:"Invalid password"});res.json({success:!0,authEnabled:isAuthEnabled})}),app.use("/__api",requireExplorerAuth),app.get("/__api/config",(req,res)=>{logExplorerVisit(req),res.json({editMode:isEditMode,authEnabled:isAuthEnabled,rootId:explorerRootId})}),app.get("/__api/archive/capabilities",requireEditMode,(req,res)=>{res.json(archiveService.getCapabilities())}),app.get("/__api/health",(req,res)=>{res.json({success:!0})}),app.get("/__api/list",async(req,res)=>{let dirPath=normalizeExplorerInputPath(req.query.path||"/"),fullPath;try{fullPath=resolveExplorerPath(dirPath)}catch(error){return res.status(error.statusCode||500).json({error:error.message})}if(!existsSync(fullPath))return res.status(404).json({error:"Path not found"});try{if(!(await fsPromises.lstat(fullPath)).isDirectory())return res.status(400).json({error:"Not a directory"});let files=await fsPromises.readdir(fullPath,{withFileTypes:!0}),hiddenNames=await getDirectoryHiddenNames(fullPath,files.map(file=>file.name),{osHidden:osHiddenEnabled}),result=await Promise.all(files.map(async file=>{let filePath=path.join(fullPath,file.name),fileStats,hasError=!1;try{fileStats=await fsPromises.lstat(filePath)}catch{hasError=!0}let relativePath=path.posix.join(dirPath,file.name),isDirectory=hasError?file.isDirectory():fileStats.isDirectory();return{name:file.name,path:relativePath.replace(/\\/g,"/"),isDirectory,size:hasError?0:fileStats.size,mtime:hasError?new Date:fileStats.mtime,birthtime:hasError?new Date:fileStats.birthtime,isHidden:hiddenNames.has(file.name),error:hasError?"Cannot access file":null}}));result.sort((a,b)=>a.isDirectory!==b.isDirectory?a.isDirectory?-1:1:a.name.localeCompare(b.name)),res.json({currentPath:dirPath,parentPath:dirPath==="/"?null:path.posix.dirname(dirPath),files:result})}catch(error){res.status(500).json({error:error.message})}}),app.get("/__api/file",(req,res)=>{let filePath=normalizeExplorerInputPath(req.query.path||"/"),fullPath;try{fullPath=resolveExplorerPath(filePath)}catch(error){return res.status(error.statusCode||500).json({error:error.message})}if(!existsSync(fullPath))return res.status(404).json({error:"File not found"});let stats=statSync(fullPath);if(stats.isDirectory())return res.status(400).json({error:"Is a directory"});if(req.query.download==="1")return res.download(fullPath,path.basename(filePath));let ext=path.extname(filePath).toLowerCase(),imageExts=[".jpg",".jpeg",".png",".gif",".bmp",".webp",".svg",".ico"],textExts=[".txt",".json",".js",".css",".html",".xml",".md",".csv",".yaml",".yml",".log"];if(imageExts.includes(ext))res.sendFile(fullPath);else if(textExts.includes(ext)||stats.size<1024*1024)try{let content=readFileSync(fullPath,"utf-8");res.json({name:path.basename(filePath),type:"text",content,size:stats.size})}catch{res.download(fullPath)}else res.download(fullPath)}),app.post("/__api/open-in-explorer",async(req,res)=>{let filePath=normalizeExplorerInputPath(req.body.path||"/"),fullPath;try{fullPath=resolveExplorerPath(filePath)}catch(error){return res.status(error.statusCode||500).json({error:error.message})}if(!existsSync(fullPath))return res.status(404).json({error:"Path not found"});let result=await openPathInFileManager(fullPath);if(!result.ok)return result.unsupported?res.status(400).json({error:"Unsupported platform"}):(console.error(colors.red(`Failed to open in explorer: ${result.error.message}`)),res.status(500).json({error:"Failed to open in explorer"}));res.json({success:!0,path:fullPath})}),app.post("/__api/path",requireEditMode,(req,res)=>{let parentPath=req.body&&req.body.parentPath||"/",name=req.body&&req.body.name,type=req.body&&req.body.type||"file";if(type!=="file"&&type!=="directory")return res.status(400).json({error:"Invalid type"});let fullPath;try{fullPath=getChildPath(parentPath,name)}catch(error){return res.status(error.statusCode||500).json({error:error.message})}if(existsSync(fullPath))return res.status(409).json({error:"Path already exists"});try{type==="directory"?mkdirSync(fullPath):writeFileSync(fullPath,""),res.json({success:!0,path:fullPath})}catch(error){console.error(colors.red(`Failed to create path: ${error.message}`)),res.status(500).json({error:"Failed to create path"})}}),app.patch("/__api/path",requireEditMode,(req,res)=>{let sourcePath=req.body&&req.body.path,name=req.body&&req.body.name,fullPath,nextPath;try{if(fullPath=resolveExplorerPath(sourcePath),path.resolve(fullPath)===explorerRootRealPath)return res.status(400).json({error:"Cannot rename explorer root"});if(!existsSync(fullPath))return res.status(404).json({error:"Path not found"});nextPath=getChildPath(path.posix.dirname(normalizeExplorerInputPath(sourcePath||"/")),name)}catch(error){return res.status(error.statusCode||500).json({error:error.message})}if(existsSync(nextPath))return res.status(409).json({error:"Path already exists"});try{renameSync(fullPath,nextPath),res.json({success:!0,path:sourcePath,nextPath})}catch(error){console.error(colors.red(`Failed to rename path: ${error.message}`)),res.status(500).json({error:"Failed to rename path"})}}),app.delete("/__api/path",requireEditMode,(req,res)=>{let targetPath=req.body&&req.body.path||"/";try{deleteExplorerPath(targetPath),res.json({success:!0,path:targetPath})}catch(error){console.error(colors.red(`Failed to delete path: ${error.message}`)),res.status(error.statusCode||500).json({error:error.statusCode?error.message:"Failed to delete path"})}}),app.delete("/__api/paths",requireEditMode,(req,res)=>{let paths=req.body&&req.body.paths||[];if(!Array.isArray(paths)||paths.length===0)return res.status(400).json({error:"Paths must be a non-empty array"});let deleted=[];try{paths.forEach(targetPath=>{deleteExplorerPath(targetPath),deleted.push(targetPath)}),res.json({success:!0,deleted})}catch(error){console.error(colors.red(`Failed to delete paths: ${error.message}`)),res.status(error.statusCode||500).json({error:error.statusCode?error.message:"Failed to delete paths",deleted})}}),app.post("/__api/upload",requireEditMode,enforceUploadRequestSize,upload.any(),(req,res)=>{let parentPath=req.body&&req.body.parentPath||"/",files=req.files||[];if(!files.length)return res.status(400).json({error:"No files uploaded"});if(files.reduce((sum,file)=>sum+file.size,0)>MAX_UPLOAD_TOTAL_SIZE)return cleanupUploadedTempFiles(files),res.status(413).json({error:"Total upload size exceeds 2GB limit"});let uploaded=[],failed=[];files.forEach(file=>{try{let{targetPath,parentFullPath,parts}=getUploadTargetPath(parentPath,file.originalname);if(existsSync(targetPath)){failed.push({name:file.originalname,error:"Path already exists",statusCode:409});return}if(ensureUploadParent(parentFullPath,parts),existsSync(targetPath)){failed.push({name:file.originalname,error:"Path already exists",statusCode:409});return}moveUploadedFile(file.path,targetPath),uploaded.push({name:file.originalname,path:path.posix.join(normalizeExplorerInputPath(parentPath),...parts)})}catch(error){failed.push({name:file.originalname,error:error.message,statusCode:error.statusCode||500})}finally{existsSync(file.path)&&rmSync(file.path,{force:!0})}}),res.status(failed.length?207:200).json({success:failed.length===0,uploaded,failed})}),app.get("/__api/archive/preview",requireEditMode,async(req,res)=>{try{let preview=await archiveService.listArchive(normalizeExplorerInputPath(req.query.path||"/"));res.json(preview)}catch(error){res.status(error.statusCode||500).json({error:error.message})}}),app.post("/__api/archive/jobs",requireEditMode,(req,res)=>{let payload=req.body||{},operation=payload.operation;if(operation!=="create"&&operation!=="extract")return res.status(400).json({error:"Archive operation must be create or extract"});try{let job=archiveService.startJob(operation,payload);res.status(202).json({id:job.id,status:job.status,type:job.type})}catch(error){res.status(error.statusCode||500).json({error:error.message})}}),app.get("/__api/archive/jobs/:id",requireEditMode,(req,res)=>{let job=archiveService.getJob(req.params.id);if(!job)return res.status(404).json({error:"Archive job not found"});res.json({id:job.id,type:job.type,status:job.status,progress:job.progress,result:job.result,error:job.error,createdAt:job.createdAt,finishedAt:job.finishedAt||null})}),app.delete("/__api/archive/jobs/:id",requireEditMode,(req,res)=>{try{let job=archiveService.cancelJob(req.params.id);res.json({id:job.id,status:job.status})}catch(error){res.status(error.statusCode||500).json({error:error.message})}}),app.use((error,req,res,next)=>{if(error instanceof multer.MulterError){cleanupUploadedTempFiles(req.files);let statusCode=error.code==="LIMIT_FILE_SIZE"||error.code==="LIMIT_FILE_COUNT"?413:400;return res.status(statusCode).json({error:error.message})}if(error)return console.error(colors.red(`File explorer request failed: ${error.message}`)),res.status(error.statusCode||500).json({error:error.message||"Request failed"});next()}),startServer()}function startServer(){httpServer=require("http").createServer(app),httpServer.requestTimeout=0,httpServer.listen(Number.parseInt(process.env.PORT,10),getServerHost(),()=>{if(console.info([colors.yellow(`
|
|
308
|
+
--${boundary}`,ssCb),this._writecb=null,this._finalcb=null,this.write(BUF_CRLF)}static detect(conType){return conType.type==="multipart"&&conType.subtype==="form-data"}_write(chunk,enc,cb){this._writecb=cb,this._bparser.push(chunk,0),this._writecb&&callAndUnsetCb(this)}_destroy(err,cb){this._hparser=null,this._bparser=ignoreData,err||(err=checkEndState(this));let fileStream=this._fileStream;fileStream&&(this._fileStream=null,fileStream.destroy(err)),cb(err)}_final(cb){if(this._bparser.destroy(),!this._complete)return cb(new Error("Unexpected end of form"));this._fileEndsLeft?this._finalcb=finalcb.bind(null,this,cb):finalcb(this,cb)}};function finalcb(self2,cb,err){if(err)return cb(err);err=checkEndState(self2),cb(err)}function checkEndState(self2){if(self2._hparser)return new Error("Malformed part header");let fileStream=self2._fileStream;if(fileStream&&(self2._fileStream=null,fileStream.destroy(new Error("Unexpected end of file"))),!self2._complete)return new Error("Unexpected end of form")}var TOKEN=[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,1,1,1,1,1,0,0,1,1,0,1,1,0,1,1,1,1,1,1,1,1,1,1,0,0,0,0,0,0,0,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,0,0,0,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,0,1,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],FIELD_VCHAR=[0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,0,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1];module2.exports=Multipart}});var require_urlencoded2=__commonJS({"node_modules/busboy/lib/types/urlencoded.js"(exports2,module2){"use strict";var{Writable}=require("stream"),{getDecoder}=require_utils9(),URLEncoded=class extends Writable{constructor(cfg){let streamOpts={autoDestroy:!0,emitClose:!0,highWaterMark:typeof cfg.highWaterMark=="number"?cfg.highWaterMark:void 0};super(streamOpts);let charset=cfg.defCharset||"utf8";cfg.conType.params&&typeof cfg.conType.params.charset=="string"&&(charset=cfg.conType.params.charset),this.charset=charset;let limits=cfg.limits;this.fieldSizeLimit=limits&&typeof limits.fieldSize=="number"?limits.fieldSize:1*1024*1024,this.fieldsLimit=limits&&typeof limits.fields=="number"?limits.fields:1/0,this.fieldNameSizeLimit=limits&&typeof limits.fieldNameSize=="number"?limits.fieldNameSize:100,this._inKey=!0,this._keyTrunc=!1,this._valTrunc=!1,this._bytesKey=0,this._bytesVal=0,this._fields=0,this._key="",this._val="",this._byte=-2,this._lastPos=0,this._encode=0,this._decoder=getDecoder(charset)}static detect(conType){return conType.type==="application"&&conType.subtype==="x-www-form-urlencoded"}_write(chunk,enc,cb){if(this._fields>=this.fieldsLimit)return cb();let i=0,len=chunk.length;if(this._lastPos=0,this._byte!==-2){if(i=readPctEnc(this,chunk,i,len),i===-1)return cb(new Error("Malformed urlencoded form"));if(i>=len)return cb();this._inKey?++this._bytesKey:++this._bytesVal}main:for(;i<len;)if(this._inKey){for(i=skipKeyBytes(this,chunk,i,len);i<len;){switch(chunk[i]){case 61:this._lastPos<i&&(this._key+=chunk.latin1Slice(this._lastPos,i)),this._lastPos=++i,this._key=this._decoder(this._key,this._encode),this._encode=0,this._inKey=!1;continue main;case 38:if(this._lastPos<i&&(this._key+=chunk.latin1Slice(this._lastPos,i)),this._lastPos=++i,this._key=this._decoder(this._key,this._encode),this._encode=0,this._bytesKey>0&&this.emit("field",this._key,"",{nameTruncated:this._keyTrunc,valueTruncated:!1,encoding:this.charset,mimeType:"text/plain"}),this._key="",this._val="",this._keyTrunc=!1,this._valTrunc=!1,this._bytesKey=0,this._bytesVal=0,++this._fields>=this.fieldsLimit)return this.emit("fieldsLimit"),cb();continue;case 43:this._lastPos<i&&(this._key+=chunk.latin1Slice(this._lastPos,i)),this._key+=" ",this._lastPos=i+1;break;case 37:if(this._encode===0&&(this._encode=1),this._lastPos<i&&(this._key+=chunk.latin1Slice(this._lastPos,i)),this._lastPos=i+1,this._byte=-1,i=readPctEnc(this,chunk,i+1,len),i===-1)return cb(new Error("Malformed urlencoded form"));if(i>=len)return cb();++this._bytesKey,i=skipKeyBytes(this,chunk,i,len);continue}++i,++this._bytesKey,i=skipKeyBytes(this,chunk,i,len)}this._lastPos<i&&(this._key+=chunk.latin1Slice(this._lastPos,i))}else{for(i=skipValBytes(this,chunk,i,len);i<len;){switch(chunk[i]){case 38:if(this._lastPos<i&&(this._val+=chunk.latin1Slice(this._lastPos,i)),this._lastPos=++i,this._inKey=!0,this._val=this._decoder(this._val,this._encode),this._encode=0,(this._bytesKey>0||this._bytesVal>0)&&this.emit("field",this._key,this._val,{nameTruncated:this._keyTrunc,valueTruncated:this._valTrunc,encoding:this.charset,mimeType:"text/plain"}),this._key="",this._val="",this._keyTrunc=!1,this._valTrunc=!1,this._bytesKey=0,this._bytesVal=0,++this._fields>=this.fieldsLimit)return this.emit("fieldsLimit"),cb();continue main;case 43:this._lastPos<i&&(this._val+=chunk.latin1Slice(this._lastPos,i)),this._val+=" ",this._lastPos=i+1;break;case 37:if(this._encode===0&&(this._encode=1),this._lastPos<i&&(this._val+=chunk.latin1Slice(this._lastPos,i)),this._lastPos=i+1,this._byte=-1,i=readPctEnc(this,chunk,i+1,len),i===-1)return cb(new Error("Malformed urlencoded form"));if(i>=len)return cb();++this._bytesVal,i=skipValBytes(this,chunk,i,len);continue}++i,++this._bytesVal,i=skipValBytes(this,chunk,i,len)}this._lastPos<i&&(this._val+=chunk.latin1Slice(this._lastPos,i))}cb()}_final(cb){if(this._byte!==-2)return cb(new Error("Malformed urlencoded form"));(!this._inKey||this._bytesKey>0||this._bytesVal>0)&&(this._inKey?this._key=this._decoder(this._key,this._encode):this._val=this._decoder(this._val,this._encode),this.emit("field",this._key,this._val,{nameTruncated:this._keyTrunc,valueTruncated:this._valTrunc,encoding:this.charset,mimeType:"text/plain"})),cb()}};function readPctEnc(self2,chunk,pos,len){if(pos>=len)return len;if(self2._byte===-1){let hexUpper=HEX_VALUES[chunk[pos++]];if(hexUpper===-1)return-1;if(hexUpper>=8&&(self2._encode=2),pos<len){let hexLower=HEX_VALUES[chunk[pos++]];if(hexLower===-1)return-1;self2._inKey?self2._key+=String.fromCharCode((hexUpper<<4)+hexLower):self2._val+=String.fromCharCode((hexUpper<<4)+hexLower),self2._byte=-2,self2._lastPos=pos}else self2._byte=hexUpper}else{let hexLower=HEX_VALUES[chunk[pos++]];if(hexLower===-1)return-1;self2._inKey?self2._key+=String.fromCharCode((self2._byte<<4)+hexLower):self2._val+=String.fromCharCode((self2._byte<<4)+hexLower),self2._byte=-2,self2._lastPos=pos}return pos}function skipKeyBytes(self2,chunk,pos,len){if(self2._bytesKey>self2.fieldNameSizeLimit){for(self2._keyTrunc||self2._lastPos<pos&&(self2._key+=chunk.latin1Slice(self2._lastPos,pos-1)),self2._keyTrunc=!0;pos<len;++pos){let code=chunk[pos];if(code===61||code===38)break;++self2._bytesKey}self2._lastPos=pos}return pos}function skipValBytes(self2,chunk,pos,len){if(self2._bytesVal>self2.fieldSizeLimit){for(self2._valTrunc||self2._lastPos<pos&&(self2._val+=chunk.latin1Slice(self2._lastPos,pos-1)),self2._valTrunc=!0;pos<len&&chunk[pos]!==38;++pos)++self2._bytesVal;self2._lastPos=pos}return pos}var HEX_VALUES=[-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,0,1,2,3,4,5,6,7,8,9,-1,-1,-1,-1,-1,-1,-1,10,11,12,13,14,15,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,10,11,12,13,14,15,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1];module2.exports=URLEncoded}});var require_lib5=__commonJS({"node_modules/busboy/lib/index.js"(exports2,module2){"use strict";var{parseContentType}=require_utils9();function getInstance(cfg){let headers=cfg.headers,conType=parseContentType(headers["content-type"]);if(!conType)throw new Error("Malformed content type");for(let type of TYPES){if(!type.detect(conType))continue;let instanceCfg={limits:cfg.limits,headers,conType,highWaterMark:void 0,fileHwm:void 0,defCharset:void 0,defParamCharset:void 0,preservePath:!1};return cfg.highWaterMark&&(instanceCfg.highWaterMark=cfg.highWaterMark),cfg.fileHwm&&(instanceCfg.fileHwm=cfg.fileHwm),instanceCfg.defCharset=cfg.defCharset,instanceCfg.defParamCharset=cfg.defParamCharset,instanceCfg.preservePath=cfg.preservePath,new type(instanceCfg)}throw new Error(`Unsupported content type: ${headers["content-type"]}`)}var TYPES=[require_multipart(),require_urlencoded2()].filter(function(typemod){return typeof typemod.detect=="function"});module2.exports=cfg=>{if((typeof cfg!="object"||cfg===null)&&(cfg={}),typeof cfg.headers!="object"||cfg.headers===null||typeof cfg.headers["content-type"]!="string")throw new Error("Missing Content-Type");return getInstance(cfg)}}});var require_parse_path=__commonJS({"node_modules/append-field/lib/parse-path.js"(exports2,module2){var reFirstKey=/^[^\[]*/,reDigitPath=/^\[(\d+)\]/,reNormalPath=/^\[([^\]]+)\]/;function parsePath(key){function failure(){return[{type:"object",key,last:!0}]}var firstKey=reFirstKey.exec(key)[0];if(!firstKey)return failure();for(var len=key.length,pos=firstKey.length,tail={type:"object",key:firstKey},steps=[tail];pos<len;){var m;if(key[pos]==="["&&key[pos+1]==="]"){if(pos+=2,tail.append=!0,pos!==len)return failure();continue}if(m=reDigitPath.exec(key.substring(pos)),m!==null){pos+=m[0].length,tail.nextType="array",tail={type:"array",key:parseInt(m[1],10)},steps.push(tail);continue}if(m=reNormalPath.exec(key.substring(pos)),m!==null){pos+=m[0].length,tail.nextType="object",tail={type:"object",key:m[1]},steps.push(tail);continue}return failure()}return tail.last=!0,steps}module2.exports=parsePath}});var require_set_value=__commonJS({"node_modules/append-field/lib/set-value.js"(exports2,module2){function valueType(value){return value===void 0?"undefined":Array.isArray(value)?"array":typeof value=="object"?"object":"scalar"}function setLastValue(context,step,currentValue,entryValue){switch(valueType(currentValue)){case"undefined":step.append?context[step.key]=[entryValue]:context[step.key]=entryValue;break;case"array":context[step.key].push(entryValue);break;case"object":return setLastValue(currentValue,{type:"object",key:"",last:!0},currentValue[""],entryValue);case"scalar":context[step.key]=[context[step.key],entryValue];break}return context}function setValue(context,step,currentValue,entryValue){if(step.last)return setLastValue(context,step,currentValue,entryValue);var obj;switch(valueType(currentValue)){case"undefined":return step.nextType==="array"?context[step.key]=[]:context[step.key]=Object.create(null),context[step.key];case"object":return context[step.key];case"array":return step.nextType==="array"?currentValue:(obj=Object.create(null),context[step.key]=obj,currentValue.forEach(function(item,i){item!==void 0&&(obj[""+i]=item)}),obj);case"scalar":return obj=Object.create(null),obj[""]=currentValue,context[step.key]=obj,obj}}module2.exports=setValue}});var require_append_field=__commonJS({"node_modules/append-field/index.js"(exports2,module2){var parsePath=require_parse_path(),setValue=require_set_value();function appendField(store,key,value){var steps=parsePath(key);steps.reduce(function(context,step){return setValue(context,step,context[step.key],value)},store)}module2.exports=appendField}});var require_counter=__commonJS({"node_modules/multer/lib/counter.js"(exports2,module2){var EventEmitter=require("events").EventEmitter;function Counter(){EventEmitter.call(this),this.value=0}Counter.prototype=Object.create(EventEmitter.prototype);Counter.prototype.increment=function(){this.value++};Counter.prototype.decrement=function(){--this.value===0&&this.emit("zero")};Counter.prototype.isZero=function(){return this.value===0};Counter.prototype.onceZero=function(fn){if(this.isZero())return fn();this.once("zero",fn)};module2.exports=Counter}});var require_multer_error=__commonJS({"node_modules/multer/lib/multer-error.js"(exports2,module2){var util=require("util"),errorMessages={LIMIT_PART_COUNT:"Too many parts",LIMIT_FILE_SIZE:"File too large",LIMIT_FILE_COUNT:"Too many files",LIMIT_FIELD_KEY:"Field name too long",LIMIT_FIELD_VALUE:"Field value too long",LIMIT_FIELD_COUNT:"Too many fields",LIMIT_UNEXPECTED_FILE:"Unexpected field",MISSING_FIELD_NAME:"Field name missing",LIMIT_FIELD_NESTING:"Field name nesting too deep"};function MulterError(code,field){Error.captureStackTrace(this,this.constructor),this.name=this.constructor.name,this.message=errorMessages[code],this.code=code,field&&(this.field=field)}util.inherits(MulterError,Error);module2.exports=MulterError}});var require_file_appender=__commonJS({"node_modules/multer/lib/file-appender.js"(exports2,module2){function arrayRemove(arr,item){var idx=arr.indexOf(item);~idx&&arr.splice(idx,1)}function FileAppender(strategy,req){switch(this.strategy=strategy,this.req=req,strategy){case"NONE":break;case"VALUE":break;case"ARRAY":req.files=[];break;case"OBJECT":req.files=Object.create(null);break;default:throw new Error("Unknown file strategy: "+strategy)}}FileAppender.prototype.insertPlaceholder=function(file){var placeholder={fieldname:file.fieldname};switch(this.strategy){case"NONE":break;case"VALUE":break;case"ARRAY":this.req.files.push(placeholder);break;case"OBJECT":this.req.files[file.fieldname]?this.req.files[file.fieldname].push(placeholder):this.req.files[file.fieldname]=[placeholder];break}return placeholder};FileAppender.prototype.removePlaceholder=function(placeholder){switch(this.strategy){case"NONE":break;case"VALUE":break;case"ARRAY":arrayRemove(this.req.files,placeholder);break;case"OBJECT":this.req.files[placeholder.fieldname].length===1?delete this.req.files[placeholder.fieldname]:arrayRemove(this.req.files[placeholder.fieldname],placeholder);break}};FileAppender.prototype.replacePlaceholder=function(placeholder,file){if(this.strategy==="VALUE"){this.req.file=file;return}delete placeholder.fieldname,Object.assign(placeholder,file)};module2.exports=FileAppender}});var require_remove_uploaded_files=__commonJS({"node_modules/multer/lib/remove-uploaded-files.js"(exports2,module2){function removeUploadedFiles(uploadedFiles,remove,cb){var length=uploadedFiles.length,errors=[];if(length===0)return cb(null,errors);function handleFile(idx){var file=uploadedFiles[idx];remove(file,function(err){err&&(err.file=file,err.field=file.fieldname,errors.push(err)),idx<length-1?setImmediate(function(){handleFile(idx+1)}):cb(null,errors)})}handleFile(0)}module2.exports=removeUploadedFiles}});var require_make_middleware=__commonJS({"node_modules/multer/lib/make-middleware.js"(exports2,module2){var is=require_type_is(),Busboy=require_lib5(),appendField=require_append_field(),Counter=require_counter(),MulterError=require_multer_error(),FileAppender=require_file_appender(),removeUploadedFiles=require_remove_uploaded_files();function drainStream(stream){stream.on("readable",()=>{for(;stream.read()!==null;);})}function makeMiddleware(setup){return function(req,res,next){if(!is(req,["multipart"]))return next();var options=setup(),limits=options.limits,storage=options.storage,fileFilter=options.fileFilter,fileStrategy=options.fileStrategy,preservePath=options.preservePath,defParamCharset=options.defParamCharset;req.body=Object.create(null);var busboy,appender=null,isDone=!1,readFinished=!1,errorOccured=!1,pendingWrites=new Counter,uploadedFiles=[],pendingFiles=[];function done(err){var called=!1;function onFinished(){called||(called=!0,next(err))}if(!isDone){if(isDone=!0,busboy&&(req.unpipe(busboy),setImmediate(()=>{busboy.removeAllListeners()})),drainStream(req),req.resume(),err&&req.readable&&!req.destroyed){req.once("end",onFinished),req.once("error",onFinished),req.once("close",onFinished);return}next(err)}}function indicateDone(){readFinished&&pendingWrites.isZero()&&!errorOccured&&done()}function abortWithError(uploadError,skipPendingWait){if(errorOccured)return;errorOccured=!0;function finishAbort(){function remove(file,cb){storage._removeFile(req,file,cb)}var filesToRemove=uploadedFiles.concat(pendingFiles.filter(function(f){return f.path}));pendingFiles=[],removeUploadedFiles(filesToRemove,remove,function(err,storageErrors){if(err)return done(err);uploadError.storageErrors=storageErrors,done(uploadError)})}skipPendingWait?finishAbort():pendingWrites.onceZero(finishAbort)}function abortWithCode(code,optionalField){abortWithError(new MulterError(code,optionalField))}function handleRequestFailure(err){isDone||(busboy&&(req.unpipe(busboy),busboy.destroy(err)),abortWithError(err,!0))}req.on("error",function(err){handleRequestFailure(err||new Error("Request error"))}),req.on("aborted",function(){handleRequestFailure(new Error("Request aborted"))}),req.on("close",function(){req.readableEnded||handleRequestFailure(new Error("Request closed"))});try{busboy=Busboy({headers:req.headers,limits,preservePath,defParamCharset})}catch(err){return next(err)}appender=new FileAppender(fileStrategy,req),busboy.on("field",function(fieldname,value,{nameTruncated,valueTruncated}){if(fieldname==null)return abortWithCode("MISSING_FIELD_NAME");if(nameTruncated)return abortWithCode("LIMIT_FIELD_KEY");if(valueTruncated)return abortWithCode("LIMIT_FIELD_VALUE",fieldname);if(limits&&Object.prototype.hasOwnProperty.call(limits,"fieldNameSize")&&fieldname.length>limits.fieldNameSize)return abortWithCode("LIMIT_FIELD_KEY");if(limits&&Object.prototype.hasOwnProperty.call(limits,"fieldNestingDepth")&&fieldname.split("[").length-1>limits.fieldNestingDepth)return abortWithCode("LIMIT_FIELD_NESTING",fieldname);appendField(req.body,fieldname,value)}),busboy.on("file",function(fieldname,fileStream,{filename,encoding,mimeType}){var pendingWritesIncremented=!1;if(fileStream.on("error",function(err){pendingWritesIncremented&&pendingWrites.decrement(),abortWithError(err)}),fieldname==null)return abortWithCode("MISSING_FIELD_NAME");if(!filename)return fileStream.resume();if(limits&&Object.prototype.hasOwnProperty.call(limits,"fieldNameSize")&&fieldname.length>limits.fieldNameSize)return abortWithCode("LIMIT_FIELD_KEY");var file={fieldname,originalname:filename,encoding,mimetype:mimeType},placeholder=appender.insertPlaceholder(file);fileFilter(req,file,function(err,includeFile){if(errorOccured)return appender.removePlaceholder(placeholder),fileStream.resume();if(err)return appender.removePlaceholder(placeholder),abortWithError(err);if(!includeFile)return appender.removePlaceholder(placeholder),fileStream.resume();var aborting=!1;pendingWritesIncremented=!0,pendingWrites.increment(),Object.defineProperty(file,"stream",{configurable:!0,enumerable:!1,value:fileStream}),fileStream.on("limit",function(){aborting=!0,abortWithCode("LIMIT_FILE_SIZE",fieldname)}),pendingFiles.push(file),storage._handleFile(req,file,function(err2,info){var idx=pendingFiles.indexOf(file);if(idx!==-1&&pendingFiles.splice(idx,1),aborting)return appender.removePlaceholder(placeholder),uploadedFiles.push({...file,...info}),pendingWrites.decrement();if(err2)return appender.removePlaceholder(placeholder),pendingWrites.decrement(),abortWithError(err2);var fileInfo={...file,...info};appender.replacePlaceholder(placeholder,fileInfo),uploadedFiles.push(fileInfo),pendingWrites.decrement(),indicateDone()})})}),busboy.on("error",function(err){abortWithError(err)}),busboy.on("partsLimit",function(){abortWithCode("LIMIT_PART_COUNT")}),busboy.on("filesLimit",function(){abortWithCode("LIMIT_FILE_COUNT")}),busboy.on("fieldsLimit",function(){abortWithCode("LIMIT_FIELD_COUNT")}),busboy.on("close",function(){readFinished=!0,indicateDone()}),req.pipe(busboy)}}module2.exports=makeMiddleware}});var require_disk=__commonJS({"node_modules/multer/storage/disk.js"(exports2,module2){var fs=require("fs"),os=require("os"),path=require("path"),crypto=require("crypto");function getFilename(req,file,cb){crypto.randomBytes(16,function(err,raw){cb(err,err?void 0:raw.toString("hex"))})}function getDestination(req,file,cb){cb(null,os.tmpdir())}function DiskStorage(opts){this.getFilename=opts.filename||getFilename,typeof opts.destination=="string"?(fs.mkdirSync(opts.destination,{recursive:!0}),this.getDestination=function($0,$1,cb){cb(null,opts.destination)}):this.getDestination=opts.destination||getDestination}DiskStorage.prototype._handleFile=function(req,file,cb){var that=this;that.getDestination(req,file,function(err,destination){if(err)return cb(err);that.getFilename(req,file,function(err2,filename){if(err2)return cb(err2);var finalPath=path.join(destination,filename);if(!file.stream.destroyed){var outStream=fs.createWriteStream(finalPath);file.path=finalPath,file.stream.pipe(outStream),outStream.on("error",cb),outStream.on("finish",function(){cb(null,{destination,filename,path:finalPath,size:outStream.bytesWritten})})}})})};DiskStorage.prototype._removeFile=function(req,file,cb){var path2=file.path;delete file.destination,delete file.filename,delete file.path,fs.unlink(path2,cb)};module2.exports=function(opts){return new DiskStorage(opts)}}});var require_stream3=__commonJS({"node_modules/readable-stream/lib/internal/streams/stream.js"(exports2,module2){module2.exports=require("stream")}});var require_buffer_list=__commonJS({"node_modules/readable-stream/lib/internal/streams/buffer_list.js"(exports2,module2){"use strict";function ownKeys(object,enumerableOnly){var keys=Object.keys(object);if(Object.getOwnPropertySymbols){var symbols=Object.getOwnPropertySymbols(object);enumerableOnly&&(symbols=symbols.filter(function(sym){return Object.getOwnPropertyDescriptor(object,sym).enumerable})),keys.push.apply(keys,symbols)}return keys}function _objectSpread(target){for(var i=1;i<arguments.length;i++){var source=arguments[i]!=null?arguments[i]:{};i%2?ownKeys(Object(source),!0).forEach(function(key){_defineProperty(target,key,source[key])}):Object.getOwnPropertyDescriptors?Object.defineProperties(target,Object.getOwnPropertyDescriptors(source)):ownKeys(Object(source)).forEach(function(key){Object.defineProperty(target,key,Object.getOwnPropertyDescriptor(source,key))})}return target}function _defineProperty(obj,key,value){return key=_toPropertyKey(key),key in obj?Object.defineProperty(obj,key,{value,enumerable:!0,configurable:!0,writable:!0}):obj[key]=value,obj}function _classCallCheck(instance,Constructor){if(!(instance instanceof Constructor))throw new TypeError("Cannot call a class as a function")}function _defineProperties(target,props){for(var i=0;i<props.length;i++){var descriptor=props[i];descriptor.enumerable=descriptor.enumerable||!1,descriptor.configurable=!0,"value"in descriptor&&(descriptor.writable=!0),Object.defineProperty(target,_toPropertyKey(descriptor.key),descriptor)}}function _createClass(Constructor,protoProps,staticProps){return protoProps&&_defineProperties(Constructor.prototype,protoProps),staticProps&&_defineProperties(Constructor,staticProps),Object.defineProperty(Constructor,"prototype",{writable:!1}),Constructor}function _toPropertyKey(arg){var key=_toPrimitive(arg,"string");return typeof key=="symbol"?key:String(key)}function _toPrimitive(input,hint){if(typeof input!="object"||input===null)return input;var prim=input[Symbol.toPrimitive];if(prim!==void 0){var res=prim.call(input,hint||"default");if(typeof res!="object")return res;throw new TypeError("@@toPrimitive must return a primitive value.")}return(hint==="string"?String:Number)(input)}var _require=require("buffer"),Buffer2=_require.Buffer,_require2=require("util"),inspect=_require2.inspect,custom=inspect&&inspect.custom||"inspect";function copyBuffer(src,target,offset){Buffer2.prototype.copy.call(src,target,offset)}module2.exports=(function(){function BufferList(){_classCallCheck(this,BufferList),this.head=null,this.tail=null,this.length=0}return _createClass(BufferList,[{key:"push",value:function(v){var entry={data:v,next:null};this.length>0?this.tail.next=entry:this.head=entry,this.tail=entry,++this.length}},{key:"unshift",value:function(v){var entry={data:v,next:this.head};this.length===0&&(this.tail=entry),this.head=entry,++this.length}},{key:"shift",value:function(){if(this.length!==0){var ret=this.head.data;return this.length===1?this.head=this.tail=null:this.head=this.head.next,--this.length,ret}}},{key:"clear",value:function(){this.head=this.tail=null,this.length=0}},{key:"join",value:function(s){if(this.length===0)return"";for(var p=this.head,ret=""+p.data;p=p.next;)ret+=s+p.data;return ret}},{key:"concat",value:function(n){if(this.length===0)return Buffer2.alloc(0);for(var ret=Buffer2.allocUnsafe(n>>>0),p=this.head,i=0;p;)copyBuffer(p.data,ret,i),i+=p.data.length,p=p.next;return ret}},{key:"consume",value:function(n,hasStrings){var ret;return n<this.head.data.length?(ret=this.head.data.slice(0,n),this.head.data=this.head.data.slice(n)):n===this.head.data.length?ret=this.shift():ret=hasStrings?this._getString(n):this._getBuffer(n),ret}},{key:"first",value:function(){return this.head.data}},{key:"_getString",value:function(n){var p=this.head,c=1,ret=p.data;for(n-=ret.length;p=p.next;){var str=p.data,nb=n>str.length?str.length:n;if(nb===str.length?ret+=str:ret+=str.slice(0,n),n-=nb,n===0){nb===str.length?(++c,p.next?this.head=p.next:this.head=this.tail=null):(this.head=p,p.data=str.slice(nb));break}++c}return this.length-=c,ret}},{key:"_getBuffer",value:function(n){var ret=Buffer2.allocUnsafe(n),p=this.head,c=1;for(p.data.copy(ret),n-=p.data.length;p=p.next;){var buf=p.data,nb=n>buf.length?buf.length:n;if(buf.copy(ret,ret.length-n,0,nb),n-=nb,n===0){nb===buf.length?(++c,p.next?this.head=p.next:this.head=this.tail=null):(this.head=p,p.data=buf.slice(nb));break}++c}return this.length-=c,ret}},{key:custom,value:function(_,options){return inspect(this,_objectSpread(_objectSpread({},options),{},{depth:0,customInspect:!1}))}}]),BufferList})()}});var require_destroy2=__commonJS({"node_modules/readable-stream/lib/internal/streams/destroy.js"(exports2,module2){"use strict";function destroy(err,cb){var _this=this,readableDestroyed=this._readableState&&this._readableState.destroyed,writableDestroyed=this._writableState&&this._writableState.destroyed;return readableDestroyed||writableDestroyed?(cb?cb(err):err&&(this._writableState?this._writableState.errorEmitted||(this._writableState.errorEmitted=!0,process.nextTick(emitErrorNT,this,err)):process.nextTick(emitErrorNT,this,err)),this):(this._readableState&&(this._readableState.destroyed=!0),this._writableState&&(this._writableState.destroyed=!0),this._destroy(err||null,function(err2){!cb&&err2?_this._writableState?_this._writableState.errorEmitted?process.nextTick(emitCloseNT,_this):(_this._writableState.errorEmitted=!0,process.nextTick(emitErrorAndCloseNT,_this,err2)):process.nextTick(emitErrorAndCloseNT,_this,err2):cb?(process.nextTick(emitCloseNT,_this),cb(err2)):process.nextTick(emitCloseNT,_this)}),this)}function emitErrorAndCloseNT(self2,err){emitErrorNT(self2,err),emitCloseNT(self2)}function emitCloseNT(self2){self2._writableState&&!self2._writableState.emitClose||self2._readableState&&!self2._readableState.emitClose||self2.emit("close")}function undestroy(){this._readableState&&(this._readableState.destroyed=!1,this._readableState.reading=!1,this._readableState.ended=!1,this._readableState.endEmitted=!1),this._writableState&&(this._writableState.destroyed=!1,this._writableState.ended=!1,this._writableState.ending=!1,this._writableState.finalCalled=!1,this._writableState.prefinished=!1,this._writableState.finished=!1,this._writableState.errorEmitted=!1)}function emitErrorNT(self2,err){self2.emit("error",err)}function errorOrDestroy(stream,err){var rState=stream._readableState,wState=stream._writableState;rState&&rState.autoDestroy||wState&&wState.autoDestroy?stream.destroy(err):stream.emit("error",err)}module2.exports={destroy,undestroy,errorOrDestroy}}});var require_errors4=__commonJS({"node_modules/readable-stream/errors.js"(exports2,module2){"use strict";var codes={};function createErrorType(code,message,Base){Base||(Base=Error);function getMessage(arg1,arg2,arg3){return typeof message=="string"?message:message(arg1,arg2,arg3)}class NodeError extends Base{constructor(arg1,arg2,arg3){super(getMessage(arg1,arg2,arg3))}}NodeError.prototype.name=Base.name,NodeError.prototype.code=code,codes[code]=NodeError}function oneOf(expected,thing){if(Array.isArray(expected)){let len=expected.length;return expected=expected.map(i=>String(i)),len>2?`one of ${thing} ${expected.slice(0,len-1).join(", ")}, or `+expected[len-1]:len===2?`one of ${thing} ${expected[0]} or ${expected[1]}`:`of ${thing} ${expected[0]}`}else return`of ${thing} ${String(expected)}`}function startsWith(str,search,pos){return str.substr(!pos||pos<0?0:+pos,search.length)===search}function endsWith(str,search,this_len){return(this_len===void 0||this_len>str.length)&&(this_len=str.length),str.substring(this_len-search.length,this_len)===search}function includes(str,search,start){return typeof start!="number"&&(start=0),start+search.length>str.length?!1:str.indexOf(search,start)!==-1}createErrorType("ERR_INVALID_OPT_VALUE",function(name,value){return'The value "'+value+'" is invalid for option "'+name+'"'},TypeError);createErrorType("ERR_INVALID_ARG_TYPE",function(name,expected,actual){let determiner;typeof expected=="string"&&startsWith(expected,"not ")?(determiner="must not be",expected=expected.replace(/^not /,"")):determiner="must be";let msg;if(endsWith(name," argument"))msg=`The ${name} ${determiner} ${oneOf(expected,"type")}`;else{let type=includes(name,".")?"property":"argument";msg=`The "${name}" ${type} ${determiner} ${oneOf(expected,"type")}`}return msg+=`. Received type ${typeof actual}`,msg},TypeError);createErrorType("ERR_STREAM_PUSH_AFTER_EOF","stream.push() after EOF");createErrorType("ERR_METHOD_NOT_IMPLEMENTED",function(name){return"The "+name+" method is not implemented"});createErrorType("ERR_STREAM_PREMATURE_CLOSE","Premature close");createErrorType("ERR_STREAM_DESTROYED",function(name){return"Cannot call "+name+" after a stream was destroyed"});createErrorType("ERR_MULTIPLE_CALLBACK","Callback called multiple times");createErrorType("ERR_STREAM_CANNOT_PIPE","Cannot pipe, not readable");createErrorType("ERR_STREAM_WRITE_AFTER_END","write after end");createErrorType("ERR_STREAM_NULL_VALUES","May not write null values to stream",TypeError);createErrorType("ERR_UNKNOWN_ENCODING",function(arg){return"Unknown encoding: "+arg},TypeError);createErrorType("ERR_STREAM_UNSHIFT_AFTER_END_EVENT","stream.unshift() after end event");module2.exports.codes=codes}});var require_state=__commonJS({"node_modules/readable-stream/lib/internal/streams/state.js"(exports2,module2){"use strict";var ERR_INVALID_OPT_VALUE=require_errors4().codes.ERR_INVALID_OPT_VALUE;function highWaterMarkFrom(options,isDuplex,duplexKey){return options.highWaterMark!=null?options.highWaterMark:isDuplex?options[duplexKey]:null}function getHighWaterMark(state,options,duplexKey,isDuplex){var hwm=highWaterMarkFrom(options,isDuplex,duplexKey);if(hwm!=null){if(!(isFinite(hwm)&&Math.floor(hwm)===hwm)||hwm<0){var name=isDuplex?duplexKey:"highWaterMark";throw new ERR_INVALID_OPT_VALUE(name,hwm)}return Math.floor(hwm)}return state.objectMode?16:16*1024}module2.exports={getHighWaterMark}}});var require_node9=__commonJS({"node_modules/util-deprecate/node.js"(exports2,module2){module2.exports=require("util").deprecate}});var require_stream_writable=__commonJS({"node_modules/readable-stream/lib/_stream_writable.js"(exports2,module2){"use strict";module2.exports=Writable;function CorkedRequest(state){var _this=this;this.next=null,this.entry=null,this.finish=function(){onCorkedFinish(_this,state)}}var Duplex;Writable.WritableState=WritableState;var internalUtil={deprecate:require_node9()},Stream=require_stream3(),Buffer2=require("buffer").Buffer,OurUint8Array=(typeof global<"u"?global:typeof window<"u"?window:typeof self<"u"?self:{}).Uint8Array||function(){};function _uint8ArrayToBuffer(chunk){return Buffer2.from(chunk)}function _isUint8Array(obj){return Buffer2.isBuffer(obj)||obj instanceof OurUint8Array}var destroyImpl=require_destroy2(),_require=require_state(),getHighWaterMark=_require.getHighWaterMark,_require$codes=require_errors4().codes,ERR_INVALID_ARG_TYPE=_require$codes.ERR_INVALID_ARG_TYPE,ERR_METHOD_NOT_IMPLEMENTED=_require$codes.ERR_METHOD_NOT_IMPLEMENTED,ERR_MULTIPLE_CALLBACK=_require$codes.ERR_MULTIPLE_CALLBACK,ERR_STREAM_CANNOT_PIPE=_require$codes.ERR_STREAM_CANNOT_PIPE,ERR_STREAM_DESTROYED=_require$codes.ERR_STREAM_DESTROYED,ERR_STREAM_NULL_VALUES=_require$codes.ERR_STREAM_NULL_VALUES,ERR_STREAM_WRITE_AFTER_END=_require$codes.ERR_STREAM_WRITE_AFTER_END,ERR_UNKNOWN_ENCODING=_require$codes.ERR_UNKNOWN_ENCODING,errorOrDestroy=destroyImpl.errorOrDestroy;require_inherits()(Writable,Stream);function nop(){}function WritableState(options,stream,isDuplex){Duplex=Duplex||require_stream_duplex(),options=options||{},typeof isDuplex!="boolean"&&(isDuplex=stream instanceof Duplex),this.objectMode=!!options.objectMode,isDuplex&&(this.objectMode=this.objectMode||!!options.writableObjectMode),this.highWaterMark=getHighWaterMark(this,options,"writableHighWaterMark",isDuplex),this.finalCalled=!1,this.needDrain=!1,this.ending=!1,this.ended=!1,this.finished=!1,this.destroyed=!1;var noDecode=options.decodeStrings===!1;this.decodeStrings=!noDecode,this.defaultEncoding=options.defaultEncoding||"utf8",this.length=0,this.writing=!1,this.corked=0,this.sync=!0,this.bufferProcessing=!1,this.onwrite=function(er){onwrite(stream,er)},this.writecb=null,this.writelen=0,this.bufferedRequest=null,this.lastBufferedRequest=null,this.pendingcb=0,this.prefinished=!1,this.errorEmitted=!1,this.emitClose=options.emitClose!==!1,this.autoDestroy=!!options.autoDestroy,this.bufferedRequestCount=0,this.corkedRequestsFree=new CorkedRequest(this)}WritableState.prototype.getBuffer=function(){for(var current=this.bufferedRequest,out=[];current;)out.push(current),current=current.next;return out};(function(){try{Object.defineProperty(WritableState.prototype,"buffer",{get:internalUtil.deprecate(function(){return this.getBuffer()},"_writableState.buffer is deprecated. Use _writableState.getBuffer instead.","DEP0003")})}catch{}})();var realHasInstance;typeof Symbol=="function"&&Symbol.hasInstance&&typeof Function.prototype[Symbol.hasInstance]=="function"?(realHasInstance=Function.prototype[Symbol.hasInstance],Object.defineProperty(Writable,Symbol.hasInstance,{value:function(object){return realHasInstance.call(this,object)?!0:this!==Writable?!1:object&&object._writableState instanceof WritableState}})):realHasInstance=function(object){return object instanceof this};function Writable(options){Duplex=Duplex||require_stream_duplex();var isDuplex=this instanceof Duplex;if(!isDuplex&&!realHasInstance.call(Writable,this))return new Writable(options);this._writableState=new WritableState(options,this,isDuplex),this.writable=!0,options&&(typeof options.write=="function"&&(this._write=options.write),typeof options.writev=="function"&&(this._writev=options.writev),typeof options.destroy=="function"&&(this._destroy=options.destroy),typeof options.final=="function"&&(this._final=options.final)),Stream.call(this)}Writable.prototype.pipe=function(){errorOrDestroy(this,new ERR_STREAM_CANNOT_PIPE)};function writeAfterEnd(stream,cb){var er=new ERR_STREAM_WRITE_AFTER_END;errorOrDestroy(stream,er),process.nextTick(cb,er)}function validChunk(stream,state,chunk,cb){var er;return chunk===null?er=new ERR_STREAM_NULL_VALUES:typeof chunk!="string"&&!state.objectMode&&(er=new ERR_INVALID_ARG_TYPE("chunk",["string","Buffer"],chunk)),er?(errorOrDestroy(stream,er),process.nextTick(cb,er),!1):!0}Writable.prototype.write=function(chunk,encoding,cb){var state=this._writableState,ret=!1,isBuf=!state.objectMode&&_isUint8Array(chunk);return isBuf&&!Buffer2.isBuffer(chunk)&&(chunk=_uint8ArrayToBuffer(chunk)),typeof encoding=="function"&&(cb=encoding,encoding=null),isBuf?encoding="buffer":encoding||(encoding=state.defaultEncoding),typeof cb!="function"&&(cb=nop),state.ending?writeAfterEnd(this,cb):(isBuf||validChunk(this,state,chunk,cb))&&(state.pendingcb++,ret=writeOrBuffer(this,state,isBuf,chunk,encoding,cb)),ret};Writable.prototype.cork=function(){this._writableState.corked++};Writable.prototype.uncork=function(){var state=this._writableState;state.corked&&(state.corked--,!state.writing&&!state.corked&&!state.bufferProcessing&&state.bufferedRequest&&clearBuffer(this,state))};Writable.prototype.setDefaultEncoding=function(encoding){if(typeof encoding=="string"&&(encoding=encoding.toLowerCase()),!(["hex","utf8","utf-8","ascii","binary","base64","ucs2","ucs-2","utf16le","utf-16le","raw"].indexOf((encoding+"").toLowerCase())>-1))throw new ERR_UNKNOWN_ENCODING(encoding);return this._writableState.defaultEncoding=encoding,this};Object.defineProperty(Writable.prototype,"writableBuffer",{enumerable:!1,get:function(){return this._writableState&&this._writableState.getBuffer()}});function decodeChunk(state,chunk,encoding){return!state.objectMode&&state.decodeStrings!==!1&&typeof chunk=="string"&&(chunk=Buffer2.from(chunk,encoding)),chunk}Object.defineProperty(Writable.prototype,"writableHighWaterMark",{enumerable:!1,get:function(){return this._writableState.highWaterMark}});function writeOrBuffer(stream,state,isBuf,chunk,encoding,cb){if(!isBuf){var newChunk=decodeChunk(state,chunk,encoding);chunk!==newChunk&&(isBuf=!0,encoding="buffer",chunk=newChunk)}var len=state.objectMode?1:chunk.length;state.length+=len;var ret=state.length<state.highWaterMark;if(ret||(state.needDrain=!0),state.writing||state.corked){var last=state.lastBufferedRequest;state.lastBufferedRequest={chunk,encoding,isBuf,callback:cb,next:null},last?last.next=state.lastBufferedRequest:state.bufferedRequest=state.lastBufferedRequest,state.bufferedRequestCount+=1}else doWrite(stream,state,!1,len,chunk,encoding,cb);return ret}function doWrite(stream,state,writev,len,chunk,encoding,cb){state.writelen=len,state.writecb=cb,state.writing=!0,state.sync=!0,state.destroyed?state.onwrite(new ERR_STREAM_DESTROYED("write")):writev?stream._writev(chunk,state.onwrite):stream._write(chunk,encoding,state.onwrite),state.sync=!1}function onwriteError(stream,state,sync,er,cb){--state.pendingcb,sync?(process.nextTick(cb,er),process.nextTick(finishMaybe,stream,state),stream._writableState.errorEmitted=!0,errorOrDestroy(stream,er)):(cb(er),stream._writableState.errorEmitted=!0,errorOrDestroy(stream,er),finishMaybe(stream,state))}function onwriteStateUpdate(state){state.writing=!1,state.writecb=null,state.length-=state.writelen,state.writelen=0}function onwrite(stream,er){var state=stream._writableState,sync=state.sync,cb=state.writecb;if(typeof cb!="function")throw new ERR_MULTIPLE_CALLBACK;if(onwriteStateUpdate(state),er)onwriteError(stream,state,sync,er,cb);else{var finished=needFinish(state)||stream.destroyed;!finished&&!state.corked&&!state.bufferProcessing&&state.bufferedRequest&&clearBuffer(stream,state),sync?process.nextTick(afterWrite,stream,state,finished,cb):afterWrite(stream,state,finished,cb)}}function afterWrite(stream,state,finished,cb){finished||onwriteDrain(stream,state),state.pendingcb--,cb(),finishMaybe(stream,state)}function onwriteDrain(stream,state){state.length===0&&state.needDrain&&(state.needDrain=!1,stream.emit("drain"))}function clearBuffer(stream,state){state.bufferProcessing=!0;var entry=state.bufferedRequest;if(stream._writev&&entry&&entry.next){var l=state.bufferedRequestCount,buffer=new Array(l),holder=state.corkedRequestsFree;holder.entry=entry;for(var count=0,allBuffers=!0;entry;)buffer[count]=entry,entry.isBuf||(allBuffers=!1),entry=entry.next,count+=1;buffer.allBuffers=allBuffers,doWrite(stream,state,!0,state.length,buffer,"",holder.finish),state.pendingcb++,state.lastBufferedRequest=null,holder.next?(state.corkedRequestsFree=holder.next,holder.next=null):state.corkedRequestsFree=new CorkedRequest(state),state.bufferedRequestCount=0}else{for(;entry;){var chunk=entry.chunk,encoding=entry.encoding,cb=entry.callback,len=state.objectMode?1:chunk.length;if(doWrite(stream,state,!1,len,chunk,encoding,cb),entry=entry.next,state.bufferedRequestCount--,state.writing)break}entry===null&&(state.lastBufferedRequest=null)}state.bufferedRequest=entry,state.bufferProcessing=!1}Writable.prototype._write=function(chunk,encoding,cb){cb(new ERR_METHOD_NOT_IMPLEMENTED("_write()"))};Writable.prototype._writev=null;Writable.prototype.end=function(chunk,encoding,cb){var state=this._writableState;return typeof chunk=="function"?(cb=chunk,chunk=null,encoding=null):typeof encoding=="function"&&(cb=encoding,encoding=null),chunk!=null&&this.write(chunk,encoding),state.corked&&(state.corked=1,this.uncork()),state.ending||endWritable(this,state,cb),this};Object.defineProperty(Writable.prototype,"writableLength",{enumerable:!1,get:function(){return this._writableState.length}});function needFinish(state){return state.ending&&state.length===0&&state.bufferedRequest===null&&!state.finished&&!state.writing}function callFinal(stream,state){stream._final(function(err){state.pendingcb--,err&&errorOrDestroy(stream,err),state.prefinished=!0,stream.emit("prefinish"),finishMaybe(stream,state)})}function prefinish(stream,state){!state.prefinished&&!state.finalCalled&&(typeof stream._final=="function"&&!state.destroyed?(state.pendingcb++,state.finalCalled=!0,process.nextTick(callFinal,stream,state)):(state.prefinished=!0,stream.emit("prefinish")))}function finishMaybe(stream,state){var need=needFinish(state);if(need&&(prefinish(stream,state),state.pendingcb===0&&(state.finished=!0,stream.emit("finish"),state.autoDestroy))){var rState=stream._readableState;(!rState||rState.autoDestroy&&rState.endEmitted)&&stream.destroy()}return need}function endWritable(stream,state,cb){state.ending=!0,finishMaybe(stream,state),cb&&(state.finished?process.nextTick(cb):stream.once("finish",cb)),state.ended=!0,stream.writable=!1}function onCorkedFinish(corkReq,state,err){var entry=corkReq.entry;for(corkReq.entry=null;entry;){var cb=entry.callback;state.pendingcb--,cb(err),entry=entry.next}state.corkedRequestsFree.next=corkReq}Object.defineProperty(Writable.prototype,"destroyed",{enumerable:!1,get:function(){return this._writableState===void 0?!1:this._writableState.destroyed},set:function(value){this._writableState&&(this._writableState.destroyed=value)}});Writable.prototype.destroy=destroyImpl.destroy;Writable.prototype._undestroy=destroyImpl.undestroy;Writable.prototype._destroy=function(err,cb){cb(err)}}});var require_stream_duplex=__commonJS({"node_modules/readable-stream/lib/_stream_duplex.js"(exports2,module2){"use strict";var objectKeys=Object.keys||function(obj){var keys2=[];for(var key in obj)keys2.push(key);return keys2};module2.exports=Duplex;var Readable=require_stream_readable(),Writable=require_stream_writable();require_inherits()(Duplex,Readable);for(keys=objectKeys(Writable.prototype),v=0;v<keys.length;v++)method=keys[v],Duplex.prototype[method]||(Duplex.prototype[method]=Writable.prototype[method]);var keys,method,v;function Duplex(options){if(!(this instanceof Duplex))return new Duplex(options);Readable.call(this,options),Writable.call(this,options),this.allowHalfOpen=!0,options&&(options.readable===!1&&(this.readable=!1),options.writable===!1&&(this.writable=!1),options.allowHalfOpen===!1&&(this.allowHalfOpen=!1,this.once("end",onend)))}Object.defineProperty(Duplex.prototype,"writableHighWaterMark",{enumerable:!1,get:function(){return this._writableState.highWaterMark}});Object.defineProperty(Duplex.prototype,"writableBuffer",{enumerable:!1,get:function(){return this._writableState&&this._writableState.getBuffer()}});Object.defineProperty(Duplex.prototype,"writableLength",{enumerable:!1,get:function(){return this._writableState.length}});function onend(){this._writableState.ended||process.nextTick(onEndNT,this)}function onEndNT(self2){self2.end()}Object.defineProperty(Duplex.prototype,"destroyed",{enumerable:!1,get:function(){return this._readableState===void 0||this._writableState===void 0?!1:this._readableState.destroyed&&this._writableState.destroyed},set:function(value){this._readableState===void 0||this._writableState===void 0||(this._readableState.destroyed=value,this._writableState.destroyed=value)}})}});var require_string_decoder=__commonJS({"node_modules/string_decoder/lib/string_decoder.js"(exports2){"use strict";var Buffer2=require_safe_buffer().Buffer,isEncoding=Buffer2.isEncoding||function(encoding){switch(encoding=""+encoding,encoding&&encoding.toLowerCase()){case"hex":case"utf8":case"utf-8":case"ascii":case"binary":case"base64":case"ucs2":case"ucs-2":case"utf16le":case"utf-16le":case"raw":return!0;default:return!1}};function _normalizeEncoding(enc){if(!enc)return"utf8";for(var retried;;)switch(enc){case"utf8":case"utf-8":return"utf8";case"ucs2":case"ucs-2":case"utf16le":case"utf-16le":return"utf16le";case"latin1":case"binary":return"latin1";case"base64":case"ascii":case"hex":return enc;default:if(retried)return;enc=(""+enc).toLowerCase(),retried=!0}}function normalizeEncoding(enc){var nenc=_normalizeEncoding(enc);if(typeof nenc!="string"&&(Buffer2.isEncoding===isEncoding||!isEncoding(enc)))throw new Error("Unknown encoding: "+enc);return nenc||enc}exports2.StringDecoder=StringDecoder;function StringDecoder(encoding){this.encoding=normalizeEncoding(encoding);var nb;switch(this.encoding){case"utf16le":this.text=utf16Text,this.end=utf16End,nb=4;break;case"utf8":this.fillLast=utf8FillLast,nb=4;break;case"base64":this.text=base64Text,this.end=base64End,nb=3;break;default:this.write=simpleWrite,this.end=simpleEnd;return}this.lastNeed=0,this.lastTotal=0,this.lastChar=Buffer2.allocUnsafe(nb)}StringDecoder.prototype.write=function(buf){if(buf.length===0)return"";var r,i;if(this.lastNeed){if(r=this.fillLast(buf),r===void 0)return"";i=this.lastNeed,this.lastNeed=0}else i=0;return i<buf.length?r?r+this.text(buf,i):this.text(buf,i):r||""};StringDecoder.prototype.end=utf8End;StringDecoder.prototype.text=utf8Text;StringDecoder.prototype.fillLast=function(buf){if(this.lastNeed<=buf.length)return buf.copy(this.lastChar,this.lastTotal-this.lastNeed,0,this.lastNeed),this.lastChar.toString(this.encoding,0,this.lastTotal);buf.copy(this.lastChar,this.lastTotal-this.lastNeed,0,buf.length),this.lastNeed-=buf.length};function utf8CheckByte(byte){return byte<=127?0:byte>>5===6?2:byte>>4===14?3:byte>>3===30?4:byte>>6===2?-1:-2}function utf8CheckIncomplete(self2,buf,i){var j=buf.length-1;if(j<i)return 0;var nb=utf8CheckByte(buf[j]);return nb>=0?(nb>0&&(self2.lastNeed=nb-1),nb):--j<i||nb===-2?0:(nb=utf8CheckByte(buf[j]),nb>=0?(nb>0&&(self2.lastNeed=nb-2),nb):--j<i||nb===-2?0:(nb=utf8CheckByte(buf[j]),nb>=0?(nb>0&&(nb===2?nb=0:self2.lastNeed=nb-3),nb):0))}function utf8CheckExtraBytes(self2,buf,p){if((buf[0]&192)!==128)return self2.lastNeed=0,"\uFFFD";if(self2.lastNeed>1&&buf.length>1){if((buf[1]&192)!==128)return self2.lastNeed=1,"\uFFFD";if(self2.lastNeed>2&&buf.length>2&&(buf[2]&192)!==128)return self2.lastNeed=2,"\uFFFD"}}function utf8FillLast(buf){var p=this.lastTotal-this.lastNeed,r=utf8CheckExtraBytes(this,buf,p);if(r!==void 0)return r;if(this.lastNeed<=buf.length)return buf.copy(this.lastChar,p,0,this.lastNeed),this.lastChar.toString(this.encoding,0,this.lastTotal);buf.copy(this.lastChar,p,0,buf.length),this.lastNeed-=buf.length}function utf8Text(buf,i){var total=utf8CheckIncomplete(this,buf,i);if(!this.lastNeed)return buf.toString("utf8",i);this.lastTotal=total;var end=buf.length-(total-this.lastNeed);return buf.copy(this.lastChar,0,end),buf.toString("utf8",i,end)}function utf8End(buf){var r=buf&&buf.length?this.write(buf):"";return this.lastNeed?r+"\uFFFD":r}function utf16Text(buf,i){if((buf.length-i)%2===0){var r=buf.toString("utf16le",i);if(r){var c=r.charCodeAt(r.length-1);if(c>=55296&&c<=56319)return this.lastNeed=2,this.lastTotal=4,this.lastChar[0]=buf[buf.length-2],this.lastChar[1]=buf[buf.length-1],r.slice(0,-1)}return r}return this.lastNeed=1,this.lastTotal=2,this.lastChar[0]=buf[buf.length-1],buf.toString("utf16le",i,buf.length-1)}function utf16End(buf){var r=buf&&buf.length?this.write(buf):"";if(this.lastNeed){var end=this.lastTotal-this.lastNeed;return r+this.lastChar.toString("utf16le",0,end)}return r}function base64Text(buf,i){var n=(buf.length-i)%3;return n===0?buf.toString("base64",i):(this.lastNeed=3-n,this.lastTotal=3,n===1?this.lastChar[0]=buf[buf.length-1]:(this.lastChar[0]=buf[buf.length-2],this.lastChar[1]=buf[buf.length-1]),buf.toString("base64",i,buf.length-n))}function base64End(buf){var r=buf&&buf.length?this.write(buf):"";return this.lastNeed?r+this.lastChar.toString("base64",0,3-this.lastNeed):r}function simpleWrite(buf){return buf.toString(this.encoding)}function simpleEnd(buf){return buf&&buf.length?this.write(buf):""}}});var require_end_of_stream=__commonJS({"node_modules/readable-stream/lib/internal/streams/end-of-stream.js"(exports2,module2){"use strict";var ERR_STREAM_PREMATURE_CLOSE=require_errors4().codes.ERR_STREAM_PREMATURE_CLOSE;function once(callback){var called=!1;return function(){if(!called){called=!0;for(var _len=arguments.length,args=new Array(_len),_key=0;_key<_len;_key++)args[_key]=arguments[_key];callback.apply(this,args)}}}function noop(){}function isRequest(stream){return stream.setHeader&&typeof stream.abort=="function"}function eos(stream,opts,callback){if(typeof opts=="function")return eos(stream,null,opts);opts||(opts={}),callback=once(callback||noop);var readable=opts.readable||opts.readable!==!1&&stream.readable,writable=opts.writable||opts.writable!==!1&&stream.writable,onlegacyfinish=function(){stream.writable||onfinish()},writableEnded=stream._writableState&&stream._writableState.finished,onfinish=function(){writable=!1,writableEnded=!0,readable||callback.call(stream)},readableEnded=stream._readableState&&stream._readableState.endEmitted,onend=function(){readable=!1,readableEnded=!0,writable||callback.call(stream)},onerror=function(err){callback.call(stream,err)},onclose=function(){var err;if(readable&&!readableEnded)return(!stream._readableState||!stream._readableState.ended)&&(err=new ERR_STREAM_PREMATURE_CLOSE),callback.call(stream,err);if(writable&&!writableEnded)return(!stream._writableState||!stream._writableState.ended)&&(err=new ERR_STREAM_PREMATURE_CLOSE),callback.call(stream,err)},onrequest=function(){stream.req.on("finish",onfinish)};return isRequest(stream)?(stream.on("complete",onfinish),stream.on("abort",onclose),stream.req?onrequest():stream.on("request",onrequest)):writable&&!stream._writableState&&(stream.on("end",onlegacyfinish),stream.on("close",onlegacyfinish)),stream.on("end",onend),stream.on("finish",onfinish),opts.error!==!1&&stream.on("error",onerror),stream.on("close",onclose),function(){stream.removeListener("complete",onfinish),stream.removeListener("abort",onclose),stream.removeListener("request",onrequest),stream.req&&stream.req.removeListener("finish",onfinish),stream.removeListener("end",onlegacyfinish),stream.removeListener("close",onlegacyfinish),stream.removeListener("finish",onfinish),stream.removeListener("end",onend),stream.removeListener("error",onerror),stream.removeListener("close",onclose)}}module2.exports=eos}});var require_async_iterator=__commonJS({"node_modules/readable-stream/lib/internal/streams/async_iterator.js"(exports2,module2){"use strict";var _Object$setPrototypeO;function _defineProperty(obj,key,value){return key=_toPropertyKey(key),key in obj?Object.defineProperty(obj,key,{value,enumerable:!0,configurable:!0,writable:!0}):obj[key]=value,obj}function _toPropertyKey(arg){var key=_toPrimitive(arg,"string");return typeof key=="symbol"?key:String(key)}function _toPrimitive(input,hint){if(typeof input!="object"||input===null)return input;var prim=input[Symbol.toPrimitive];if(prim!==void 0){var res=prim.call(input,hint||"default");if(typeof res!="object")return res;throw new TypeError("@@toPrimitive must return a primitive value.")}return(hint==="string"?String:Number)(input)}var finished=require_end_of_stream(),kLastResolve=Symbol("lastResolve"),kLastReject=Symbol("lastReject"),kError=Symbol("error"),kEnded=Symbol("ended"),kLastPromise=Symbol("lastPromise"),kHandlePromise=Symbol("handlePromise"),kStream=Symbol("stream");function createIterResult(value,done){return{value,done}}function readAndResolve(iter){var resolve=iter[kLastResolve];if(resolve!==null){var data=iter[kStream].read();data!==null&&(iter[kLastPromise]=null,iter[kLastResolve]=null,iter[kLastReject]=null,resolve(createIterResult(data,!1)))}}function onReadable(iter){process.nextTick(readAndResolve,iter)}function wrapForNext(lastPromise,iter){return function(resolve,reject){lastPromise.then(function(){if(iter[kEnded]){resolve(createIterResult(void 0,!0));return}iter[kHandlePromise](resolve,reject)},reject)}}var AsyncIteratorPrototype=Object.getPrototypeOf(function(){}),ReadableStreamAsyncIteratorPrototype=Object.setPrototypeOf((_Object$setPrototypeO={get stream(){return this[kStream]},next:function(){var _this=this,error=this[kError];if(error!==null)return Promise.reject(error);if(this[kEnded])return Promise.resolve(createIterResult(void 0,!0));if(this[kStream].destroyed)return new Promise(function(resolve,reject){process.nextTick(function(){_this[kError]?reject(_this[kError]):resolve(createIterResult(void 0,!0))})});var lastPromise=this[kLastPromise],promise;if(lastPromise)promise=new Promise(wrapForNext(lastPromise,this));else{var data=this[kStream].read();if(data!==null)return Promise.resolve(createIterResult(data,!1));promise=new Promise(this[kHandlePromise])}return this[kLastPromise]=promise,promise}},_defineProperty(_Object$setPrototypeO,Symbol.asyncIterator,function(){return this}),_defineProperty(_Object$setPrototypeO,"return",function(){var _this2=this;return new Promise(function(resolve,reject){_this2[kStream].destroy(null,function(err){if(err){reject(err);return}resolve(createIterResult(void 0,!0))})})}),_Object$setPrototypeO),AsyncIteratorPrototype),createReadableStreamAsyncIterator=function(stream){var _Object$create,iterator=Object.create(ReadableStreamAsyncIteratorPrototype,(_Object$create={},_defineProperty(_Object$create,kStream,{value:stream,writable:!0}),_defineProperty(_Object$create,kLastResolve,{value:null,writable:!0}),_defineProperty(_Object$create,kLastReject,{value:null,writable:!0}),_defineProperty(_Object$create,kError,{value:null,writable:!0}),_defineProperty(_Object$create,kEnded,{value:stream._readableState.endEmitted,writable:!0}),_defineProperty(_Object$create,kHandlePromise,{value:function(resolve,reject){var data=iterator[kStream].read();data?(iterator[kLastPromise]=null,iterator[kLastResolve]=null,iterator[kLastReject]=null,resolve(createIterResult(data,!1))):(iterator[kLastResolve]=resolve,iterator[kLastReject]=reject)},writable:!0}),_Object$create));return iterator[kLastPromise]=null,finished(stream,function(err){if(err&&err.code!=="ERR_STREAM_PREMATURE_CLOSE"){var reject=iterator[kLastReject];reject!==null&&(iterator[kLastPromise]=null,iterator[kLastResolve]=null,iterator[kLastReject]=null,reject(err)),iterator[kError]=err;return}var resolve=iterator[kLastResolve];resolve!==null&&(iterator[kLastPromise]=null,iterator[kLastResolve]=null,iterator[kLastReject]=null,resolve(createIterResult(void 0,!0))),iterator[kEnded]=!0}),stream.on("readable",onReadable.bind(null,iterator)),iterator};module2.exports=createReadableStreamAsyncIterator}});var require_from=__commonJS({"node_modules/readable-stream/lib/internal/streams/from.js"(exports2,module2){"use strict";function asyncGeneratorStep(gen,resolve,reject,_next,_throw,key,arg){try{var info=gen[key](arg),value=info.value}catch(error){reject(error);return}info.done?resolve(value):Promise.resolve(value).then(_next,_throw)}function _asyncToGenerator(fn){return function(){var self2=this,args=arguments;return new Promise(function(resolve,reject){var gen=fn.apply(self2,args);function _next(value){asyncGeneratorStep(gen,resolve,reject,_next,_throw,"next",value)}function _throw(err){asyncGeneratorStep(gen,resolve,reject,_next,_throw,"throw",err)}_next(void 0)})}}function ownKeys(object,enumerableOnly){var keys=Object.keys(object);if(Object.getOwnPropertySymbols){var symbols=Object.getOwnPropertySymbols(object);enumerableOnly&&(symbols=symbols.filter(function(sym){return Object.getOwnPropertyDescriptor(object,sym).enumerable})),keys.push.apply(keys,symbols)}return keys}function _objectSpread(target){for(var i=1;i<arguments.length;i++){var source=arguments[i]!=null?arguments[i]:{};i%2?ownKeys(Object(source),!0).forEach(function(key){_defineProperty(target,key,source[key])}):Object.getOwnPropertyDescriptors?Object.defineProperties(target,Object.getOwnPropertyDescriptors(source)):ownKeys(Object(source)).forEach(function(key){Object.defineProperty(target,key,Object.getOwnPropertyDescriptor(source,key))})}return target}function _defineProperty(obj,key,value){return key=_toPropertyKey(key),key in obj?Object.defineProperty(obj,key,{value,enumerable:!0,configurable:!0,writable:!0}):obj[key]=value,obj}function _toPropertyKey(arg){var key=_toPrimitive(arg,"string");return typeof key=="symbol"?key:String(key)}function _toPrimitive(input,hint){if(typeof input!="object"||input===null)return input;var prim=input[Symbol.toPrimitive];if(prim!==void 0){var res=prim.call(input,hint||"default");if(typeof res!="object")return res;throw new TypeError("@@toPrimitive must return a primitive value.")}return(hint==="string"?String:Number)(input)}var ERR_INVALID_ARG_TYPE=require_errors4().codes.ERR_INVALID_ARG_TYPE;function from(Readable,iterable,opts){var iterator;if(iterable&&typeof iterable.next=="function")iterator=iterable;else if(iterable&&iterable[Symbol.asyncIterator])iterator=iterable[Symbol.asyncIterator]();else if(iterable&&iterable[Symbol.iterator])iterator=iterable[Symbol.iterator]();else throw new ERR_INVALID_ARG_TYPE("iterable",["Iterable"],iterable);var readable=new Readable(_objectSpread({objectMode:!0},opts)),reading=!1;readable._read=function(){reading||(reading=!0,next())};function next(){return _next2.apply(this,arguments)}function _next2(){return _next2=_asyncToGenerator(function*(){try{var _yield$iterator$next=yield iterator.next(),value=_yield$iterator$next.value,done=_yield$iterator$next.done;done?readable.push(null):readable.push(yield value)?next():reading=!1}catch(err){readable.destroy(err)}}),_next2.apply(this,arguments)}return readable}module2.exports=from}});var require_stream_readable=__commonJS({"node_modules/readable-stream/lib/_stream_readable.js"(exports2,module2){"use strict";module2.exports=Readable;var Duplex;Readable.ReadableState=ReadableState;var EE=require("events").EventEmitter,EElistenerCount=function(emitter,type){return emitter.listeners(type).length},Stream=require_stream3(),Buffer2=require("buffer").Buffer,OurUint8Array=(typeof global<"u"?global:typeof window<"u"?window:typeof self<"u"?self:{}).Uint8Array||function(){};function _uint8ArrayToBuffer(chunk){return Buffer2.from(chunk)}function _isUint8Array(obj){return Buffer2.isBuffer(obj)||obj instanceof OurUint8Array}var debugUtil=require("util"),debug;debugUtil&&debugUtil.debuglog?debug=debugUtil.debuglog("stream"):debug=function(){};var BufferList=require_buffer_list(),destroyImpl=require_destroy2(),_require=require_state(),getHighWaterMark=_require.getHighWaterMark,_require$codes=require_errors4().codes,ERR_INVALID_ARG_TYPE=_require$codes.ERR_INVALID_ARG_TYPE,ERR_STREAM_PUSH_AFTER_EOF=_require$codes.ERR_STREAM_PUSH_AFTER_EOF,ERR_METHOD_NOT_IMPLEMENTED=_require$codes.ERR_METHOD_NOT_IMPLEMENTED,ERR_STREAM_UNSHIFT_AFTER_END_EVENT=_require$codes.ERR_STREAM_UNSHIFT_AFTER_END_EVENT,StringDecoder,createReadableStreamAsyncIterator,from;require_inherits()(Readable,Stream);var errorOrDestroy=destroyImpl.errorOrDestroy,kProxyEvents=["error","close","destroy","pause","resume"];function prependListener(emitter,event,fn){if(typeof emitter.prependListener=="function")return emitter.prependListener(event,fn);!emitter._events||!emitter._events[event]?emitter.on(event,fn):Array.isArray(emitter._events[event])?emitter._events[event].unshift(fn):emitter._events[event]=[fn,emitter._events[event]]}function ReadableState(options,stream,isDuplex){Duplex=Duplex||require_stream_duplex(),options=options||{},typeof isDuplex!="boolean"&&(isDuplex=stream instanceof Duplex),this.objectMode=!!options.objectMode,isDuplex&&(this.objectMode=this.objectMode||!!options.readableObjectMode),this.highWaterMark=getHighWaterMark(this,options,"readableHighWaterMark",isDuplex),this.buffer=new BufferList,this.length=0,this.pipes=null,this.pipesCount=0,this.flowing=null,this.ended=!1,this.endEmitted=!1,this.reading=!1,this.sync=!0,this.needReadable=!1,this.emittedReadable=!1,this.readableListening=!1,this.resumeScheduled=!1,this.paused=!0,this.emitClose=options.emitClose!==!1,this.autoDestroy=!!options.autoDestroy,this.destroyed=!1,this.defaultEncoding=options.defaultEncoding||"utf8",this.awaitDrain=0,this.readingMore=!1,this.decoder=null,this.encoding=null,options.encoding&&(StringDecoder||(StringDecoder=require_string_decoder().StringDecoder),this.decoder=new StringDecoder(options.encoding),this.encoding=options.encoding)}function Readable(options){if(Duplex=Duplex||require_stream_duplex(),!(this instanceof Readable))return new Readable(options);var isDuplex=this instanceof Duplex;this._readableState=new ReadableState(options,this,isDuplex),this.readable=!0,options&&(typeof options.read=="function"&&(this._read=options.read),typeof options.destroy=="function"&&(this._destroy=options.destroy)),Stream.call(this)}Object.defineProperty(Readable.prototype,"destroyed",{enumerable:!1,get:function(){return this._readableState===void 0?!1:this._readableState.destroyed},set:function(value){this._readableState&&(this._readableState.destroyed=value)}});Readable.prototype.destroy=destroyImpl.destroy;Readable.prototype._undestroy=destroyImpl.undestroy;Readable.prototype._destroy=function(err,cb){cb(err)};Readable.prototype.push=function(chunk,encoding){var state=this._readableState,skipChunkCheck;return state.objectMode?skipChunkCheck=!0:typeof chunk=="string"&&(encoding=encoding||state.defaultEncoding,encoding!==state.encoding&&(chunk=Buffer2.from(chunk,encoding),encoding=""),skipChunkCheck=!0),readableAddChunk(this,chunk,encoding,!1,skipChunkCheck)};Readable.prototype.unshift=function(chunk){return readableAddChunk(this,chunk,null,!0,!1)};function readableAddChunk(stream,chunk,encoding,addToFront,skipChunkCheck){debug("readableAddChunk",chunk);var state=stream._readableState;if(chunk===null)state.reading=!1,onEofChunk(stream,state);else{var er;if(skipChunkCheck||(er=chunkInvalid(state,chunk)),er)errorOrDestroy(stream,er);else if(state.objectMode||chunk&&chunk.length>0)if(typeof chunk!="string"&&!state.objectMode&&Object.getPrototypeOf(chunk)!==Buffer2.prototype&&(chunk=_uint8ArrayToBuffer(chunk)),addToFront)state.endEmitted?errorOrDestroy(stream,new ERR_STREAM_UNSHIFT_AFTER_END_EVENT):addChunk(stream,state,chunk,!0);else if(state.ended)errorOrDestroy(stream,new ERR_STREAM_PUSH_AFTER_EOF);else{if(state.destroyed)return!1;state.reading=!1,state.decoder&&!encoding?(chunk=state.decoder.write(chunk),state.objectMode||chunk.length!==0?addChunk(stream,state,chunk,!1):maybeReadMore(stream,state)):addChunk(stream,state,chunk,!1)}else addToFront||(state.reading=!1,maybeReadMore(stream,state))}return!state.ended&&(state.length<state.highWaterMark||state.length===0)}function addChunk(stream,state,chunk,addToFront){state.flowing&&state.length===0&&!state.sync?(state.awaitDrain=0,stream.emit("data",chunk)):(state.length+=state.objectMode?1:chunk.length,addToFront?state.buffer.unshift(chunk):state.buffer.push(chunk),state.needReadable&&emitReadable(stream)),maybeReadMore(stream,state)}function chunkInvalid(state,chunk){var er;return!_isUint8Array(chunk)&&typeof chunk!="string"&&chunk!==void 0&&!state.objectMode&&(er=new ERR_INVALID_ARG_TYPE("chunk",["string","Buffer","Uint8Array"],chunk)),er}Readable.prototype.isPaused=function(){return this._readableState.flowing===!1};Readable.prototype.setEncoding=function(enc){StringDecoder||(StringDecoder=require_string_decoder().StringDecoder);var decoder=new StringDecoder(enc);this._readableState.decoder=decoder,this._readableState.encoding=this._readableState.decoder.encoding;for(var p=this._readableState.buffer.head,content="";p!==null;)content+=decoder.write(p.data),p=p.next;return this._readableState.buffer.clear(),content!==""&&this._readableState.buffer.push(content),this._readableState.length=content.length,this};var MAX_HWM=1073741824;function computeNewHighWaterMark(n){return n>=MAX_HWM?n=MAX_HWM:(n--,n|=n>>>1,n|=n>>>2,n|=n>>>4,n|=n>>>8,n|=n>>>16,n++),n}function howMuchToRead(n,state){return n<=0||state.length===0&&state.ended?0:state.objectMode?1:n!==n?state.flowing&&state.length?state.buffer.head.data.length:state.length:(n>state.highWaterMark&&(state.highWaterMark=computeNewHighWaterMark(n)),n<=state.length?n:state.ended?state.length:(state.needReadable=!0,0))}Readable.prototype.read=function(n){debug("read",n),n=parseInt(n,10);var state=this._readableState,nOrig=n;if(n!==0&&(state.emittedReadable=!1),n===0&&state.needReadable&&((state.highWaterMark!==0?state.length>=state.highWaterMark:state.length>0)||state.ended))return debug("read: emitReadable",state.length,state.ended),state.length===0&&state.ended?endReadable(this):emitReadable(this),null;if(n=howMuchToRead(n,state),n===0&&state.ended)return state.length===0&&endReadable(this),null;var doRead=state.needReadable;debug("need readable",doRead),(state.length===0||state.length-n<state.highWaterMark)&&(doRead=!0,debug("length less than watermark",doRead)),state.ended||state.reading?(doRead=!1,debug("reading or ended",doRead)):doRead&&(debug("do read"),state.reading=!0,state.sync=!0,state.length===0&&(state.needReadable=!0),this._read(state.highWaterMark),state.sync=!1,state.reading||(n=howMuchToRead(nOrig,state)));var ret;return n>0?ret=fromList(n,state):ret=null,ret===null?(state.needReadable=state.length<=state.highWaterMark,n=0):(state.length-=n,state.awaitDrain=0),state.length===0&&(state.ended||(state.needReadable=!0),nOrig!==n&&state.ended&&endReadable(this)),ret!==null&&this.emit("data",ret),ret};function onEofChunk(stream,state){if(debug("onEofChunk"),!state.ended){if(state.decoder){var chunk=state.decoder.end();chunk&&chunk.length&&(state.buffer.push(chunk),state.length+=state.objectMode?1:chunk.length)}state.ended=!0,state.sync?emitReadable(stream):(state.needReadable=!1,state.emittedReadable||(state.emittedReadable=!0,emitReadable_(stream)))}}function emitReadable(stream){var state=stream._readableState;debug("emitReadable",state.needReadable,state.emittedReadable),state.needReadable=!1,state.emittedReadable||(debug("emitReadable",state.flowing),state.emittedReadable=!0,process.nextTick(emitReadable_,stream))}function emitReadable_(stream){var state=stream._readableState;debug("emitReadable_",state.destroyed,state.length,state.ended),!state.destroyed&&(state.length||state.ended)&&(stream.emit("readable"),state.emittedReadable=!1),state.needReadable=!state.flowing&&!state.ended&&state.length<=state.highWaterMark,flow(stream)}function maybeReadMore(stream,state){state.readingMore||(state.readingMore=!0,process.nextTick(maybeReadMore_,stream,state))}function maybeReadMore_(stream,state){for(;!state.reading&&!state.ended&&(state.length<state.highWaterMark||state.flowing&&state.length===0);){var len=state.length;if(debug("maybeReadMore read 0"),stream.read(0),len===state.length)break}state.readingMore=!1}Readable.prototype._read=function(n){errorOrDestroy(this,new ERR_METHOD_NOT_IMPLEMENTED("_read()"))};Readable.prototype.pipe=function(dest,pipeOpts){var src=this,state=this._readableState;switch(state.pipesCount){case 0:state.pipes=dest;break;case 1:state.pipes=[state.pipes,dest];break;default:state.pipes.push(dest);break}state.pipesCount+=1,debug("pipe count=%d opts=%j",state.pipesCount,pipeOpts);var doEnd=(!pipeOpts||pipeOpts.end!==!1)&&dest!==process.stdout&&dest!==process.stderr,endFn=doEnd?onend:unpipe;state.endEmitted?process.nextTick(endFn):src.once("end",endFn),dest.on("unpipe",onunpipe);function onunpipe(readable,unpipeInfo){debug("onunpipe"),readable===src&&unpipeInfo&&unpipeInfo.hasUnpiped===!1&&(unpipeInfo.hasUnpiped=!0,cleanup())}function onend(){debug("onend"),dest.end()}var ondrain=pipeOnDrain(src);dest.on("drain",ondrain);var cleanedUp=!1;function cleanup(){debug("cleanup"),dest.removeListener("close",onclose),dest.removeListener("finish",onfinish),dest.removeListener("drain",ondrain),dest.removeListener("error",onerror),dest.removeListener("unpipe",onunpipe),src.removeListener("end",onend),src.removeListener("end",unpipe),src.removeListener("data",ondata),cleanedUp=!0,state.awaitDrain&&(!dest._writableState||dest._writableState.needDrain)&&ondrain()}src.on("data",ondata);function ondata(chunk){debug("ondata");var ret=dest.write(chunk);debug("dest.write",ret),ret===!1&&((state.pipesCount===1&&state.pipes===dest||state.pipesCount>1&&indexOf(state.pipes,dest)!==-1)&&!cleanedUp&&(debug("false write response, pause",state.awaitDrain),state.awaitDrain++),src.pause())}function onerror(er){debug("onerror",er),unpipe(),dest.removeListener("error",onerror),EElistenerCount(dest,"error")===0&&errorOrDestroy(dest,er)}prependListener(dest,"error",onerror);function onclose(){dest.removeListener("finish",onfinish),unpipe()}dest.once("close",onclose);function onfinish(){debug("onfinish"),dest.removeListener("close",onclose),unpipe()}dest.once("finish",onfinish);function unpipe(){debug("unpipe"),src.unpipe(dest)}return dest.emit("pipe",src),state.flowing||(debug("pipe resume"),src.resume()),dest};function pipeOnDrain(src){return function(){var state=src._readableState;debug("pipeOnDrain",state.awaitDrain),state.awaitDrain&&state.awaitDrain--,state.awaitDrain===0&&EElistenerCount(src,"data")&&(state.flowing=!0,flow(src))}}Readable.prototype.unpipe=function(dest){var state=this._readableState,unpipeInfo={hasUnpiped:!1};if(state.pipesCount===0)return this;if(state.pipesCount===1)return dest&&dest!==state.pipes?this:(dest||(dest=state.pipes),state.pipes=null,state.pipesCount=0,state.flowing=!1,dest&&dest.emit("unpipe",this,unpipeInfo),this);if(!dest){var dests=state.pipes,len=state.pipesCount;state.pipes=null,state.pipesCount=0,state.flowing=!1;for(var i=0;i<len;i++)dests[i].emit("unpipe",this,{hasUnpiped:!1});return this}var index=indexOf(state.pipes,dest);return index===-1?this:(state.pipes.splice(index,1),state.pipesCount-=1,state.pipesCount===1&&(state.pipes=state.pipes[0]),dest.emit("unpipe",this,unpipeInfo),this)};Readable.prototype.on=function(ev,fn){var res=Stream.prototype.on.call(this,ev,fn),state=this._readableState;return ev==="data"?(state.readableListening=this.listenerCount("readable")>0,state.flowing!==!1&&this.resume()):ev==="readable"&&!state.endEmitted&&!state.readableListening&&(state.readableListening=state.needReadable=!0,state.flowing=!1,state.emittedReadable=!1,debug("on readable",state.length,state.reading),state.length?emitReadable(this):state.reading||process.nextTick(nReadingNextTick,this)),res};Readable.prototype.addListener=Readable.prototype.on;Readable.prototype.removeListener=function(ev,fn){var res=Stream.prototype.removeListener.call(this,ev,fn);return ev==="readable"&&process.nextTick(updateReadableListening,this),res};Readable.prototype.removeAllListeners=function(ev){var res=Stream.prototype.removeAllListeners.apply(this,arguments);return(ev==="readable"||ev===void 0)&&process.nextTick(updateReadableListening,this),res};function updateReadableListening(self2){var state=self2._readableState;state.readableListening=self2.listenerCount("readable")>0,state.resumeScheduled&&!state.paused?state.flowing=!0:self2.listenerCount("data")>0&&self2.resume()}function nReadingNextTick(self2){debug("readable nexttick read 0"),self2.read(0)}Readable.prototype.resume=function(){var state=this._readableState;return state.flowing||(debug("resume"),state.flowing=!state.readableListening,resume(this,state)),state.paused=!1,this};function resume(stream,state){state.resumeScheduled||(state.resumeScheduled=!0,process.nextTick(resume_,stream,state))}function resume_(stream,state){debug("resume",state.reading),state.reading||stream.read(0),state.resumeScheduled=!1,stream.emit("resume"),flow(stream),state.flowing&&!state.reading&&stream.read(0)}Readable.prototype.pause=function(){return debug("call pause flowing=%j",this._readableState.flowing),this._readableState.flowing!==!1&&(debug("pause"),this._readableState.flowing=!1,this.emit("pause")),this._readableState.paused=!0,this};function flow(stream){var state=stream._readableState;for(debug("flow",state.flowing);state.flowing&&stream.read()!==null;);}Readable.prototype.wrap=function(stream){var _this=this,state=this._readableState,paused=!1;stream.on("end",function(){if(debug("wrapped end"),state.decoder&&!state.ended){var chunk=state.decoder.end();chunk&&chunk.length&&_this.push(chunk)}_this.push(null)}),stream.on("data",function(chunk){if(debug("wrapped data"),state.decoder&&(chunk=state.decoder.write(chunk)),!(state.objectMode&&chunk==null)&&!(!state.objectMode&&(!chunk||!chunk.length))){var ret=_this.push(chunk);ret||(paused=!0,stream.pause())}});for(var i in stream)this[i]===void 0&&typeof stream[i]=="function"&&(this[i]=(function(method){return function(){return stream[method].apply(stream,arguments)}})(i));for(var n=0;n<kProxyEvents.length;n++)stream.on(kProxyEvents[n],this.emit.bind(this,kProxyEvents[n]));return this._read=function(n2){debug("wrapped _read",n2),paused&&(paused=!1,stream.resume())},this};typeof Symbol=="function"&&(Readable.prototype[Symbol.asyncIterator]=function(){return createReadableStreamAsyncIterator===void 0&&(createReadableStreamAsyncIterator=require_async_iterator()),createReadableStreamAsyncIterator(this)});Object.defineProperty(Readable.prototype,"readableHighWaterMark",{enumerable:!1,get:function(){return this._readableState.highWaterMark}});Object.defineProperty(Readable.prototype,"readableBuffer",{enumerable:!1,get:function(){return this._readableState&&this._readableState.buffer}});Object.defineProperty(Readable.prototype,"readableFlowing",{enumerable:!1,get:function(){return this._readableState.flowing},set:function(state){this._readableState&&(this._readableState.flowing=state)}});Readable._fromList=fromList;Object.defineProperty(Readable.prototype,"readableLength",{enumerable:!1,get:function(){return this._readableState.length}});function fromList(n,state){if(state.length===0)return null;var ret;return state.objectMode?ret=state.buffer.shift():!n||n>=state.length?(state.decoder?ret=state.buffer.join(""):state.buffer.length===1?ret=state.buffer.first():ret=state.buffer.concat(state.length),state.buffer.clear()):ret=state.buffer.consume(n,state.decoder),ret}function endReadable(stream){var state=stream._readableState;debug("endReadable",state.endEmitted),state.endEmitted||(state.ended=!0,process.nextTick(endReadableNT,state,stream))}function endReadableNT(state,stream){if(debug("endReadableNT",state.endEmitted,state.length),!state.endEmitted&&state.length===0&&(state.endEmitted=!0,stream.readable=!1,stream.emit("end"),state.autoDestroy)){var wState=stream._writableState;(!wState||wState.autoDestroy&&wState.finished)&&stream.destroy()}}typeof Symbol=="function"&&(Readable.from=function(iterable,opts){return from===void 0&&(from=require_from()),from(Readable,iterable,opts)});function indexOf(xs,x){for(var i=0,l=xs.length;i<l;i++)if(xs[i]===x)return i;return-1}}});var require_stream_transform=__commonJS({"node_modules/readable-stream/lib/_stream_transform.js"(exports2,module2){"use strict";module2.exports=Transform;var _require$codes=require_errors4().codes,ERR_METHOD_NOT_IMPLEMENTED=_require$codes.ERR_METHOD_NOT_IMPLEMENTED,ERR_MULTIPLE_CALLBACK=_require$codes.ERR_MULTIPLE_CALLBACK,ERR_TRANSFORM_ALREADY_TRANSFORMING=_require$codes.ERR_TRANSFORM_ALREADY_TRANSFORMING,ERR_TRANSFORM_WITH_LENGTH_0=_require$codes.ERR_TRANSFORM_WITH_LENGTH_0,Duplex=require_stream_duplex();require_inherits()(Transform,Duplex);function afterTransform(er,data){var ts=this._transformState;ts.transforming=!1;var cb=ts.writecb;if(cb===null)return this.emit("error",new ERR_MULTIPLE_CALLBACK);ts.writechunk=null,ts.writecb=null,data!=null&&this.push(data),cb(er);var rs=this._readableState;rs.reading=!1,(rs.needReadable||rs.length<rs.highWaterMark)&&this._read(rs.highWaterMark)}function Transform(options){if(!(this instanceof Transform))return new Transform(options);Duplex.call(this,options),this._transformState={afterTransform:afterTransform.bind(this),needTransform:!1,transforming:!1,writecb:null,writechunk:null,writeencoding:null},this._readableState.needReadable=!0,this._readableState.sync=!1,options&&(typeof options.transform=="function"&&(this._transform=options.transform),typeof options.flush=="function"&&(this._flush=options.flush)),this.on("prefinish",prefinish)}function prefinish(){var _this=this;typeof this._flush=="function"&&!this._readableState.destroyed?this._flush(function(er,data){done(_this,er,data)}):done(this,null,null)}Transform.prototype.push=function(chunk,encoding){return this._transformState.needTransform=!1,Duplex.prototype.push.call(this,chunk,encoding)};Transform.prototype._transform=function(chunk,encoding,cb){cb(new ERR_METHOD_NOT_IMPLEMENTED("_transform()"))};Transform.prototype._write=function(chunk,encoding,cb){var ts=this._transformState;if(ts.writecb=cb,ts.writechunk=chunk,ts.writeencoding=encoding,!ts.transforming){var rs=this._readableState;(ts.needTransform||rs.needReadable||rs.length<rs.highWaterMark)&&this._read(rs.highWaterMark)}};Transform.prototype._read=function(n){var ts=this._transformState;ts.writechunk!==null&&!ts.transforming?(ts.transforming=!0,this._transform(ts.writechunk,ts.writeencoding,ts.afterTransform)):ts.needTransform=!0};Transform.prototype._destroy=function(err,cb){Duplex.prototype._destroy.call(this,err,function(err2){cb(err2)})};function done(stream,er,data){if(er)return stream.emit("error",er);if(data!=null&&stream.push(data),stream._writableState.length)throw new ERR_TRANSFORM_WITH_LENGTH_0;if(stream._transformState.transforming)throw new ERR_TRANSFORM_ALREADY_TRANSFORMING;return stream.push(null)}}});var require_stream_passthrough=__commonJS({"node_modules/readable-stream/lib/_stream_passthrough.js"(exports2,module2){"use strict";module2.exports=PassThrough;var Transform=require_stream_transform();require_inherits()(PassThrough,Transform);function PassThrough(options){if(!(this instanceof PassThrough))return new PassThrough(options);Transform.call(this,options)}PassThrough.prototype._transform=function(chunk,encoding,cb){cb(null,chunk)}}});var require_pipeline=__commonJS({"node_modules/readable-stream/lib/internal/streams/pipeline.js"(exports2,module2){"use strict";var eos;function once(callback){var called=!1;return function(){called||(called=!0,callback.apply(void 0,arguments))}}var _require$codes=require_errors4().codes,ERR_MISSING_ARGS=_require$codes.ERR_MISSING_ARGS,ERR_STREAM_DESTROYED=_require$codes.ERR_STREAM_DESTROYED;function noop(err){if(err)throw err}function isRequest(stream){return stream.setHeader&&typeof stream.abort=="function"}function destroyer(stream,reading,writing,callback){callback=once(callback);var closed=!1;stream.on("close",function(){closed=!0}),eos===void 0&&(eos=require_end_of_stream()),eos(stream,{readable:reading,writable:writing},function(err){if(err)return callback(err);closed=!0,callback()});var destroyed=!1;return function(err){if(!closed&&!destroyed){if(destroyed=!0,isRequest(stream))return stream.abort();if(typeof stream.destroy=="function")return stream.destroy();callback(err||new ERR_STREAM_DESTROYED("pipe"))}}}function call(fn){fn()}function pipe(from,to){return from.pipe(to)}function popCallback(streams){return!streams.length||typeof streams[streams.length-1]!="function"?noop:streams.pop()}function pipeline(){for(var _len=arguments.length,streams=new Array(_len),_key=0;_key<_len;_key++)streams[_key]=arguments[_key];var callback=popCallback(streams);if(Array.isArray(streams[0])&&(streams=streams[0]),streams.length<2)throw new ERR_MISSING_ARGS("streams");var error,destroys=streams.map(function(stream,i){var reading=i<streams.length-1,writing=i>0;return destroyer(stream,reading,writing,function(err){error||(error=err),err&&destroys.forEach(call),!reading&&(destroys.forEach(call),callback(error))})});return streams.reduce(pipe)}module2.exports=pipeline}});var require_readable=__commonJS({"node_modules/readable-stream/readable.js"(exports2,module2){var Stream=require("stream");process.env.READABLE_STREAM==="disable"&&Stream?(module2.exports=Stream.Readable,Object.assign(module2.exports,Stream),module2.exports.Stream=Stream):(exports2=module2.exports=require_stream_readable(),exports2.Stream=Stream||exports2,exports2.Readable=exports2,exports2.Writable=require_stream_writable(),exports2.Duplex=require_stream_duplex(),exports2.Transform=require_stream_transform(),exports2.PassThrough=require_stream_passthrough(),exports2.finished=require_end_of_stream(),exports2.pipeline=require_pipeline())}});var require_buffer_from=__commonJS({"node_modules/buffer-from/index.js"(exports2,module2){var toString=Object.prototype.toString,isModern=typeof Buffer<"u"&&typeof Buffer.alloc=="function"&&typeof Buffer.allocUnsafe=="function"&&typeof Buffer.from=="function";function isArrayBuffer(input){return toString.call(input).slice(8,-1)==="ArrayBuffer"}function fromArrayBuffer(obj,byteOffset,length){byteOffset>>>=0;var maxLength=obj.byteLength-byteOffset;if(maxLength<0)throw new RangeError("'offset' is out of bounds");if(length===void 0)length=maxLength;else if(length>>>=0,length>maxLength)throw new RangeError("'length' is out of bounds");return isModern?Buffer.from(obj.slice(byteOffset,byteOffset+length)):new Buffer(new Uint8Array(obj.slice(byteOffset,byteOffset+length)))}function fromString(string,encoding){if((typeof encoding!="string"||encoding==="")&&(encoding="utf8"),!Buffer.isEncoding(encoding))throw new TypeError('"encoding" must be a valid string encoding');return isModern?Buffer.from(string,encoding):new Buffer(string,encoding)}function bufferFrom(value,encodingOrOffset,length){if(typeof value=="number")throw new TypeError('"value" argument must not be a number');return isArrayBuffer(value)?fromArrayBuffer(value,encodingOrOffset,length):typeof value=="string"?fromString(value,encodingOrOffset):isModern?Buffer.from(value):new Buffer(value)}module2.exports=bufferFrom}});var require_typedarray=__commonJS({"node_modules/typedarray/index.js"(exports2){var undefined2=void 0,MAX_ARRAY_LENGTH=1e5,ECMAScript=(function(){var opts=Object.prototype.toString,ophop=Object.prototype.hasOwnProperty;return{Class:function(v){return opts.call(v).replace(/^\[object *|\]$/g,"")},HasProperty:function(o,p){return p in o},HasOwnProperty:function(o,p){return ophop.call(o,p)},IsCallable:function(o){return typeof o=="function"},ToInt32:function(v){return v>>0},ToUint32:function(v){return v>>>0}}})(),LN2=Math.LN2,abs=Math.abs,floor=Math.floor,log=Math.log,min=Math.min,pow=Math.pow,round=Math.round;function configureProperties(obj){if(getOwnPropNames&&defineProp){var props=getOwnPropNames(obj),i;for(i=0;i<props.length;i+=1)defineProp(obj,props[i],{value:obj[props[i]],writable:!1,enumerable:!1,configurable:!1})}}var defineProp;Object.defineProperty&&(function(){try{return Object.defineProperty({},"x",{}),!0}catch{return!1}})()?defineProp=Object.defineProperty:defineProp=function(o,p,desc){if(!o===Object(o))throw new TypeError("Object.defineProperty called on non-object");return ECMAScript.HasProperty(desc,"get")&&Object.prototype.__defineGetter__&&Object.prototype.__defineGetter__.call(o,p,desc.get),ECMAScript.HasProperty(desc,"set")&&Object.prototype.__defineSetter__&&Object.prototype.__defineSetter__.call(o,p,desc.set),ECMAScript.HasProperty(desc,"value")&&(o[p]=desc.value),o};var getOwnPropNames=Object.getOwnPropertyNames||function(o){if(o!==Object(o))throw new TypeError("Object.getOwnPropertyNames called on non-object");var props=[],p;for(p in o)ECMAScript.HasOwnProperty(o,p)&&props.push(p);return props};function makeArrayAccessors(obj){if(!defineProp)return;if(obj.length>MAX_ARRAY_LENGTH)throw new RangeError("Array too large for polyfill");function makeArrayAccessor(index){defineProp(obj,index,{get:function(){return obj._getter(index)},set:function(v){obj._setter(index,v)},enumerable:!0,configurable:!1})}var i;for(i=0;i<obj.length;i+=1)makeArrayAccessor(i)}function as_signed(value,bits){var s=32-bits;return value<<s>>s}function as_unsigned(value,bits){var s=32-bits;return value<<s>>>s}function packI8(n){return[n&255]}function unpackI8(bytes){return as_signed(bytes[0],8)}function packU8(n){return[n&255]}function unpackU8(bytes){return as_unsigned(bytes[0],8)}function packU8Clamped(n){return n=round(Number(n)),[n<0?0:n>255?255:n&255]}function packI16(n){return[n>>8&255,n&255]}function unpackI16(bytes){return as_signed(bytes[0]<<8|bytes[1],16)}function packU16(n){return[n>>8&255,n&255]}function unpackU16(bytes){return as_unsigned(bytes[0]<<8|bytes[1],16)}function packI32(n){return[n>>24&255,n>>16&255,n>>8&255,n&255]}function unpackI32(bytes){return as_signed(bytes[0]<<24|bytes[1]<<16|bytes[2]<<8|bytes[3],32)}function packU32(n){return[n>>24&255,n>>16&255,n>>8&255,n&255]}function unpackU32(bytes){return as_unsigned(bytes[0]<<24|bytes[1]<<16|bytes[2]<<8|bytes[3],32)}function packIEEE754(v,ebits,fbits){var bias=(1<<ebits-1)-1,s,e,f,ln,i,bits,str,bytes;function roundToEven(n){var w=floor(n),f2=n-w;return f2<.5?w:f2>.5||w%2?w+1:w}for(v!==v?(e=(1<<ebits)-1,f=pow(2,fbits-1),s=0):v===1/0||v===-1/0?(e=(1<<ebits)-1,f=0,s=v<0?1:0):v===0?(e=0,f=0,s=1/v===-1/0?1:0):(s=v<0,v=abs(v),v>=pow(2,1-bias)?(e=min(floor(log(v)/LN2),1023),f=roundToEven(v/pow(2,e)*pow(2,fbits)),f/pow(2,fbits)>=2&&(e=e+1,f=1),e>bias?(e=(1<<ebits)-1,f=0):(e=e+bias,f=f-pow(2,fbits))):(e=0,f=roundToEven(v/pow(2,1-bias-fbits)))),bits=[],i=fbits;i;i-=1)bits.push(f%2?1:0),f=floor(f/2);for(i=ebits;i;i-=1)bits.push(e%2?1:0),e=floor(e/2);for(bits.push(s?1:0),bits.reverse(),str=bits.join(""),bytes=[];str.length;)bytes.push(parseInt(str.substring(0,8),2)),str=str.substring(8);return bytes}function unpackIEEE754(bytes,ebits,fbits){var bits=[],i,j,b,str,bias,s,e,f;for(i=bytes.length;i;i-=1)for(b=bytes[i-1],j=8;j;j-=1)bits.push(b%2?1:0),b=b>>1;return bits.reverse(),str=bits.join(""),bias=(1<<ebits-1)-1,s=parseInt(str.substring(0,1),2)?-1:1,e=parseInt(str.substring(1,1+ebits),2),f=parseInt(str.substring(1+ebits),2),e===(1<<ebits)-1?f!==0?NaN:s*(1/0):e>0?s*pow(2,e-bias)*(1+f/pow(2,fbits)):f!==0?s*pow(2,-(bias-1))*(f/pow(2,fbits)):s<0?-0:0}function unpackF64(b){return unpackIEEE754(b,11,52)}function packF64(v){return packIEEE754(v,11,52)}function unpackF32(b){return unpackIEEE754(b,8,23)}function packF32(v){return packIEEE754(v,8,23)}(function(){var ArrayBuffer2=function(length){if(length=ECMAScript.ToInt32(length),length<0)throw new RangeError("ArrayBuffer size is not a small enough positive integer");this.byteLength=length,this._bytes=[],this._bytes.length=length;var i;for(i=0;i<this.byteLength;i+=1)this._bytes[i]=0;configureProperties(this)};exports2.ArrayBuffer=exports2.ArrayBuffer||ArrayBuffer2;var ArrayBufferView=function(){};function makeConstructor(bytesPerElement,pack,unpack){var ctor;return ctor=function(buffer,byteOffset,length){var array,sequence,i,s;if(!arguments.length||typeof arguments[0]=="number"){if(this.length=ECMAScript.ToInt32(arguments[0]),length<0)throw new RangeError("ArrayBufferView size is not a small enough positive integer");this.byteLength=this.length*this.BYTES_PER_ELEMENT,this.buffer=new ArrayBuffer2(this.byteLength),this.byteOffset=0}else if(typeof arguments[0]=="object"&&arguments[0].constructor===ctor)for(array=arguments[0],this.length=array.length,this.byteLength=this.length*this.BYTES_PER_ELEMENT,this.buffer=new ArrayBuffer2(this.byteLength),this.byteOffset=0,i=0;i<this.length;i+=1)this._setter(i,array._getter(i));else if(typeof arguments[0]=="object"&&!(arguments[0]instanceof ArrayBuffer2||ECMAScript.Class(arguments[0])==="ArrayBuffer"))for(sequence=arguments[0],this.length=ECMAScript.ToUint32(sequence.length),this.byteLength=this.length*this.BYTES_PER_ELEMENT,this.buffer=new ArrayBuffer2(this.byteLength),this.byteOffset=0,i=0;i<this.length;i+=1)s=sequence[i],this._setter(i,Number(s));else if(typeof arguments[0]=="object"&&(arguments[0]instanceof ArrayBuffer2||ECMAScript.Class(arguments[0])==="ArrayBuffer")){if(this.buffer=buffer,this.byteOffset=ECMAScript.ToUint32(byteOffset),this.byteOffset>this.buffer.byteLength)throw new RangeError("byteOffset out of range");if(this.byteOffset%this.BYTES_PER_ELEMENT)throw new RangeError("ArrayBuffer length minus the byteOffset is not a multiple of the element size.");if(arguments.length<3){if(this.byteLength=this.buffer.byteLength-this.byteOffset,this.byteLength%this.BYTES_PER_ELEMENT)throw new RangeError("length of buffer minus byteOffset not a multiple of the element size");this.length=this.byteLength/this.BYTES_PER_ELEMENT}else this.length=ECMAScript.ToUint32(length),this.byteLength=this.length*this.BYTES_PER_ELEMENT;if(this.byteOffset+this.byteLength>this.buffer.byteLength)throw new RangeError("byteOffset and length reference an area beyond the end of the buffer")}else throw new TypeError("Unexpected argument type(s)");this.constructor=ctor,configureProperties(this),makeArrayAccessors(this)},ctor.prototype=new ArrayBufferView,ctor.prototype.BYTES_PER_ELEMENT=bytesPerElement,ctor.prototype._pack=pack,ctor.prototype._unpack=unpack,ctor.BYTES_PER_ELEMENT=bytesPerElement,ctor.prototype._getter=function(index){if(arguments.length<1)throw new SyntaxError("Not enough arguments");if(index=ECMAScript.ToUint32(index),index>=this.length)return undefined2;var bytes=[],i,o;for(i=0,o=this.byteOffset+index*this.BYTES_PER_ELEMENT;i<this.BYTES_PER_ELEMENT;i+=1,o+=1)bytes.push(this.buffer._bytes[o]);return this._unpack(bytes)},ctor.prototype.get=ctor.prototype._getter,ctor.prototype._setter=function(index,value){if(arguments.length<2)throw new SyntaxError("Not enough arguments");if(index=ECMAScript.ToUint32(index),index>=this.length)return undefined2;var bytes=this._pack(value),i,o;for(i=0,o=this.byteOffset+index*this.BYTES_PER_ELEMENT;i<this.BYTES_PER_ELEMENT;i+=1,o+=1)this.buffer._bytes[o]=bytes[i]},ctor.prototype.set=function(index,value){if(arguments.length<1)throw new SyntaxError("Not enough arguments");var array,sequence,offset,len,i,s,d,byteOffset,byteLength,tmp;if(typeof arguments[0]=="object"&&arguments[0].constructor===this.constructor){if(array=arguments[0],offset=ECMAScript.ToUint32(arguments[1]),offset+array.length>this.length)throw new RangeError("Offset plus length of array is out of range");if(byteOffset=this.byteOffset+offset*this.BYTES_PER_ELEMENT,byteLength=array.length*this.BYTES_PER_ELEMENT,array.buffer===this.buffer){for(tmp=[],i=0,s=array.byteOffset;i<byteLength;i+=1,s+=1)tmp[i]=array.buffer._bytes[s];for(i=0,d=byteOffset;i<byteLength;i+=1,d+=1)this.buffer._bytes[d]=tmp[i]}else for(i=0,s=array.byteOffset,d=byteOffset;i<byteLength;i+=1,s+=1,d+=1)this.buffer._bytes[d]=array.buffer._bytes[s]}else if(typeof arguments[0]=="object"&&typeof arguments[0].length<"u"){if(sequence=arguments[0],len=ECMAScript.ToUint32(sequence.length),offset=ECMAScript.ToUint32(arguments[1]),offset+len>this.length)throw new RangeError("Offset plus length of array is out of range");for(i=0;i<len;i+=1)s=sequence[i],this._setter(offset+i,Number(s))}else throw new TypeError("Unexpected argument type(s)")},ctor.prototype.subarray=function(start,end){function clamp(v,min2,max){return v<min2?min2:v>max?max:v}start=ECMAScript.ToInt32(start),end=ECMAScript.ToInt32(end),arguments.length<1&&(start=0),arguments.length<2&&(end=this.length),start<0&&(start=this.length+start),end<0&&(end=this.length+end),start=clamp(start,0,this.length),end=clamp(end,0,this.length);var len=end-start;return len<0&&(len=0),new this.constructor(this.buffer,this.byteOffset+start*this.BYTES_PER_ELEMENT,len)},ctor}var Int8Array2=makeConstructor(1,packI8,unpackI8),Uint8Array2=makeConstructor(1,packU8,unpackU8),Uint8ClampedArray2=makeConstructor(1,packU8Clamped,unpackU8),Int16Array2=makeConstructor(2,packI16,unpackI16),Uint16Array2=makeConstructor(2,packU16,unpackU16),Int32Array2=makeConstructor(4,packI32,unpackI32),Uint32Array2=makeConstructor(4,packU32,unpackU32),Float32Array2=makeConstructor(4,packF32,unpackF32),Float64Array2=makeConstructor(8,packF64,unpackF64);exports2.Int8Array=exports2.Int8Array||Int8Array2,exports2.Uint8Array=exports2.Uint8Array||Uint8Array2,exports2.Uint8ClampedArray=exports2.Uint8ClampedArray||Uint8ClampedArray2,exports2.Int16Array=exports2.Int16Array||Int16Array2,exports2.Uint16Array=exports2.Uint16Array||Uint16Array2,exports2.Int32Array=exports2.Int32Array||Int32Array2,exports2.Uint32Array=exports2.Uint32Array||Uint32Array2,exports2.Float32Array=exports2.Float32Array||Float32Array2,exports2.Float64Array=exports2.Float64Array||Float64Array2})();(function(){function r(array,index){return ECMAScript.IsCallable(array.get)?array.get(index):array[index]}var IS_BIG_ENDIAN=(function(){var u16array=new exports2.Uint16Array([4660]),u8array=new exports2.Uint8Array(u16array.buffer);return r(u8array,0)===18})(),DataView2=function(buffer,byteOffset,byteLength){if(arguments.length===0)buffer=new exports2.ArrayBuffer(0);else if(!(buffer instanceof exports2.ArrayBuffer||ECMAScript.Class(buffer)==="ArrayBuffer"))throw new TypeError("TypeError");if(this.buffer=buffer||new exports2.ArrayBuffer(0),this.byteOffset=ECMAScript.ToUint32(byteOffset),this.byteOffset>this.buffer.byteLength)throw new RangeError("byteOffset out of range");if(arguments.length<3?this.byteLength=this.buffer.byteLength-this.byteOffset:this.byteLength=ECMAScript.ToUint32(byteLength),this.byteOffset+this.byteLength>this.buffer.byteLength)throw new RangeError("byteOffset and length reference an area beyond the end of the buffer");configureProperties(this)};function makeGetter(arrayType){return function(byteOffset,littleEndian){if(byteOffset=ECMAScript.ToUint32(byteOffset),byteOffset+arrayType.BYTES_PER_ELEMENT>this.byteLength)throw new RangeError("Array index out of range");byteOffset+=this.byteOffset;var uint8Array=new exports2.Uint8Array(this.buffer,byteOffset,arrayType.BYTES_PER_ELEMENT),bytes=[],i;for(i=0;i<arrayType.BYTES_PER_ELEMENT;i+=1)bytes.push(r(uint8Array,i));return!!littleEndian==!!IS_BIG_ENDIAN&&bytes.reverse(),r(new arrayType(new exports2.Uint8Array(bytes).buffer),0)}}DataView2.prototype.getUint8=makeGetter(exports2.Uint8Array),DataView2.prototype.getInt8=makeGetter(exports2.Int8Array),DataView2.prototype.getUint16=makeGetter(exports2.Uint16Array),DataView2.prototype.getInt16=makeGetter(exports2.Int16Array),DataView2.prototype.getUint32=makeGetter(exports2.Uint32Array),DataView2.prototype.getInt32=makeGetter(exports2.Int32Array),DataView2.prototype.getFloat32=makeGetter(exports2.Float32Array),DataView2.prototype.getFloat64=makeGetter(exports2.Float64Array);function makeSetter(arrayType){return function(byteOffset,value,littleEndian){if(byteOffset=ECMAScript.ToUint32(byteOffset),byteOffset+arrayType.BYTES_PER_ELEMENT>this.byteLength)throw new RangeError("Array index out of range");var typeArray=new arrayType([value]),byteArray=new exports2.Uint8Array(typeArray.buffer),bytes=[],i,byteView;for(i=0;i<arrayType.BYTES_PER_ELEMENT;i+=1)bytes.push(r(byteArray,i));!!littleEndian==!!IS_BIG_ENDIAN&&bytes.reverse(),byteView=new exports2.Uint8Array(this.buffer,byteOffset,arrayType.BYTES_PER_ELEMENT),byteView.set(bytes)}}DataView2.prototype.setUint8=makeSetter(exports2.Uint8Array),DataView2.prototype.setInt8=makeSetter(exports2.Int8Array),DataView2.prototype.setUint16=makeSetter(exports2.Uint16Array),DataView2.prototype.setInt16=makeSetter(exports2.Int16Array),DataView2.prototype.setUint32=makeSetter(exports2.Uint32Array),DataView2.prototype.setInt32=makeSetter(exports2.Int32Array),DataView2.prototype.setFloat32=makeSetter(exports2.Float32Array),DataView2.prototype.setFloat64=makeSetter(exports2.Float64Array),exports2.DataView=exports2.DataView||DataView2})()}});var require_concat_stream=__commonJS({"node_modules/multer/node_modules/concat-stream/index.js"(exports2,module2){var Writable=require_readable().Writable,inherits=require_inherits(),bufferFrom=require_buffer_from();typeof Uint8Array>"u"?U8=require_typedarray().Uint8Array:U8=Uint8Array;var U8;function ConcatStream(opts,cb){if(!(this instanceof ConcatStream))return new ConcatStream(opts,cb);typeof opts=="function"&&(cb=opts,opts={}),opts||(opts={});var encoding=opts.encoding,shouldInferEncoding=!1;encoding?(encoding=String(encoding).toLowerCase(),(encoding==="u8"||encoding==="uint8")&&(encoding="uint8array")):shouldInferEncoding=!0,Writable.call(this,{objectMode:!0}),this.encoding=encoding,this.shouldInferEncoding=shouldInferEncoding,cb&&this.on("finish",function(){cb(this.getBody())}),this.body=[]}module2.exports=ConcatStream;inherits(ConcatStream,Writable);ConcatStream.prototype._write=function(chunk,enc,next){this.body.push(chunk),next()};ConcatStream.prototype.inferEncoding=function(buff){var firstBuffer=buff===void 0?this.body[0]:buff;return Buffer.isBuffer(firstBuffer)?"buffer":typeof Uint8Array<"u"&&firstBuffer instanceof Uint8Array?"uint8array":Array.isArray(firstBuffer)?"array":typeof firstBuffer=="string"?"string":Object.prototype.toString.call(firstBuffer)==="[object Object]"?"object":"buffer"};ConcatStream.prototype.getBody=function(){return!this.encoding&&this.body.length===0?[]:(this.shouldInferEncoding&&(this.encoding=this.inferEncoding()),this.encoding==="array"?arrayConcat(this.body):this.encoding==="string"?stringConcat(this.body):this.encoding==="buffer"?bufferConcat(this.body):this.encoding==="uint8array"?u8Concat(this.body):this.body)};function isArrayish(arr){return/Array\]$/.test(Object.prototype.toString.call(arr))}function isBufferish(p){return typeof p=="string"||isArrayish(p)||p&&typeof p.subarray=="function"}function stringConcat(parts){for(var strings=[],needsToString=!1,i=0;i<parts.length;i++){var p=parts[i];typeof p=="string"||Buffer.isBuffer(p)?strings.push(p):isBufferish(p)?strings.push(bufferFrom(p)):strings.push(bufferFrom(String(p)))}return Buffer.isBuffer(parts[0])?(strings=Buffer.concat(strings),strings=strings.toString("utf8")):strings=strings.join(""),strings}function bufferConcat(parts){for(var bufs=[],i=0;i<parts.length;i++){var p=parts[i];Buffer.isBuffer(p)?bufs.push(p):isBufferish(p)?bufs.push(bufferFrom(p)):bufs.push(bufferFrom(String(p)))}return Buffer.concat(bufs)}function arrayConcat(parts){for(var res=[],i=0;i<parts.length;i++)res.push.apply(res,parts[i]);return res}function u8Concat(parts){for(var len=0,i=0;i<parts.length;i++)typeof parts[i]=="string"&&(parts[i]=bufferFrom(parts[i])),len+=parts[i].length;for(var u8=new U8(len),i=0,offset=0;i<parts.length;i++)for(var part=parts[i],j=0;j<part.length;j++)u8[offset++]=part[j];return u8}}});var require_memory=__commonJS({"node_modules/multer/storage/memory.js"(exports2,module2){var concat=require_concat_stream();function MemoryStorage(opts){}MemoryStorage.prototype._handleFile=function(req,file,cb){file.stream.pipe(concat({encoding:"buffer"},function(data){cb(null,{buffer:data,size:data.length})}))};MemoryStorage.prototype._removeFile=function(req,file,cb){delete file.buffer,cb(null)};module2.exports=function(opts){return new MemoryStorage(opts)}}});var require_multer=__commonJS({"node_modules/multer/index.js"(exports2,module2){var makeMiddleware=require_make_middleware(),diskStorage=require_disk(),memoryStorage=require_memory(),MulterError=require_multer_error();function allowAll(req,file,cb){cb(null,!0)}function Multer(options){options.storage?this.storage=options.storage:options.dest?this.storage=diskStorage({destination:options.dest}):this.storage=memoryStorage(),this.limits=options.limits,this.preservePath=options.preservePath,this.defParamCharset=options.defParamCharset||"latin1",this.fileFilter=options.fileFilter||allowAll}Multer.prototype._makeMiddleware=function(fields,fileStrategy){function setup(){var fileFilter=this.fileFilter,filesLeft=Object.create(null);fields.forEach(function(field){typeof field.maxCount=="number"?filesLeft[field.name]=field.maxCount:filesLeft[field.name]=1/0});function wrappedFileFilter(req,file,cb){if((filesLeft[file.fieldname]||0)<=0)return cb(new MulterError("LIMIT_UNEXPECTED_FILE",file.fieldname));filesLeft[file.fieldname]-=1,fileFilter(req,file,cb)}return{limits:this.limits,preservePath:this.preservePath,defParamCharset:this.defParamCharset,storage:this.storage,fileFilter:wrappedFileFilter,fileStrategy}}return makeMiddleware(setup.bind(this))};Multer.prototype.single=function(name){return this._makeMiddleware([{name,maxCount:1}],"VALUE")};Multer.prototype.array=function(name,maxCount){return this._makeMiddleware([{name,maxCount}],"ARRAY")};Multer.prototype.fields=function(fields){return this._makeMiddleware(fields,"OBJECT")};Multer.prototype.none=function(){return this._makeMiddleware([],"NONE")};Multer.prototype.any=function(){function setup(){return{limits:this.limits,preservePath:this.preservePath,defParamCharset:this.defParamCharset,storage:this.storage,fileFilter:this.fileFilter,fileStrategy:"ARRAY"}}return makeMiddleware(setup.bind(this))};function multer(options){if(options===void 0)return new Multer({});if(typeof options=="object"&&options!==null)return new Multer(options);throw new TypeError("Expected object for argument options")}module2.exports=multer;module2.exports.diskStorage=diskStorage;module2.exports.memoryStorage=memoryStorage;module2.exports.MulterError=MulterError}});var require_ua_parser=__commonJS({"node_modules/ua-parser-js/src/main/ua-parser.js"(exports2,module2){(function(window2,undefined2){"use strict";var LIBVERSION="2.0.10",UA_MAX_LENGTH=500,USER_AGENT="user-agent",EMPTY="",UNKNOWN="?",TYPEOF={FUNCTION:"function",OBJECT:"object",STRING:"string",UNDEFINED:"undefined"},BROWSER="browser",CPU="cpu",DEVICE="device",ENGINE="engine",OS="os",RESULT="result",NAME="name",TYPE="type",VENDOR="vendor",VERSION="version",ARCHITECTURE="architecture",MAJOR="major",MODEL="model",CONSOLE="console",MOBILE="mobile",TABLET="tablet",SMARTTV="smarttv",WEARABLE="wearable",XR="xr",EMBEDDED="embedded",FETCHER="fetcher",INAPP="inapp",BRANDS="brands",FORMFACTORS="formFactors",FULLVERLIST="fullVersionList",PLATFORM="platform",PLATFORMVER="platformVersion",BITNESS="bitness",CH="sec-ch-ua",CH_FULL_VER_LIST=CH+"-full-version-list",CH_ARCH=CH+"-arch",CH_BITNESS=CH+"-"+BITNESS,CH_FORM_FACTORS=CH+"-form-factors",CH_MOBILE=CH+"-"+MOBILE,CH_MODEL=CH+"-"+MODEL,CH_PLATFORM=CH+"-"+PLATFORM,CH_PLATFORM_VER=CH_PLATFORM+"-version",CH_ALL_VALUES=[BRANDS,FULLVERLIST,MOBILE,MODEL,PLATFORM,PLATFORMVER,ARCHITECTURE,FORMFACTORS,BITNESS],AMAZON="Amazon",APPLE="Apple",ASUS="ASUS",BLACKBERRY="BlackBerry",GOOGLE="Google",HUAWEI="Huawei",LENOVO="Lenovo",HONOR="Honor",LG="LG",MICROSOFT="Microsoft",MOTOROLA="Motorola",NVIDIA="Nvidia",ONEPLUS="OnePlus",OPPO="OPPO",SAMSUNG="Samsung",SHARP="Sharp",SONY="Sony",XIAOMI="Xiaomi",ZEBRA="Zebra",CHROME="Chrome",CHROMIUM="Chromium",CHROMECAST="Chromecast",EDGE="Edge",FIREFOX="Firefox",OPERA="Opera",FACEBOOK="Facebook",SOGOU="Sogou",PREFIX_MOBILE="Mobile ",SUFFIX_BROWSER=" Browser",WINDOWS="Windows",isWindow=typeof window2!==TYPEOF.UNDEFINED,NAVIGATOR=isWindow&&window2.navigator?window2.navigator:undefined2,NAVIGATOR_UADATA=NAVIGATOR&&NAVIGATOR.userAgentData?NAVIGATOR.userAgentData:undefined2,extend=function(defaultRgx,extensions){var mergedRgx={},extraRgx=extensions;if(!isExtensions(extensions)){extraRgx={};for(var i in extensions)for(var j in extensions[i])extraRgx[j]=extensions[i][j].concat(extraRgx[j]?extraRgx[j]:[])}for(var k in defaultRgx)mergedRgx[k]=extraRgx[k]&&extraRgx[k].length%2===0?extraRgx[k].concat(defaultRgx[k]):defaultRgx[k];return mergedRgx},enumerize=function(arr){for(var enums={},i=0;i<arr.length;i++)enums[arr[i].toUpperCase()]=arr[i];return enums},has=function(str1,str2){if(typeof str1===TYPEOF.OBJECT&&str1.length>0){for(var i in str1)if(lowerize(str2)==lowerize(str1[i]))return!0;return!1}return isString(str1)?lowerize(str2)==lowerize(str1):!1},isExtensions=function(obj,deep){for(var prop in obj)return/^(browser|cpu|device|engine|os)$/.test(prop)||(deep?isExtensions(obj[prop]):!1)},isString=function(val){return typeof val===TYPEOF.STRING},itemListToArray=function(header){if(!header)return undefined2;for(var arr=[],tokens=normalizeHeaderValue(header).split(","),i=0;i<tokens.length;i++)if(tokens[i].indexOf(";")>-1){var token=trim(tokens[i]).split(";v=");arr[i]={brand:token[0],version:token[1]}}else arr[i]=trim(tokens[i]);return arr},lowerize=function(str){return isString(str)?str.toLowerCase():str},majorize=function(version){return isString(version)?strip(/[^\d\.]/g,version).split(".")[0]:undefined2},normalizeHeaderValue=function(str){return isString(str)?trim(strip(/\\?\"/g,str),UA_MAX_LENGTH):undefined2},setProps=function(arr){for(var i in arr)if(arr.hasOwnProperty(i)){var propName=arr[i];typeof propName==TYPEOF.OBJECT&&propName.length==2?this[propName[0]]=propName[1]:this[propName]=undefined2}return this},strip=function(pattern,str){return isString(str)?str.replace(pattern,EMPTY):str},trim=function(str,len){return str=strip(/^\s\s*/,String(str)),typeof len===TYPEOF.UNDEFINED?str:str.substring(0,len)},rgxMapper=function(ua,arrays){if(!(!ua||!arrays))for(var i=0,j,k,p,q,matches,match;i<arrays.length&&!matches;){var regex=arrays[i],props=arrays[i+1];for(j=k=0;j<regex.length&&!matches&®ex[j];)if(matches=regex[j++].exec(ua),matches)for(p=0;p<props.length;p++)match=matches[++k],q=props[p],typeof q===TYPEOF.OBJECT&&q.length>0?q.length===2?typeof q[1]==TYPEOF.FUNCTION?this[q[0]]=q[1].call(this,match):this[q[0]]=q[1]:q.length>=3&&(typeof q[1]===TYPEOF.FUNCTION&&!(q[1].exec&&q[1].test)?q.length>3?this[q[0]]=match?q[1].apply(this,q.slice(2)):undefined2:this[q[0]]=match?q[1].call(this,match,q[2]):undefined2:q.length==3?this[q[0]]=match?match.replace(q[1],q[2]):undefined2:q.length==4?this[q[0]]=match?q[3].call(this,match.replace(q[1],q[2])):undefined2:q.length>4&&(this[q[0]]=match?q[3].apply(this,[match.replace(q[1],q[2])].concat(q.slice(4))):undefined2)):this[q]=match||undefined2;i+=2}},strTest=function(str,map){return map.test.test(str)?map.ifTrue:map.ifFalse},strMapper=function(str,map){for(var i in map)if(typeof map[i]===TYPEOF.OBJECT&&map[i].length>0){for(var j=0;j<map[i].length;j++)if(has(map[i][j],str))return i===UNKNOWN?undefined2:i}else if(has(map[i],str))return i===UNKNOWN?undefined2:i;return map.hasOwnProperty("*")?map["*"]:str},windowsVersionMap={ME:"4.90","NT 3.51":"3.51","NT 4.0":"4.0",2e3:["5.0","5.01"],XP:["5.1","5.2"],Vista:"6.0",7:"6.1",8:"6.2","8.1":"6.3",10:["6.4","10.0"],NT:""},formFactorsMap={embedded:"Automotive",mobile:"Mobile",tablet:["Tablet","EInk"],smarttv:"TV",wearable:"Watch",xr:["VR","XR"],"?":["Desktop","Unknown"],"*":undefined2},browserHintsMap={Chrome:"Google Chrome",Edge:"Microsoft Edge","Edge WebView2":"Microsoft Edge WebView2","Chrome WebView":"Android WebView","Chrome Headless":"HeadlessChrome","Huawei Browser":"HuaweiBrowser","MIUI Browser":"Miui Browser","Opera Mobi":"OperaMobile",Yandex:"YaBrowser"},defaultRegexes={browser:[[/\b(?:crmo|crios)\/([\w\.]+)/i],[VERSION,[NAME,PREFIX_MOBILE+"Chrome"]],[/webview.+edge\/([\w\.]+)/i],[VERSION,[NAME,EDGE+" WebView"],[TYPE,INAPP]],[/edg(?:e|ios|a)?\/([\w\.]+)/i],[VERSION,[NAME,"Edge"]],[/(opera mini)\/([-\w\.]+)/i,/(opera [mobiletab]{3,6})\b.+version\/([-\w\.]+)/i,/(opera)(?:.+version\/|[\/ ]+)([\w\.]+)/i],[NAME,VERSION],[/opios[\/ ]+([\w\.]+)/i],[VERSION,[NAME,OPERA+" Mini"]],[/\bop(?:rg)?x\/([\w\.]+)/i],[VERSION,[NAME,OPERA+" GX"]],[/\bopr\/([\w\.]+)/i],[VERSION,[NAME,OPERA]],[/\bb[ai]*d(?:uhd|[ub]*[aekoprswx]{5,6})[\/ ]?([\w\.]+)/i],[VERSION,[NAME,"Baidu"]],[/\b(?:mxbrowser|mxios|myie2)\/?([-\w\.]*)\b/i],[VERSION,[NAME,"Maxthon"]],[/(kindle)\/([\w\.]+)/i,/(lunascape|maxthon|netfront|jasmine|blazer|sleipnir)[\/ ]?([\w\.]*)/i,/(avant|iemobile|slim(?:browser|boat|jet))[\/ ]?([\d\.]*)/i,/(?:ms|\()(ie) ([\w\.]+)/i,/(atlas|flock|rockmelt|midori|epiphany|silk|skyfire|bolt|iron|vivaldi|iridium|phantomjs|bowser|qupzilla|falkon|rekonq|puffin|whale(?!.+naver)|qqbrowserlite|duckduckgo|klar|helio|(?=comodo_)?dragon|otter|dooble|(?:hi|lg |ovi|qute)browser|palemoon)\/v?([-\w\.]+)/i,/(brave)(?: chrome)?\/([\d\.]+)/i,/(aloha|heytap|ovi|115|surf|qwant)browser\/([\d\.]+)/i,/(qwant)(?:ios|mobile)\/([\d\.]+)/i,/(ecosia|weibo)(?:__| \w+@)([\d\.]+)/i],[NAME,VERSION],[/quark(?:pc)?\/([-\w\.]+)/i],[VERSION,[NAME,"Quark"]],[/\bddg\/([\w\.]+)/i],[VERSION,[NAME,"DuckDuckGo"]],[/(?:\buc? ?browser|(?:juc.+)ucweb| ucpc)[\/ ]?([\w\.]+)/i],[VERSION,[NAME,"UCBrowser"]],[/microm.+\bqbcore\/([\w\.]+)/i,/\bqbcore\/([\w\.]+).+microm/i,/micromessenger\/([\w\.]+)/i],[VERSION,[NAME,"WeChat"]],[/konqueror\/([\w\.]+)/i],[VERSION,[NAME,"Konqueror"]],[/trident.+rv[: ]([\w\.]{1,9})\b.+like gecko/i],[VERSION,[NAME,"IE"]],[/ya(?:search)?browser\/([\w\.]+)/i],[VERSION,[NAME,"Yandex"]],[/slbrowser\/([\w\.]+)/i],[VERSION,[NAME,"Smart "+LENOVO+SUFFIX_BROWSER]],[/(av(?:ast|g|ira))\/([\w\.]+)/i],[[NAME,/(.+)/,"$1 Secure"+SUFFIX_BROWSER],VERSION],[/norton\/([\w\.]+)/i],[VERSION,[NAME,"Norton Private"+SUFFIX_BROWSER]],[/\bfocus\/([\w\.]+)/i],[VERSION,[NAME,FIREFOX+" Focus"]],[/ mms\/([\w\.]+)$/i],[VERSION,[NAME,OPERA+" Neon"]],[/ opt\/([\w\.]+)$/i],[VERSION,[NAME,OPERA+" Touch"]],[/coc_coc\w+\/([\w\.]+)/i],[VERSION,[NAME,"Coc Coc"]],[/dolfin\/([\w\.]+)/i],[VERSION,[NAME,"Dolphin"]],[/coast\/([\w\.]+)/i],[VERSION,[NAME,OPERA+" Coast"]],[/miuibrowser\/([\w\.]+)/i],[VERSION,[NAME,"MIUI"+SUFFIX_BROWSER]],[/fxios\/([\w\.-]+)/i],[VERSION,[NAME,PREFIX_MOBILE+FIREFOX]],[/\bqihoobrowser\/?([\w\.]*)/i],[VERSION,[NAME,"360"]],[/\b(qq)\/([\w\.]+)/i],[[NAME,/(.+)/,"$1Browser"],VERSION],[/(oculus|sailfish|huawei|vivo|pico)browser\/([\w\.]+)/i],[[NAME,/(.+)/,"$1"+SUFFIX_BROWSER],VERSION],[/ HBPC\/([\w\.]+)/],[VERSION,[NAME,HUAWEI+SUFFIX_BROWSER]],[/samsungbrowser\/([\w\.]+)/i],[VERSION,[NAME,SAMSUNG+" Internet"]],[/metasr[\/ ]?([\d\.]+)/i],[VERSION,[NAME,SOGOU+" Explorer"]],[/(sogou)mo\w+\/([\d\.]+)/i],[[NAME,SOGOU+" Mobile"],VERSION],[/(electron)\/([\w\.]+) safari/i,/(tesla)(?: qtcarbrowser|\/(20\d\d\.[-\w\.]+))/i,/m?(qqbrowser|2345(?=browser|chrome|explorer))\w*[\/ ]?v?([\w\.]+)/i],[NAME,VERSION],[/(lbbrowser|luakit|rekonq|steam(?= (clie|tenf|gameo)))/i],[NAME],[/ome\/([\w\.]+).+(iron(?= saf)|360(?=[es]e$))/i],[VERSION,NAME],[/((?:fban\/fbios|fb_iab\/fb4a)(?!.+fbav)|;fbav\/([\w\.]+);)/i],[[NAME,FACEBOOK],VERSION,[TYPE,INAPP]],[/(kakao(?:talk|story))[\/ ]([\w\.]+)/i,/(naver)\(.*?(\d+\.[\w\.]+).*\)/i,/(daum)apps[\/ ]([\w\.]+)/i,/safari (line)\/([\w\.]+)/i,/\b(line)\/([\w\.]+)\/iab/i,/(alipay)client\/([\w\.]+)/i,/(twitter)(?:and| f.+e\/([\w\.]+))/i,/(bing)(?:web|sapphire)\/([\w\.]+)/i,/(instagram|snapchat|klarna)[\/ ]([-\w\.]+)/i],[NAME,VERSION,[TYPE,INAPP]],[/\bgsa\/([\w\.]+) .*safari\//i],[VERSION,[NAME,"GSA"],[TYPE,INAPP]],[/(?:musical_ly|trill)(?:.+app_?version\/|_)([\w\.]+)/i],[VERSION,[NAME,"TikTok"],[TYPE,INAPP]],[/\[(linkedin)app\]/i],[NAME,[TYPE,INAPP]],[/(zalo(?:app)?)[\/\sa-z]*([\w\.-]+)/i],[[NAME,/(.+)/,"Zalo"],VERSION,[TYPE,INAPP]],[/(chromium)[\/ ]([-\w\.]+)/i],[NAME,VERSION],[/ome-(lighthouse)$/i],[NAME,[TYPE,FETCHER]],[/headlesschrome(?:\/([\w\.]+)| )/i],[VERSION,[NAME,CHROME+" Headless"]],[/wv\).+chrome\/([\w\.]+).+edgw\//i],[VERSION,[NAME,EDGE+" WebView2"],[TYPE,INAPP]],[/; wv\).+(chrome)\/([\w\.]+)/i],[[NAME,CHROME+" WebView"],VERSION,[TYPE,INAPP]],[/droid.+ version\/([\w\.]+)\b.+(?:mobile safari|safari)/i],[VERSION,[NAME,"Android"+SUFFIX_BROWSER]],[/chrome\/([\w\.]+) mobile/i],[VERSION,[NAME,PREFIX_MOBILE+"Chrome"]],[/(chrome|omniweb|arora|[tizenoka]{5} ?browser)\/v?([\w\.]+)/i],[NAME,VERSION],[/version\/([\w\.\,]+) .*mobile(?:\/\w+ | ?)safari/i],[VERSION,[NAME,PREFIX_MOBILE+"Safari"]],[/iphone .*mobile(?:\/\w+ | ?)safari/i],[[NAME,PREFIX_MOBILE+"Safari"]],[/version\/([\w\.\,]+) .*(safari)/i],[VERSION,NAME],[/webkit.+?(mobile ?safari|safari)(\/[\w\.]+)/i],[NAME,[VERSION,"1"]],[/(webkit|khtml)\/([\w\.]+)/i],[NAME,VERSION],[/(?:mobile|tablet);.*(firefox)\/([\w\.-]+)/i],[[NAME,PREFIX_MOBILE+FIREFOX],VERSION],[/(navigator|netscape\d?)\/([-\w\.]+)/i],[[NAME,"Netscape"],VERSION],[/(wolvic|librewolf)\/([\w\.]+)/i],[NAME,VERSION],[/mobile vr; rv:([\w\.]+)\).+firefox/i],[VERSION,[NAME,FIREFOX+" Reality"]],[/ekiohf.+(flow)\/([\w\.]+)/i,/(swiftfox)/i,/(icedragon|iceweasel|camino|chimera|fennec|maemo browser|minimo|conkeror)[\/ ]?([\w\.\+]+)/i,/(seamonkey|k-meleon|icecat|iceape|firebird|phoenix|basilisk|waterfox)\/([-\w\.]+)$/i,/(firefox)\/([\w\.]+)/i,/(mozilla)\/([\w\.]+(?= .+rv\:.+gecko\/\d+)|[0-4][\w\.]+(?!.+compatible))/i,/(amaya|dillo|doris|icab|ladybird|lynx|mosaic|netsurf|obigo|polaris|w3m|(?:go|ice|up)[\. ]?browser)[-\/ ]?v?([\w\.]+)/i,/\b(links) \(([\w\.]+)/i],[NAME,[VERSION,/_/g,"."]],[/(cobalt)\/([\w\.]+)/i],[NAME,[VERSION,/[^\d\.]+./,EMPTY]]],cpu:[[/\b((amd|x|x86[-_]?|wow|win)64)\b/i],[[ARCHITECTURE,"amd64"]],[/(ia32(?=;))/i,/\b((i[346]|x)86)(pc)?\b/i],[[ARCHITECTURE,"ia32"]],[/\b(aarch64|arm(v?[89]e?l?|_?64))\b/i],[[ARCHITECTURE,"arm64"]],[/\b(arm(v[67])?ht?n?[fl]p?)\b/i],[[ARCHITECTURE,"armhf"]],[/( (ce|mobile); ppc;|\/[\w\.]+arm\b)/i],[[ARCHITECTURE,"arm"]],[/ sun4\w[;\)]/i],[[ARCHITECTURE,"sparc"]],[/\b(avr32|ia64(?=;)|68k(?=\))|\barm(?=v([1-7]|[5-7]1)l?|;|eabi)|(irix|mips|sparc)(64)?\b|pa-risc)/i,/((ppc|powerpc)(64)?)( mac|;|\))/i,/(?:osf1|[freopnt]{3,4}bsd) (alpha)/i],[[ARCHITECTURE,/ower/,EMPTY,lowerize]],[/mc680.0/i],[[ARCHITECTURE,"68k"]],[/winnt.+\[axp/i],[[ARCHITECTURE,"alpha"]]],device:[[/\b(sch-i[89]0\d|shw-m380s|sm-[ptx]\w{2,4}|gt-[pn]\d{2,4}|sgh-t8[56]9|nexus 10)/i],[MODEL,[VENDOR,SAMSUNG],[TYPE,TABLET]],[/\b((?:s[cgp]h|gt|sm)-(?![lr])\w+|sc[g-]?[\d]+a?|galaxy nexus)/i,/samsung[- ]((?!sm-[lr]|browser)[-\w]+)/i,/sec-(sgh\w+)/i],[MODEL,[VENDOR,SAMSUNG],[TYPE,MOBILE]],[/(?:\/|\()(ip(?:hone|od)[\w, ]*)[\/\);]/i],[MODEL,[VENDOR,APPLE],[TYPE,MOBILE]],[/\b(?:ios|apple\w+)\/.+[\(\/](ipad)/i,/\b(ipad)[\d,]*[;\] ].+(mac |i(pad)?)os/i],[MODEL,[VENDOR,APPLE],[TYPE,TABLET]],[/(macintosh);/i],[MODEL,[VENDOR,APPLE]],[/\b(sh-?[altvz]?\d\d[a-ekm]?)/i],[MODEL,[VENDOR,SHARP],[TYPE,MOBILE]],[/\b((?:brt|eln|hey2?|gdi|jdn)-a?[lnw]09|(?:ag[rm]3?|jdn2|kob2)-a?[lw]0[09]hn)(?: bui|\)|;)/i],[MODEL,[VENDOR,HONOR],[TYPE,TABLET]],[/honor([-\w ]+)[;\)]/i],[MODEL,[VENDOR,HONOR],[TYPE,MOBILE]],[/\b((?:ag[rs][2356]?k?|bah[234]?|bg[2o]|bt[kv]|cmr|cpn|db[ry]2?|jdn2|got|kob2?k?|mon|pce|scm|sht?|[tw]gr|vrd)-[ad]?[lw][0125][09]b?|605hw|bg2-u03|(?:gem|fdr|m2|ple|t1)-[7a]0[1-4][lu]|t1-a2[13][lw]|mediapad[\w\. ]*(?= bui|\)))\b(?!.+d\/s)/i],[MODEL,[VENDOR,HUAWEI],[TYPE,TABLET]],[/(?:huawei) ?([-\w ]+)[;\)]/i,/\b(nexus 6p|\w{2,4}e?-[atu]?[ln][\dx][\dc][adnt]?)\b(?!.+d\/s)/i],[MODEL,[VENDOR,HUAWEI],[TYPE,MOBILE]],[/oid[^\)]+; (2[\dbc]{4}(182|283|rp\w{2})[cgl]|m2105k81a?c)(?: bui|\))/i,/\b(?:xiao)?((?:red)?mi[-_ ]?pad[\w- ]*)(?: bui|\))/i],[[MODEL,/_/g," "],[VENDOR,XIAOMI],[TYPE,TABLET]],[/\b; (\w+) build\/hm\1/i,/\b(hm[-_ ]?note?[_ ]?(?:\d\w)?) bui/i,/oid[^\)]+; (redmi[\-_ ]?(?:note|k)?[\w_ ]+|m?[12]\d[01]\d\w{3,6}|poco[\w ]+|(shark )?\w{3}-[ah]0|qin ?[1-3](s\+|ultra| pro)?)( bui|; wv|\))/i,/\b(mi[-_ ]?(?:a\d|one|one[_ ]plus|note|max|cc)?[_ ]?(?:\d{0,2}\w?)[_ ]?(?:plus|se|lite|pro)?( 5g|lte)?)(?: bui|\))/i,/; ([\w ]+) miui\/v?\d/i],[[MODEL,/_/g," "],[VENDOR,XIAOMI],[TYPE,MOBILE]],[/droid.+; (cph2[3-6]\d[13579]|((gm|hd)19|(ac|be|in|kb)20|(d[en]|eb|le|mt)21|ne22)[0-2]\d|p[g-l]\w[1m]10)\b/i,/(?:one)?(?:plus)? (a\d0\d\d)(?: b|\))/i],[MODEL,[VENDOR,ONEPLUS],[TYPE,MOBILE]],[/; (\w+) bui.+ oppo/i,/\b(cph[12]\d{3}|p(?:af|c[al]|d\w|e[ar])[mt]\d0|x9007|a101op)\b/i],[MODEL,[VENDOR,OPPO],[TYPE,MOBILE]],[/\b(opd2(\d{3}a?))(?: bui|\))/i],[MODEL,[VENDOR,strMapper,{OnePlus:["203","304","403","404","413","415"],"*":OPPO}],[TYPE,TABLET]],[/(vivo (5r?|6|8l?|go|one|s|x[il]?[2-4]?)[\w\+ ]*)(?: bui|\))/i],[MODEL,[VENDOR,"BLU"],[TYPE,MOBILE]],[/; vivo (\w+)(?: bui|\))/i,/\b(v[12]\d{3}\w?[at])(?: bui|;)/i],[MODEL,[VENDOR,"Vivo"],[TYPE,MOBILE]],[/\b(rmx[1-3]\d{3})(?: bui|;|\))/i],[MODEL,[VENDOR,"Realme"],[TYPE,MOBILE]],[/(ideatab[-\w ]+|602lv|d-42a|a101lv|a2109a|a3500-hv|s[56]000|pb-6505[my]|tb-?x?\d{3,4}(?:f[cu]|xu|[av])|yt\d?-[jx]?\d+[lfmx])( bui|;|\)|\/)/i,/lenovo ?(b[68]0[08]0-?[hf]?|tab(?:[\w- ]+?)|tb[\w-]{6,7})( bui|;|\)|\/)/i],[MODEL,[VENDOR,LENOVO],[TYPE,TABLET]],[/lenovo[-_ ]?([-\w ]+?)(?: bui|\)|\/)/i],[MODEL,[VENDOR,LENOVO],[TYPE,MOBILE]],[/\b(milestone|droid(?:[2-4x]| (?:bionic|x2|pro|razr))?:?( 4g)?)\b[\w ]+build\//i,/\bmot(?:orola)?[- ]([\w\s]+)(\)| bui)/i,/((?:moto(?! 360)[-\w\(\) ]+|xt\d{3,4}[cgkosw\+]?[-\d]*|nexus 6)(?= bui|\)))/i],[MODEL,[VENDOR,MOTOROLA],[TYPE,MOBILE]],[/\b(mz60\d|xoom[2 ]{0,2}) build\//i],[MODEL,[VENDOR,MOTOROLA],[TYPE,TABLET]],[/\b(?:lg)?([vl]k\-?\d{3}) bui| 3\.[-\w; ]{10}lg?-([06cv9]{3,4})/i],[MODEL,[VENDOR,LG],[TYPE,TABLET]],[/(lm(?:-?f100[nv]?|-[\w\.]+)(?= bui|\))|nexus [45])/i,/\blg[-e;\/ ]+(?!.*(?:browser|netcast|android tv|watch|webos))(\w+)/i,/\blg-?([\d\w]+) bui/i],[MODEL,[VENDOR,LG],[TYPE,MOBILE]],[/(nokia) (t[12][01])/i],[VENDOR,MODEL,[TYPE,TABLET]],[/(?:maemo|nokia).*(n900|lumia \d+|rm-\d+)/i,/nokia[-_ ]?(([-\w\. ]*?))( bui|\)|;|\/)/i],[[MODEL,/_/g," "],[TYPE,MOBILE],[VENDOR,"Nokia"]],[/(pixel (c|tablet))\b/i],[MODEL,[VENDOR,GOOGLE],[TYPE,TABLET]],[/droid.+;(?: google)? (g(01[13]a|020[aem]|025[jn]|1b60|1f8f|2ybb|4s1m|576d|5nz6|8hhn|8vou|a02099|c15s|d1yq|e2ae|ec77|gh2x|kv4x|p4bc|pj41|r83y|tt9q|ur25|wvk6)|pixel[\d ]*a?( pro)?( xl)?( fold)?( \(5g\))?)( bui|\))/i],[MODEL,[VENDOR,GOOGLE],[TYPE,MOBILE]],[/(google) (pixelbook( go)?)/i],[VENDOR,MODEL],[/droid.+; (a?\d[0-2]{2}so|[c-g]\d{4}|so[-gl]\w+|xq-\w\w\d\d)(?= bui|\).+chrome\/(?![1-6]{0,1}\d\.))/i],[MODEL,[VENDOR,SONY],[TYPE,MOBILE]],[/sony tablet [ps]/i,/\b(?:sony)?sgp\w+(?: bui|\))/i],[[MODEL,"Xperia Tablet"],[VENDOR,SONY],[TYPE,TABLET]],[/(alexa)webm/i,/(kf[a-z]{2}wi|aeo(?!bc)\w\w)( bui|\))/i,/(kf[a-z]+)( bui|\)).+silk\//i],[MODEL,[VENDOR,AMAZON],[TYPE,TABLET]],[/((?:sd|kf)[0349hijorstuw]+)( bui|\)).+silk\//i],[[MODEL,/(.+)/g,"Fire Phone $1"],[VENDOR,AMAZON],[TYPE,MOBILE]],[/(playbook);[-\w\),; ]+(rim)/i],[MODEL,VENDOR,[TYPE,TABLET]],[/\b((?:bb[a-f]|st[hv])100-\d)/i,/(?:blackberry|\(bb10;) (\w+)/i],[MODEL,[VENDOR,BLACKBERRY],[TYPE,MOBILE]],[/(?:\b|asus_)(transfo[prime ]{4,10} \w+|eeepc|slider \w+|nexus 7|padfone|p00[cj])/i],[MODEL,[VENDOR,ASUS],[TYPE,TABLET]],[/ (z[bes]6[027][012][km][ls]|zenfone \d\w?)\b/i],[MODEL,[VENDOR,ASUS],[TYPE,MOBILE]],[/(nexus 9)/i],[MODEL,[VENDOR,"HTC"],[TYPE,TABLET]],[/(htc)[-;_ ]{1,2}([\w ]+(?=\)| bui)|\w+)/i,/(zte)[- ]([\w ]+?)(?: bui|\/|\))/i,/(alcatel|geeksphone|nexian|panasonic(?!(?:;|\.))|sony(?!-bra))[-_ ]?([-\w]*)/i],[VENDOR,[MODEL,/_/g," "],[TYPE,MOBILE]],[/tcl (xess p17aa)/i,/droid [\w\.]+; ((?:8[14]9[16]|9(?:0(?:48|60|8[01])|1(?:3[27]|66)|2(?:6[69]|9[56])|466))[gqswx])(_\w(\w|\w\w))?(\)| bui)/i],[MODEL,[VENDOR,"TCL"],[TYPE,TABLET]],[/droid [\w\.]+; (418(?:7d|8v)|5087z|5102l|61(?:02[dh]|25[adfh]|27[ai]|56[dh]|59k|65[ah])|a509dl|t(?:43(?:0w|1[adepqu])|50(?:6d|7[adju])|6(?:09dl|10k|12b|71[efho]|76[hjk])|7(?:66[ahju]|67[hw]|7[045][bh]|71[hk]|73o|76[ho]|79w|81[hks]?|82h|90[bhsy]|99b)|810[hs]))(_\w(\w|\w\w))?(\)| bui)/i],[MODEL,[VENDOR,"TCL"],[TYPE,MOBILE]],[/(itel) ((\w+))/i],[[VENDOR,lowerize],MODEL,[TYPE,strMapper,{tablet:["p10001l","w7001"],"*":"mobile"}]],[/droid.+; ([ab][1-7]-?[0178a]\d\d?)/i],[MODEL,[VENDOR,"Acer"],[TYPE,TABLET]],[/droid.+; (m[1-5] note) bui/i,/\bmz-([-\w]{2,})/i],[MODEL,[VENDOR,"Meizu"],[TYPE,MOBILE]],[/; ((?:power )?armor(?:[\w ]{0,8}))(?: bui|\))/i],[MODEL,[VENDOR,"Ulefone"],[TYPE,MOBILE]],[/; (energy ?\w+)(?: bui|\))/i,/; energizer ([\w ]+)(?: bui|\))/i],[MODEL,[VENDOR,"Energizer"],[TYPE,MOBILE]],[/; cat (b35);/i,/; (b15q?|s22 flip|s48c|s62 pro)(?: bui|\))/i],[MODEL,[VENDOR,"Cat"],[TYPE,MOBILE]],[/((?:new )?andromax[\w- ]+)(?: bui|\))/i],[MODEL,[VENDOR,"Smartfren"],[TYPE,MOBILE]],[/droid.+; (a(in)?(0(15|59|6[35])|142)p?)/i],[MODEL,[VENDOR,"Nothing"],[TYPE,MOBILE]],[/; (x67 5g|tikeasy \w+|ac[1789]\d\w+)( b|\))/i,/archos ?(5|gamepad2?|([\w ]*[t1789]|hello) ?\d+[\w ]*)( b|\))/i],[MODEL,[VENDOR,"Archos"],[TYPE,TABLET]],[/archos ([\w ]+)( b|\))/i,/; (ac[3-6]\d\w{2,8})( b|\))/i],[MODEL,[VENDOR,"Archos"],[TYPE,MOBILE]],[/blackview ([-\w ]+)( b|\))/i,/; (bv\d{4}[-\w ]*)( b|\))/i],[MODEL,[VENDOR,"Blackview"],[TYPE,MOBILE]],[/; (n159v)/i],[MODEL,[VENDOR,"HMD"],[TYPE,MOBILE]],[/((revvl[ \w\+]+|tm(?:rv|af)\w*[45]g(?:tb)?))( b|\))/i],[MODEL,[TYPE,strTest,{test:/ta?b/i,ifTrue:TABLET,ifFalse:MOBILE}],[VENDOR,"T-Mobile"]],[/(imo) (tab \w+)/i,/(infinix|tecno) (x1101b?|p904|dp(7c|8d|10a)( pro)?|p70[1-3]a?|p904|t1101)/i],[VENDOR,MODEL,[TYPE,TABLET]],[/(blackberry|benq|palm(?=\-)|sonyericsson|acer|asus(?! zenw)|dell|jolla|meizu|motorola|polytron|tecno|micromax|advan)[-_ ]?([-\w]*)/i,/; (blu|coolpad|cubot|hmd|imo|infinix|lava|oneplus|tcl|wiko)[_ ]([-\w\+ ]+?)(?: bui|\)|; r)/i,/(hp) ([\w ]+\w)/i,/(microsoft); (lumia[\w ]+)/i,/(oppo) ?([\w ]+) bui/i,/(hisense) ([ehv][\w ]+)\)/i,/droid[^;]+; (philips)[_ ]([sv-x][\d]{3,4}[xz]?)/i],[VENDOR,MODEL,[TYPE,MOBILE]],[/(kobo)\s(ereader|touch)/i,/(hp).+(touchpad(?!.+tablet)|tablet)/i,/(kindle)\/([\w\.]+)/i],[VENDOR,MODEL,[TYPE,TABLET]],[/(surface duo)/i],[MODEL,[VENDOR,MICROSOFT],[TYPE,TABLET]],[/droid [\d\.]+; (fp\du?)(?: b|\))/i],[MODEL,[VENDOR,"Fairphone"],[TYPE,MOBILE]],[/((?:tegranote|shield t(?!.+d tv))[\w- ]*?)(?: b|\))/i],[MODEL,[VENDOR,NVIDIA],[TYPE,TABLET]],[/(sprint) (\w+)/i],[VENDOR,MODEL,[TYPE,MOBILE]],[/(kin\.[onetw]{3})/i],[[MODEL,/\./g," "],[VENDOR,MICROSOFT],[TYPE,MOBILE]],[/droid.+; ([c6]+|et5[16]|mc[239][23]x?|vc8[03]x?)\)/i],[MODEL,[VENDOR,ZEBRA],[TYPE,TABLET]],[/droid.+; (ec30|ps20|tc[2-8]\d[kx])\)/i],[MODEL,[VENDOR,ZEBRA],[TYPE,MOBILE]],[/(philips)[\w ]+tv/i,/smart-tv.+(samsung)/i],[VENDOR,[TYPE,SMARTTV]],[/hbbtv.+maple;(\d+)/i],[[MODEL,/^/,"SmartTV"],[VENDOR,SAMSUNG],[TYPE,SMARTTV]],[/(vizio)(?: |.+model\/)(\w+-\w+)/i,/tcast.+(lg)e?. ([-\w]+)/i],[VENDOR,MODEL,[TYPE,SMARTTV]],[/(nux; netcast.+smarttv|lg (netcast\.tv-201\d|android tv))/i],[[VENDOR,LG],[TYPE,SMARTTV]],[/(apple) ?tv/i],[VENDOR,[MODEL,APPLE+" TV"],[TYPE,SMARTTV]],[/crkey.*devicetype\/chromecast/i],[[MODEL,CHROMECAST+" Third Generation"],[VENDOR,GOOGLE],[TYPE,SMARTTV]],[/crkey.*devicetype\/([^/]*)/i],[[MODEL,/^/,"Chromecast "],[VENDOR,GOOGLE],[TYPE,SMARTTV]],[/fuchsia.*crkey/i],[[MODEL,CHROMECAST+" Nest Hub"],[VENDOR,GOOGLE],[TYPE,SMARTTV]],[/crkey/i],[[MODEL,CHROMECAST],[VENDOR,GOOGLE],[TYPE,SMARTTV]],[/(portaltv)/i],[MODEL,[VENDOR,FACEBOOK],[TYPE,SMARTTV]],[/droid.+aft(\w+)( bui|\))/i],[MODEL,[VENDOR,AMAZON],[TYPE,SMARTTV]],[/(shield \w+ tv)/i],[MODEL,[VENDOR,NVIDIA],[TYPE,SMARTTV]],[/\(dtv[\);].+(aquos)/i,/(aquos-tv[\w ]+)\)/i],[MODEL,[VENDOR,SHARP],[TYPE,SMARTTV]],[/(bravia[\w ]+)( bui|\))/i],[MODEL,[VENDOR,SONY],[TYPE,SMARTTV]],[/(mi(tv|box)-?\w+) bui/i],[MODEL,[VENDOR,XIAOMI],[TYPE,SMARTTV]],[/Hbbtv.*(technisat) (.*);/i],[VENDOR,MODEL,[TYPE,SMARTTV]],[/\b(roku)[\dx]*[\)\/]((?:dvp-)?[\d\.]*)/i,/hbbtv\/\d+\.\d+\.\d+ +\([\w\+ ]*; *([\w\d][^;]*);([^;]*)/i],[[VENDOR,/.+\/(\w+)/,"$1",strMapper,{LG:"lge"}],[MODEL,trim],[TYPE,SMARTTV]],[/(playstation \w+)/i],[MODEL,[VENDOR,SONY],[TYPE,CONSOLE]],[/\b(xbox(?: one)?(?!; xbox))[\); ]/i],[MODEL,[VENDOR,MICROSOFT],[TYPE,CONSOLE]],[/(ouya)/i,/(nintendo) (\w+)/i,/(retroid) (pocket ([^\)]+))/i,/(valve).+(steam deck)/i,/droid.+; ((shield|rgcube|gr0006))( bui|\))/i],[[VENDOR,strMapper,{Nvidia:"Shield",Anbernic:"RGCUBE",Logitech:"GR0006"}],MODEL,[TYPE,CONSOLE]],[/\b(sm-[lr]\d\d[0156][fnuw]?s?|gear live)\b/i],[MODEL,[VENDOR,SAMSUNG],[TYPE,WEARABLE]],[/((pebble))app/i,/(asus|google|lg|oppo|xiaomi) ((pixel |zen)?watch[\w ]*)( bui|\))/i],[VENDOR,MODEL,[TYPE,WEARABLE]],[/(ow(?:19|20)?we?[1-3]{1,3})/i],[MODEL,[VENDOR,OPPO],[TYPE,WEARABLE]],[/(watch)(?: ?os[,\/]|\d,\d\/)[\d\.]+/i],[MODEL,[VENDOR,APPLE],[TYPE,WEARABLE]],[/(opwwe\d{3})/i],[MODEL,[VENDOR,ONEPLUS],[TYPE,WEARABLE]],[/(moto 360)/i],[MODEL,[VENDOR,MOTOROLA],[TYPE,WEARABLE]],[/(smartwatch 3)/i],[MODEL,[VENDOR,SONY],[TYPE,WEARABLE]],[/(g watch r)/i],[MODEL,[VENDOR,LG],[TYPE,WEARABLE]],[/droid.+; (wt63?0{2,3})\)/i],[MODEL,[VENDOR,ZEBRA],[TYPE,WEARABLE]],[/droid.+; (glass) \d/i],[MODEL,[VENDOR,GOOGLE],[TYPE,XR]],[/(pico) ([\w ]+) os\d/i],[VENDOR,MODEL,[TYPE,XR]],[/(quest( \d| pro)?s?).+vr/i],[MODEL,[VENDOR,FACEBOOK],[TYPE,XR]],[/mobile vr; rv.+firefox/i],[[TYPE,XR]],[/(tesla)(?: qtcarbrowser|\/[-\w\.]+)/i],[VENDOR,[TYPE,EMBEDDED]],[/(aeobc)\b/i],[MODEL,[VENDOR,AMAZON],[TYPE,EMBEDDED]],[/(homepod).+mac os/i],[MODEL,[VENDOR,APPLE],[TYPE,EMBEDDED]],[/windows iot/i],[[TYPE,EMBEDDED]],[/droid.+; ([\w- ]+) (4k|android|smart|google)[- ]?tv/i],[MODEL,[TYPE,SMARTTV]],[/\b((4k|android|smart|opera)[- ]?tv|tv; rv:|large screen[\w ]+safari)\b/i],[[TYPE,SMARTTV]],[/droid .+?; ([^;]+?)(?: bui|; wv\)|\) applew|; hmsc).+?(mobile|vr|\d) safari/i],[MODEL,[TYPE,strMapper,{mobile:"Mobile",xr:"VR","*":TABLET}]],[/\b((tablet|tab)[;\/]|focus\/\d(?!.+mobile))/i],[[TYPE,TABLET]],[/(phone|mobile(?:[;\/]| [ \w\/\.]*safari)|pda(?=.+windows ce))/i],[[TYPE,MOBILE]],[/droid .+?; ([\w\. -]+)( bui|\))/i],[MODEL,[VENDOR,"Generic"]]],engine:[[/windows.+ edge\/([\w\.]+)/i],[VERSION,[NAME,EDGE+"HTML"]],[/(arkweb)\/([\w\.]+)/i],[NAME,VERSION],[/webkit\/537\.36.+chrome\/(?!27)([\w\.]+)/i],[VERSION,[NAME,"Blink"]],[/(presto)\/([\w\.]+)/i,/(webkit|trident|netfront|netsurf|amaya|lynx|w3m|goanna|servo)\/([\w\.]+)/i,/ekioh(flow)\/([\w\.]+)/i,/(khtml|tasman|links|dillo)[\/ ]\(?([\w\.]+)/i,/(icab)[\/ ]([23]\.[\d\.]+)/i,/\b(libweb)/i],[NAME,VERSION],[/ladybird\//i],[[NAME,"LibWeb"]],[/rv\:([\w\.]{1,9})\b.+(gecko)/i],[VERSION,NAME]],os:[[/(windows nt) (6\.[23]); arm/i],[[NAME,/N/,"R"],[VERSION,strMapper,windowsVersionMap]],[/(windows (?:phone|mobile|iot))(?: os)?[\/ ]?([\d\.]*( se)?)/i,/(windows)[\/ ](1[01]|2000|3\.1|7|8(\.1)?|9[58]|me|server 20\d\d( r2)?|vista|xp)/i],[NAME,VERSION],[/windows nt ?([\d\.\)]*)(?!.+xbox)/i,/\bwin(?=3| ?9|n)(?:nt| 9x )?([\d\.;]*)/i],[[VERSION,/(;|\))/g,"",strMapper,windowsVersionMap],[NAME,WINDOWS]],[/(windows ce)\/?([\d\.]*)/i],[NAME,VERSION],[/[adehimnop]{4,7}\b(?:.*os ([\w]+) like mac|; opera)/i,/(?:ios;fbsv|ios(?=.+ip(?:ad|hone)|.+apple ?tv)|ip(?:ad|hone)(?: |.+i(?:pad)?)os|apple ?tv.+ios)[\/ ]([\w\.]+)/i,/\btvos ?([\w\.]+)/i,/cfnetwork\/.+darwin/i],[[VERSION,/_/g,"."],[NAME,"iOS"]],[/(mac os x) ?([\w\. ]*)/i,/(macintosh|mac_powerpc\b)(?!.+(haiku|morphos))/i],[[NAME,"macOS"],[VERSION,/_/g,"."]],[/android ([\d\.]+).*crkey/i],[VERSION,[NAME,CHROMECAST+" Android"]],[/fuchsia.*crkey\/([\d\.]+)/i],[VERSION,[NAME,CHROMECAST+" Fuchsia"]],[/crkey\/([\d\.]+).*devicetype\/smartspeaker/i],[VERSION,[NAME,CHROMECAST+" SmartSpeaker"]],[/linux.*crkey\/([\d\.]+)/i],[VERSION,[NAME,CHROMECAST+" Linux"]],[/crkey\/([\d\.]+)/i],[VERSION,[NAME,CHROMECAST]],[/droid ([\w\.]+)\b.+(android[- ]x86)/i],[VERSION,NAME],[/(ubuntu) ([\w\.]+) like android/i],[[NAME,/(.+)/,"$1 Touch"],VERSION],[/(harmonyos)[\/ ]?([\d\.]*)/i,/(android|bada|blackberry|kaios|maemo|meego|openharmony|qnx|rim tablet os|sailfish|series40|symbian|tizen)\w*[-\/\.; ]?([\d\.]*)/i],[NAME,VERSION],[/\(bb(10);/i],[VERSION,[NAME,BLACKBERRY]],[/(?:symbian ?os|symbos|s60(?=;)|series ?60)[-\/ ]?([\w\.]*)/i],[VERSION,[NAME,"Symbian"]],[/mozilla\/[\d\.]+ \((?:mobile[;\w ]*|tablet|tv|[^\)]*(?:viera|lg(?:l25|-d300)|alcatel ?o.+|y300-f1)); rv:([\w\.]+)\).+gecko\//i],[VERSION,[NAME,FIREFOX+" OS"]],[/\b(?:hp)?wos(?:browser)?\/([\w\.]+)/i,/webos(?:[ \/]?|\.tv-20(?=2[2-9]))(\d[\d\.]*)/i],[VERSION,[NAME,"webOS"]],[/web0s;.+?(?:chr[o0]me|safari)\/(\d+)/i],[[VERSION,strMapper,{25:"120",24:"108",23:"94",22:"87",6:"79",5:"68",4:"53",3:"38",2:"538",1:"537","*":"TV"}],[NAME,"webOS"]],[/watch(?: ?os[,\/ ]|\d,\d\/)([\d\.]+)/i],[VERSION,[NAME,"watchOS"]],[/cros [\w]+(?:\)| ([\w\.]+)\b)/i],[VERSION,[NAME,"Chrome OS"]],[/kepler ([\w\.]+); (aft|aeo)/i],[VERSION,[NAME,"Vega OS"]],[/(netrange)mmh/i,/(nettv)\/(\d+\.[\w\.]+)/i,/(nintendo|playstation) (\w+)/i,/(xbox); +xbox ([^\);]+)/i,/(pico) .+os([\w\.]+)/i,/\b(joli|palm)\b ?(?:os)?\/?([\w\.]*)/i,/linux.+(mint)[\/\(\) ]?([\w\.]*)/i,/(mageia|vectorlinux|fuchsia|arcaos|arch(?= ?linux))[;l ]([\d\.]*)/i,/([kxln]?ubuntu|debian|suse|opensuse|gentoo|slackware|fedora|mandriva|centos|pclinuxos|red ?hat|zenwalk|linpus|raspbian|plan 9|minix|risc os|contiki|deepin|manjaro|elementary os|sabayon|linspire|knoppix)(?: gnu[\/ ]linux)?(?: enterprise)?(?:[- ]linux)?(?:-gnu)?[-\/ ]?(?!chrom|package)([-\w\.]*)/i,/((?:open)?solaris)[-\/ ]?([\w\.]*)/i,/\b(aix)[; ]([1-9\.]{0,4})/i,/(hurd|linux|morphos)(?: (?:arm|x86|ppc)\w*| ?)([\w\.]*)/i,/(gnu) ?([\w\.]*)/i,/\b([-frentopcghs]{0,5}bsd|dragonfly)[\/ ]?(?!amd|[ix346]{1,2}86)([\w\.]*)/i,/(haiku) ?(r\d)?/i],[NAME,VERSION],[/(sunos) ?([\d\.]*)/i],[[NAME,"Solaris"],VERSION],[/\b(beos|os\/2|amigaos|openvms|hp-ux|serenityos)/i,/(unix) ?([\w\.]*)/i],[NAME,VERSION]]},defaultProps=(function(){var props={init:{},isIgnore:{},isIgnoreRgx:{},toString:{}};return setProps.call(props.init,[[BROWSER,[NAME,VERSION,MAJOR,TYPE]],[CPU,[ARCHITECTURE]],[DEVICE,[TYPE,MODEL,VENDOR]],[ENGINE,[NAME,VERSION]],[OS,[NAME,VERSION]]]),setProps.call(props.isIgnore,[[BROWSER,[VERSION,MAJOR]],[ENGINE,[VERSION]],[OS,[VERSION]]]),setProps.call(props.isIgnoreRgx,[[BROWSER,/ ?browser$/i],[OS,/ ?os$/i]]),setProps.call(props.toString,[[BROWSER,[NAME,VERSION]],[CPU,[ARCHITECTURE]],[DEVICE,[VENDOR,MODEL]],[ENGINE,[NAME,VERSION]],[OS,[NAME,VERSION]]]),props})(),createIData=function(item,itemType){var init_props=defaultProps.init[itemType],is_ignoreProps=defaultProps.isIgnore[itemType]||0,is_ignoreRgx=defaultProps.isIgnoreRgx[itemType]||0,toString_props=defaultProps.toString[itemType]||0;function IData(){setProps.call(this,init_props)}return IData.prototype.getItem=function(){return item},IData.prototype.withClientHints=function(){return NAVIGATOR_UADATA?NAVIGATOR_UADATA.getHighEntropyValues(CH_ALL_VALUES).then(function(res){return item.setCH(new UACHData(res,!1)).parseCH().get()}):item.parseCH().get()},IData.prototype.withFeatureCheck=function(){return item.detectFeature().get()},itemType!=RESULT&&(IData.prototype.is=function(strToCheck){var is=!1;for(var i in this)if(this.hasOwnProperty(i)&&!has(is_ignoreProps,i)&&lowerize(is_ignoreRgx?strip(is_ignoreRgx,this[i]):this[i])==lowerize(is_ignoreRgx?strip(is_ignoreRgx,strToCheck):strToCheck)){if(is=!0,strToCheck!=TYPEOF.UNDEFINED)break}else if(strToCheck==TYPEOF.UNDEFINED&&is){is=!is;break}return is},IData.prototype.toString=function(){var str=EMPTY;for(var i in toString_props)typeof this[toString_props[i]]!==TYPEOF.UNDEFINED&&(str+=(str?" ":EMPTY)+this[toString_props[i]]);return str||TYPEOF.UNDEFINED}),IData.prototype.then=function(cb){var that=this,IDataResolve=function(){for(var prop in that)that.hasOwnProperty(prop)&&(this[prop]=that[prop])};IDataResolve.prototype={is:IData.prototype.is,toString:IData.prototype.toString,withClientHints:IData.prototype.withClientHints,withFeatureCheck:IData.prototype.withFeatureCheck};var resolveData=new IDataResolve;return cb(resolveData),resolveData},new IData};function UACHData(uach,isHttpUACH){if(uach=uach||{},setProps.call(this,CH_ALL_VALUES),isHttpUACH)setProps.call(this,[[BRANDS,itemListToArray(uach[CH])],[FULLVERLIST,itemListToArray(uach[CH_FULL_VER_LIST])],[MOBILE,/\?1/.test(uach[CH_MOBILE])],[MODEL,normalizeHeaderValue(uach[CH_MODEL])],[PLATFORM,normalizeHeaderValue(uach[CH_PLATFORM])],[PLATFORMVER,normalizeHeaderValue(uach[CH_PLATFORM_VER])],[ARCHITECTURE,normalizeHeaderValue(uach[CH_ARCH])],[FORMFACTORS,itemListToArray(uach[CH_FORM_FACTORS])],[BITNESS,normalizeHeaderValue(uach[CH_BITNESS])]]);else for(var prop in uach)this.hasOwnProperty(prop)&&typeof uach[prop]!==TYPEOF.UNDEFINED&&(this[prop]=uach[prop])}function UAItem(itemType,ua,rgxMap,uaCH){return setProps.call(this,[["itemType",itemType],["ua",ua],["uaCH",uaCH],["rgxMap",rgxMap],["data",createIData(this,itemType)]]),this}UAItem.prototype.get=function(prop){return prop?this.data.hasOwnProperty(prop)?this.data[prop]:undefined2:this.data},UAItem.prototype.set=function(prop,val){return this.data[prop]=val,this},UAItem.prototype.setCH=function(ch){return this.uaCH=ch,this},UAItem.prototype.detectFeature=function(){if(NAVIGATOR&&NAVIGATOR.userAgent==this.ua)switch(this.itemType){case BROWSER:NAVIGATOR.brave&&typeof NAVIGATOR.brave.isBrave==TYPEOF.FUNCTION&&this.set(NAME,"Brave");break;case DEVICE:!this.get(TYPE)&&NAVIGATOR_UADATA&&NAVIGATOR_UADATA[MOBILE]&&this.set(TYPE,MOBILE),this.get(MODEL)=="Macintosh"&&NAVIGATOR&&typeof NAVIGATOR.standalone!==TYPEOF.UNDEFINED&&NAVIGATOR.maxTouchPoints&&NAVIGATOR.maxTouchPoints>2&&this.set(MODEL,"iPad").set(TYPE,TABLET);break;case OS:!this.get(NAME)&&NAVIGATOR_UADATA&&NAVIGATOR_UADATA[PLATFORM]&&this.set(NAME,NAVIGATOR_UADATA[PLATFORM]);break;case RESULT:var data=this.data,detect=function(itemType){return data[itemType].getItem().detectFeature().get()};this.set(BROWSER,detect(BROWSER)).set(CPU,detect(CPU)).set(DEVICE,detect(DEVICE)).set(ENGINE,detect(ENGINE)).set(OS,detect(OS))}return this},UAItem.prototype.parseUA=function(){switch(this.itemType!=RESULT&&rgxMapper.call(this.data,this.ua,this.rgxMap),this.itemType){case BROWSER:this.set(MAJOR,majorize(this.get(VERSION)));break;case OS:if(this.get(NAME)=="iOS"&&this.get(VERSION)&&/^1[89][^\d]/.exec(this.get(VERSION))){var realVersion=/\) Version\/((\d+)[\d\.]*)/.exec(this.ua);realVersion&&parseInt(realVersion[2],10)>=26&&this.set(VERSION,realVersion[1])}break}return this},UAItem.prototype.parseCH=function(){var uaCH=this.uaCH,rgxMap=this.rgxMap;switch(this.itemType){case BROWSER:case ENGINE:var brands=uaCH[FULLVERLIST]||uaCH[BRANDS],prevName;if(brands)for(var i=0;i<brands.length;i++){var brandName=brands[i].brand||brands[i],brandVersion=brands[i].version;this.itemType==BROWSER&&!/not.a.brand/i.test(brandName)&&(!prevName||/Chrom/.test(prevName)&&brandName!=CHROMIUM||prevName==EDGE&&/WebView2/.test(brandName))&&(brandName=strMapper(brandName,browserHintsMap),prevName=this.get(NAME),prevName&&!/Chrom/.test(prevName)&&/Chrom/.test(brandName)||this.set(NAME,brandName).set(VERSION,brandVersion).set(MAJOR,majorize(brandVersion)),prevName=brandName),this.itemType==ENGINE&&brandName==CHROMIUM&&this.set(VERSION,brandVersion)}break;case CPU:var archName=uaCH[ARCHITECTURE];archName&&(archName&&uaCH[BITNESS]=="64"&&(archName+="64"),rgxMapper.call(this.data,archName+";",rgxMap));break;case DEVICE:if(uaCH[MOBILE]&&this.set(TYPE,MOBILE),uaCH[MODEL]&&(this.set(MODEL,uaCH[MODEL]),!this.get(TYPE)||!this.get(VENDOR))){var reParse={};rgxMapper.call(reParse,"droid 9; "+uaCH[MODEL]+")",rgxMap),!this.get(TYPE)&&reParse.type&&this.set(TYPE,reParse.type),!this.get(VENDOR)&&reParse.vendor&&this.set(VENDOR,reParse.vendor)}if(uaCH[FORMFACTORS]){var ff;if(typeof uaCH[FORMFACTORS]!="string")for(var idx=0;!ff&&idx<uaCH[FORMFACTORS].length;)ff=strMapper(uaCH[FORMFACTORS][idx++],formFactorsMap);else ff=strMapper(uaCH[FORMFACTORS],formFactorsMap);this.set(TYPE,ff)}break;case OS:var osName=uaCH[PLATFORM];if(osName){var osVersion=uaCH[PLATFORMVER];osName==WINDOWS&&(osVersion=parseInt(majorize(osVersion),10)>=13?"11":"10"),this.set(NAME,osName).set(VERSION,osVersion)}this.get(NAME)==WINDOWS&&uaCH[MODEL]=="Xbox"&&this.set(NAME,"Xbox").set(VERSION,undefined2);break;case RESULT:var data=this.data,parse=function(itemType){return data[itemType].getItem().setCH(uaCH).parseCH().get()};this.set(BROWSER,parse(BROWSER)).set(CPU,parse(CPU)).set(DEVICE,parse(DEVICE)).set(ENGINE,parse(ENGINE)).set(OS,parse(OS))}return this};function UAParser(ua,extensions,headers){if(typeof ua===TYPEOF.OBJECT?(isExtensions(ua,!0)?(typeof extensions===TYPEOF.OBJECT&&(headers=extensions),extensions=ua):(headers=ua,extensions=undefined2),ua=undefined2):typeof ua===TYPEOF.STRING&&!isExtensions(extensions,!0)&&(headers=extensions,extensions=undefined2),headers)if(typeof headers.append===TYPEOF.FUNCTION){var kv={};headers.forEach(function(v,k){kv[String(k).toLowerCase()]=v}),headers=kv}else{var normalized={};for(var header in headers)headers.hasOwnProperty(header)&&(normalized[String(header).toLowerCase()]=headers[header]);headers=normalized}if(!(this instanceof UAParser))return new UAParser(ua,extensions,headers).getResult();var userAgent=typeof ua===TYPEOF.STRING?ua:headers&&headers[USER_AGENT]?headers[USER_AGENT]:NAVIGATOR&&NAVIGATOR.userAgent?NAVIGATOR.userAgent:EMPTY,httpUACH=new UACHData(headers,!0),regexMap=defaultRegexes,createItemFunc=function(itemType){return itemType==RESULT?function(){return new UAItem(itemType,userAgent,regexMap,httpUACH).set("ua",userAgent).set(BROWSER,this.getBrowser()).set(CPU,this.getCPU()).set(DEVICE,this.getDevice()).set(ENGINE,this.getEngine()).set(OS,this.getOS()).get()}:function(){return new UAItem(itemType,userAgent,regexMap[itemType],httpUACH).parseUA().get()}};return setProps.call(this,[["getBrowser",createItemFunc(BROWSER)],["getCPU",createItemFunc(CPU)],["getDevice",createItemFunc(DEVICE)],["getEngine",createItemFunc(ENGINE)],["getOS",createItemFunc(OS)],["getResult",createItemFunc(RESULT)],["getUA",function(){return userAgent}],["setUA",function(ua2){return isString(ua2)&&(userAgent=trim(ua2,UA_MAX_LENGTH)),this}],["useExtension",function(exts){return exts&&(regexMap=extend(regexMap,exts)),this}]]).setUA(userAgent).useExtension(extensions),this}UAParser.VERSION=LIBVERSION,UAParser.BROWSER=enumerize([NAME,VERSION,MAJOR,TYPE]),UAParser.CPU=enumerize([ARCHITECTURE]),UAParser.DEVICE=enumerize([MODEL,VENDOR,TYPE,CONSOLE,MOBILE,SMARTTV,TABLET,WEARABLE,EMBEDDED]),UAParser.ENGINE=UAParser.OS=enumerize([NAME,VERSION]),typeof exports2!==TYPEOF.UNDEFINED?(typeof module2!==TYPEOF.UNDEFINED&&module2.exports&&(exports2=module2.exports=UAParser),exports2.UAParser=UAParser):typeof define===TYPEOF.FUNCTION&&define.amd?define(function(){return UAParser}):isWindow&&(window2.UAParser=UAParser);var $=isWindow&&(window2.jQuery||window2.Zepto);if($&&!$.ua){var parser=new UAParser;$.ua=parser.getResult(),$.ua.get=function(){return parser.getUA()},$.ua.set=function(ua){parser.setUA(ua);var result=parser.getResult();for(var prop in result)$.ua[prop]=result[prop]}}})(typeof window=="object"?window:exports2)}});var require_archiveService=__commonJS({"src/lib/archiveService.js"(exports2,module2){var{existsSync,lstatSync,realpathSync}=require("fs"),path=require("path"),crypto=require("crypto"),archiveProvider=require_light(),{assertArchiveFile,createArchiveFile,extractArchiveFile,listArchiveFile}=require_archiveTask(),{createArchiveError,isInside}=require_archiveShared(),ArchiveService=class{constructor({rootPath,resolvePath}){this.rootPath=rootPath,this.resolvePath=resolvePath,this.jobs=new Map}resolveExistingFile(inputPath){let fullPath=this.resolvePath(inputPath);return assertArchiveFile(fullPath),fullPath}async listArchive(inputPath){let fullPath=this.resolveExistingFile(inputPath),listing=await listArchiveFile(fullPath);return{path:inputPath,...listing}}startJob(type,payload){let id=crypto.randomUUID(),job={id,type,status:"queued",progress:{processedEntries:0,totalEntries:0},createdAt:new Date().toISOString(),result:null,error:null,cancelled:!1,child:null,archive:null};return this.jobs.set(id,job),setImmediate(async()=>{if(!job.cancelled){job.status="running";try{job.result=type==="create"?await this.createArchive(job,payload):await this.extractArchive(job,payload),job.status=job.cancelled?"cancelled":"completed"}catch(error){job.status=job.cancelled?"cancelled":"failed",job.error=error.message}finally{job.child=null,job.archive=null,job.finishedAt=new Date().toISOString()}}}),job}getJob(id){return this.jobs.get(id)}getCapabilities(){return archiveProvider.capabilities}cancelJob(id){let job=this.getJob(id);if(!job)throw createArchiveError("Archive job not found",404);return["completed","failed","cancelled"].includes(job.status)||(job.cancelled=!0,job.child&&job.child.kill("SIGTERM"),job.archive&&job.archive.abort(),job.status==="queued"&&(job.status="cancelled",job.finishedAt=new Date().toISOString())),job}async createArchive(job,payload){if(!Array.isArray(payload.sources)||payload.sources.length===0)throw createArchiveError("Sources must be a non-empty array");let sourcePaths=payload.sources.map(source=>this.resolvePath(source));sourcePaths.forEach(source=>{if(!existsSync(source))throw createArchiveError("Source path not found",404);if(lstatSync(source).isSymbolicLink())throw createArchiveError("Symbolic links cannot be archived");let realPath=realpathSync(source);if(!isInside(this.rootPath,realPath))throw createArchiveError("Access denied",403)});let destinationPath=this.resolvePath(payload.destinationPath||path.posix.dirname(payload.sources[0]));return createArchiveFile({sourcePaths,destinationPath,name:payload.name,format:payload.format,job})}async extractArchive(job,payload){let sourcePath=this.resolveExistingFile(payload.path),destinationPath=this.resolvePath(payload.destinationPath||"/");return extractArchiveFile({sourcePath,destinationPath,job})}};module2.exports={ArchiveService,isArchivePath:archiveProvider.isArchivePath}}});var require_fileExplorerServer=__commonJS({"src/lib/fileExplorerServer.js"(){var express=require_express2(),{existsSync,readFileSync,statSync,lstatSync,rmSync,mkdirSync,writeFileSync,renameSync,realpathSync,copyFileSync,unlinkSync,constants:fsConstants,promises:fsPromises}=require("fs"),path=require("path"),os=require("os"),crypto=require("crypto"),multer=require_multer(),{UAParser}=require_ua_parser(),colors=require_safe(),portfinder=require_portfinder(),{exec}=require("child_process"),{dateFormat,logger,getServerHost,getServerUrls,hostAllowlistMiddleware,getDirectoryHiddenNames,normalizeRemoteAddress,openPathInFileManager,decodeUploadFileName,validateEntryName}=require_utils4(),{getPackageVersion}=require_packageInfo(),{ArchiveService}=require_archiveService(),{shouldExitImmediatelyOnShutdown}=require_processShutdown(),app=express(),log=logger(process.env.SILENT),argv=JSON.parse(process.env.ARGV),explorerRoot=path.resolve(process.env.EXPLORER_DIRECTORY||process.cwd()),explorerRootRealPath=realpathSync(explorerRoot),explorerRootId=crypto.createHash("sha256").update(explorerRootRealPath).digest("hex"),port=argv.p||argv.port,isEditMode=process.env.EXPLORER_EDIT==="true",explorerPassword=process.env.EXPLORER_AUTH||"",isAuthEnabled=!!explorerPassword,osHiddenEnabled=process.env.OS_HIDDEN_ENABLED==="true"||process.env.OS_HIDDEN_ENABLED==="1",visitorKeys=new Set,httpServer=null,shuttingDown=!1,MAX_UPLOAD_FILE_SIZE=2*1024*1024*1024,MAX_UPLOAD_TOTAL_SIZE=2*1024*1024*1024,MAX_UPLOAD_FILE_COUNT=100,MAX_MULTIPART_OVERHEAD_SIZE=2*1024*1024,upload=multer({dest:path.join(os.tmpdir(),"mock-service-cli-upload"),preservePath:!0,limits:{fileSize:MAX_UPLOAD_FILE_SIZE,files:MAX_UPLOAD_FILE_COUNT,fields:10}}),archiveService=new ArchiveService({rootPath:explorerRootRealPath,resolvePath:resolveExplorerPath,getChildPath});function isPathInsideRoot(fullPath,resolvedRoot=explorerRootRealPath){let relativePath=path.relative(resolvedRoot,fullPath);return relativePath===""||!relativePath.startsWith("..")&&!path.isAbsolute(relativePath)}function normalizeExplorerInputPath(inputPath){let decodedPath=decodeURIComponent(String(inputPath||"/")).replace(/\\/g,"/");return!decodedPath||decodedPath==="."?"/":decodedPath.startsWith("/")?decodedPath:`/${decodedPath}`}function resolveExplorerPath(inputPath){let relativePath=normalizeExplorerInputPath(inputPath).replace(/^\/+/,""),fullPath=path.resolve(explorerRoot,relativePath);if(!isPathInsideRoot(fullPath,explorerRoot)){let error=new Error("Access denied");throw error.statusCode=403,error}if(!existsSync(fullPath))return fullPath;let realPath=realpathSync(fullPath);if(!isPathInsideRoot(realPath)){let error=new Error("Access denied");throw error.statusCode=403,error}return realPath}function getChildPath(parentPath,name){let nameError=validateEntryName(name);if(nameError){let error=new Error(nameError);throw error.statusCode=400,error}let parentFullPath=resolveExplorerPath(parentPath||"/");if(!existsSync(parentFullPath)||!statSync(parentFullPath).isDirectory()){let error=new Error("Parent directory not found");throw error.statusCode=404,error}let childPath=path.resolve(parentFullPath,name.trim());if(!isPathInsideRoot(childPath)){let error=new Error("Access denied");throw error.statusCode=403,error}return childPath}function requireEditMode(req,res,next){if(!isEditMode)return res.status(403).json({error:"File explorer is read-only. Restart with --edit to modify files."});next()}function isValidExplorerPassword(value){if(!isAuthEnabled)return!0;let provided=Buffer.from(String(value||"")),expected=Buffer.from(explorerPassword);return provided.length===expected.length&&crypto.timingSafeEqual(provided,expected)}function getExplorerPassword(req){return req.get("x-file-explorer-password")||req.body&&req.body.password}function requireExplorerAuth(req,res,next){if(!isValidExplorerPassword(getExplorerPassword(req)))return res.status(401).json({error:"Authentication required"});next()}function logExplorerVisit(req){let userAgent=req.get("user-agent")||"",ip=normalizeRemoteAddress(req.socket&&req.socket.remoteAddress),visitorKey=`${ip}
|
|
309
|
+
${userAgent}`;if(visitorKeys.has(visitorKey))return;visitorKeys.add(visitorKey);let parsed=new UAParser(userAgent).getResult(),browser=[parsed.browser.name,parsed.browser.version].filter(Boolean).join(" ")||"Unknown",operatingSystem=[parsed.os.name,parsed.os.version].filter(Boolean).join(" ")||"Unknown";log.info(`File explorer visitor: ip=${ip}, os=${operatingSystem}, browser=${browser}, userAgent=${userAgent}`)}function getUploadTargetPath(parentPath,originalName){let normalizedName=String(originalName||"").replace(/\\/g,"/").replace(/^\/+/,""),parts=normalizedName.split("/").filter(Boolean);if(parts.length===0||normalizedName!==parts.join("/")){let error=new Error("Invalid upload path");throw error.statusCode=400,error}parts.forEach(part=>{let nameError=validateEntryName(part);if(nameError){let error=new Error(nameError);throw error.statusCode=400,error}});let parentFullPath=resolveExplorerPath(parentPath||"/");if(!existsSync(parentFullPath)||!statSync(parentFullPath).isDirectory()){let error=new Error("Parent directory not found");throw error.statusCode=404,error}let targetPath=path.resolve(parentFullPath,...parts);if(!isPathInsideRoot(targetPath)){let error=new Error("Access denied");throw error.statusCode=403,error}return{targetPath,parentFullPath,parts}}function ensureUploadParent(parentFullPath,parts){let current=parentFullPath;parts.slice(0,-1).forEach(part=>{if(current=path.join(current,part),existsSync(current)){let stats=lstatSync(current);if(!stats.isDirectory()||stats.isSymbolicLink()||!isPathInsideRoot(realpathSync(current))){let error=new Error("Upload path is not a safe directory");throw error.statusCode=403,error}}else mkdirSync(current)})}function moveUploadedFile(sourcePath,targetPath){copyFileSync(sourcePath,targetPath,fsConstants.COPYFILE_EXCL),unlinkSync(sourcePath)}function cleanupUploadedTempFiles(files=[]){files.forEach(file=>{file&&file.path&&existsSync(file.path)&&rmSync(file.path,{force:!0})})}function enforceUploadRequestSize(req,res,next){let contentLength=Number(req.get("content-length"));if(Number.isFinite(contentLength)&&contentLength>MAX_UPLOAD_TOTAL_SIZE+MAX_MULTIPART_OVERHEAD_SIZE)return res.status(413).json({error:"Total upload size exceeds 2GB limit"});next()}function deleteExplorerPath(targetPath){let fullPath=resolveExplorerPath(targetPath);if(path.resolve(fullPath)===explorerRootRealPath){let error=new Error("Cannot delete explorer root");throw error.statusCode=400,error}if(!existsSync(fullPath)){let error=new Error("Path not found");throw error.statusCode=404,error}rmSync(fullPath,{recursive:!0,force:!1})}process.env.PORT?init():(portfinder.basePort=port||8090,portfinder.getPort(function(err,foundPort){if(err)throw err;process.env.PORT=foundPort,init()}));function init(){app.use(hostAllowlistMiddleware()),app.use(express.json());let faviconInstanceId=crypto.randomUUID(),explorerFaviconUrl=`/favicon-file-explorer.svg?instance=${faviconInstanceId}`,loginFaviconUrl=`/favicon-file-explorer-login.svg?instance=${faviconInstanceId}`,sendFavicon=(filename,res)=>{res.type("image/svg+xml").set("Cache-Control","no-store").sendFile(path.resolve(__dirname,filename))},sendExplorerPage=(filename,faviconUrl,res)=>{let htmlPath=path.resolve(__dirname,filename);if(!existsSync(htmlPath))return res.status(404).send("File explorer page not found");let bodyClass=isEditMode&&filename==="./file-explorer.html"?' class="editing"':"";res.type("html").send(readFileSync(htmlPath,"utf8").replace("__FILE_EXPLORER_FAVICON_URL__",faviconUrl).replace("<body>",`<body${bodyClass}>`))};app.get("/favicon-file-explorer.svg",(req,res)=>sendFavicon("./favicon-file-explorer.svg",res)),app.get("/favicon-file-explorer-login.svg",(req,res)=>sendFavicon("./favicon-file-explorer-login.svg",res)),app.get("/",(req,res)=>sendExplorerPage("./file-explorer.html",explorerFaviconUrl,res)),app.get("/__login",(req,res)=>sendExplorerPage("./file-explorer-login.html",loginFaviconUrl,res)),app.post("/__api/auth/verify",(req,res)=>{if(!isValidExplorerPassword(getExplorerPassword(req)))return res.status(401).json({error:"Invalid password"});res.json({success:!0,authEnabled:isAuthEnabled})}),app.use("/__api",requireExplorerAuth),app.get("/__api/config",(req,res)=>{logExplorerVisit(req),res.json({editMode:isEditMode,authEnabled:isAuthEnabled,rootId:explorerRootId})}),app.get("/__api/archive/capabilities",requireEditMode,(req,res)=>{res.json(archiveService.getCapabilities())}),app.get("/__api/health",(req,res)=>{res.json({success:!0})}),app.get("/__api/list",async(req,res)=>{let dirPath=normalizeExplorerInputPath(req.query.path||"/"),fullPath;try{fullPath=resolveExplorerPath(dirPath)}catch(error){return res.status(error.statusCode||500).json({error:error.message})}if(!existsSync(fullPath))return res.status(404).json({error:"Path not found"});try{if(!(await fsPromises.lstat(fullPath)).isDirectory())return res.status(400).json({error:"Not a directory"});let files=await fsPromises.readdir(fullPath,{withFileTypes:!0}),hiddenNames=await getDirectoryHiddenNames(fullPath,files.map(file=>file.name),{osHidden:osHiddenEnabled}),result=await Promise.all(files.map(async file=>{let filePath=path.join(fullPath,file.name),fileStats,hasError=!1;try{fileStats=await fsPromises.lstat(filePath)}catch{hasError=!0}let relativePath=path.posix.join(dirPath,file.name),isDirectory=hasError?file.isDirectory():fileStats.isDirectory();return{name:file.name,path:relativePath.replace(/\\/g,"/"),isDirectory,size:hasError?0:fileStats.size,mtime:hasError?new Date:fileStats.mtime,birthtime:hasError?new Date:fileStats.birthtime,isHidden:hiddenNames.has(file.name),error:hasError?"Cannot access file":null}}));result.sort((a,b)=>a.isDirectory!==b.isDirectory?a.isDirectory?-1:1:a.name.localeCompare(b.name)),res.json({currentPath:dirPath,parentPath:dirPath==="/"?null:path.posix.dirname(dirPath),files:result})}catch(error){res.status(500).json({error:error.message})}}),app.get("/__api/file",(req,res)=>{let filePath=normalizeExplorerInputPath(req.query.path||"/"),fullPath;try{fullPath=resolveExplorerPath(filePath)}catch(error){return res.status(error.statusCode||500).json({error:error.message})}if(!existsSync(fullPath))return res.status(404).json({error:"File not found"});let stats=statSync(fullPath);if(stats.isDirectory())return res.status(400).json({error:"Is a directory"});if(req.query.download==="1")return res.download(fullPath,path.basename(filePath));let ext=path.extname(filePath).toLowerCase(),imageExts=[".jpg",".jpeg",".png",".gif",".bmp",".webp",".svg",".ico"],textExts=[".txt",".json",".js",".css",".html",".xml",".md",".csv",".yaml",".yml",".log"];if(imageExts.includes(ext))res.sendFile(fullPath);else if(textExts.includes(ext)||stats.size<1024*1024)try{let content=readFileSync(fullPath,"utf-8");res.json({name:path.basename(filePath),type:"text",content,size:stats.size})}catch{res.download(fullPath)}else res.download(fullPath)}),app.post("/__api/open-in-explorer",async(req,res)=>{let filePath=normalizeExplorerInputPath(req.body.path||"/"),fullPath;try{fullPath=resolveExplorerPath(filePath)}catch(error){return res.status(error.statusCode||500).json({error:error.message})}if(!existsSync(fullPath))return res.status(404).json({error:"Path not found"});let result=await openPathInFileManager(fullPath);if(!result.ok)return result.unsupported?res.status(400).json({error:"Unsupported platform"}):(console.error(colors.red(`Failed to open in explorer: ${result.error.message}`)),res.status(500).json({error:"Failed to open in explorer"}));res.json({success:!0,path:fullPath})}),app.post("/__api/path",requireEditMode,(req,res)=>{let parentPath=req.body&&req.body.parentPath||"/",name=req.body&&req.body.name,type=req.body&&req.body.type||"file";if(type!=="file"&&type!=="directory")return res.status(400).json({error:"Invalid type"});let fullPath;try{fullPath=getChildPath(parentPath,name)}catch(error){return res.status(error.statusCode||500).json({error:error.message})}if(existsSync(fullPath))return res.status(409).json({error:"Path already exists"});try{type==="directory"?mkdirSync(fullPath):writeFileSync(fullPath,""),res.json({success:!0,path:fullPath})}catch(error){console.error(colors.red(`Failed to create path: ${error.message}`)),res.status(500).json({error:"Failed to create path"})}}),app.patch("/__api/path",requireEditMode,(req,res)=>{let sourcePath=req.body&&req.body.path,name=req.body&&req.body.name,fullPath,nextPath;try{if(fullPath=resolveExplorerPath(sourcePath),path.resolve(fullPath)===explorerRootRealPath)return res.status(400).json({error:"Cannot rename explorer root"});if(!existsSync(fullPath))return res.status(404).json({error:"Path not found"});nextPath=getChildPath(path.posix.dirname(normalizeExplorerInputPath(sourcePath||"/")),name)}catch(error){return res.status(error.statusCode||500).json({error:error.message})}if(existsSync(nextPath))return res.status(409).json({error:"Path already exists"});try{renameSync(fullPath,nextPath),res.json({success:!0,path:sourcePath,nextPath})}catch(error){console.error(colors.red(`Failed to rename path: ${error.message}`)),res.status(500).json({error:"Failed to rename path"})}}),app.delete("/__api/path",requireEditMode,(req,res)=>{let targetPath=req.body&&req.body.path||"/";try{deleteExplorerPath(targetPath),res.json({success:!0,path:targetPath})}catch(error){console.error(colors.red(`Failed to delete path: ${error.message}`)),res.status(error.statusCode||500).json({error:error.statusCode?error.message:"Failed to delete path"})}}),app.delete("/__api/paths",requireEditMode,(req,res)=>{let paths=req.body&&req.body.paths||[];if(!Array.isArray(paths)||paths.length===0)return res.status(400).json({error:"Paths must be a non-empty array"});let deleted=[];try{paths.forEach(targetPath=>{deleteExplorerPath(targetPath),deleted.push(targetPath)}),res.json({success:!0,deleted})}catch(error){console.error(colors.red(`Failed to delete paths: ${error.message}`)),res.status(error.statusCode||500).json({error:error.statusCode?error.message:"Failed to delete paths",deleted})}}),app.post("/__api/upload",requireEditMode,enforceUploadRequestSize,upload.any(),(req,res)=>{let parentPath=req.body&&req.body.parentPath||"/",files=req.files||[];if(!files.length)return res.status(400).json({error:"No files uploaded"});if(files.reduce((sum,file)=>sum+file.size,0)>MAX_UPLOAD_TOTAL_SIZE)return cleanupUploadedTempFiles(files),res.status(413).json({error:"Total upload size exceeds 2GB limit"});let uploaded=[],failed=[];files.forEach(file=>{let originalName=decodeUploadFileName(file.originalname);try{let{targetPath,parentFullPath,parts}=getUploadTargetPath(parentPath,originalName);if(existsSync(targetPath)){failed.push({name:originalName,error:"Path already exists",statusCode:409});return}if(ensureUploadParent(parentFullPath,parts),existsSync(targetPath)){failed.push({name:originalName,error:"Path already exists",statusCode:409});return}moveUploadedFile(file.path,targetPath),uploaded.push({name:originalName,path:path.posix.join(normalizeExplorerInputPath(parentPath),...parts)})}catch(error){failed.push({name:originalName,error:error.message,statusCode:error.statusCode||500})}finally{existsSync(file.path)&&rmSync(file.path,{force:!0})}}),res.status(failed.length?207:200).json({success:failed.length===0,uploaded,failed})}),app.get("/__api/archive/preview",requireEditMode,async(req,res)=>{try{let preview=await archiveService.listArchive(normalizeExplorerInputPath(req.query.path||"/"));res.json(preview)}catch(error){res.status(error.statusCode||500).json({error:error.message})}}),app.post("/__api/archive/jobs",requireEditMode,(req,res)=>{let payload=req.body||{},operation=payload.operation;if(operation!=="create"&&operation!=="extract")return res.status(400).json({error:"Archive operation must be create or extract"});try{let job=archiveService.startJob(operation,payload);res.status(202).json({id:job.id,status:job.status,type:job.type})}catch(error){res.status(error.statusCode||500).json({error:error.message})}}),app.get("/__api/archive/jobs/:id",requireEditMode,(req,res)=>{let job=archiveService.getJob(req.params.id);if(!job)return res.status(404).json({error:"Archive job not found"});res.json({id:job.id,type:job.type,status:job.status,progress:job.progress,result:job.result,error:job.error,createdAt:job.createdAt,finishedAt:job.finishedAt||null})}),app.delete("/__api/archive/jobs/:id",requireEditMode,(req,res)=>{try{let job=archiveService.cancelJob(req.params.id);res.json({id:job.id,status:job.status})}catch(error){res.status(error.statusCode||500).json({error:error.message})}}),app.use((error,req,res,next)=>{if(error instanceof multer.MulterError){cleanupUploadedTempFiles(req.files);let statusCode=error.code==="LIMIT_FILE_SIZE"||error.code==="LIMIT_FILE_COUNT"?413:400;return res.status(statusCode).json({error:error.message})}if(error)return console.error(colors.red(`File explorer request failed: ${error.message}`)),res.status(error.statusCode||500).json({error:error.message||"Request failed"});next()}),startServer()}function startServer(){httpServer=require("http").createServer(app),httpServer.requestTimeout=0,httpServer.listen(Number.parseInt(process.env.PORT,10),getServerHost(),()=>{if(console.info([colors.yellow(`
|
|
310
310
|
Starting up file-explorer-server, serving `),colors.cyan(explorerRoot),colors.yellow(` ${dateFormat("YYYY-mm-dd HH:MM:SS",new Date)}`)].join("")),console.info([colors.yellow(`
|
|
311
311
|
\u{1F30D} file-explorer-server version: `),colors.cyan(getPackageVersion()),`
|
|
312
312
|
`].join("")),console.info(colors.yellow(`
|